code-coordinator 0.5.121__tar.gz → 0.5.125__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/PKG-INFO +1 -1
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/SOURCES.txt +2 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/scm_file_list.json +2 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/agent.py +11 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/ci_store.py +27 -4
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/drive_queue.py +35 -12
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/plan_followup.py +48 -17
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/db.py +10 -1
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/drive.py +22 -2
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/drive_queue.py +71 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/drive_state.py +8 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/merge_queue.py +179 -8
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/review.py +133 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/split_work.py +13 -1
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/coord-test-runner.sh +13 -2
- code_coordinator-0.5.125/tests/acceptance/ms-65/board_tabs_2282.rs +852 -0
- code_coordinator-0.5.125/tests/acceptance/ms-65/manifest.yml +137 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_ci_store.py +12 -2
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_drive_queue.py +46 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_fix_headless_review.py +102 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_drive.py +93 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_drive_queue.py +127 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_merge_queue.py +224 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_operational_defaults.py +26 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review.py +220 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/tests/acceptance.rs +1 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/tests/fixtures/board_sample.json +1 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.gitignore +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/CLAUDE.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/GOAL.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/LICENSE +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/MANIFEST.in +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/README.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/__init__.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/audit.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/block_log.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/board_service.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/brain.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/claim.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/cli.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/client.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/comments.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/config.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dao.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deps.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/events.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/filelock.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/freshness.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/gates.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/goal.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/context.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/models.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/render.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/units.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/hooks.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/interactive.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/models.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/network.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notify.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/openapi.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/parentage.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/plans.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/progress.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/release_window.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/reports.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/smoke.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/state.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/test_author.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/test_report.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/usage.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/install-agent.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/pyproject.toml +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/setup.cfg +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/__init__.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/conftest.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_config.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_db.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_events.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_init.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_models.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_network.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_session.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_split.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_state.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/tests/cli.rs +0 -0
|
@@ -784,7 +784,9 @@ tests/acceptance/ms-51/home-active.spec.ts
|
|
|
784
784
|
tests/acceptance/ms-51/manifest.yml
|
|
785
785
|
tests/acceptance/ms-51/tsconfig.json
|
|
786
786
|
tests/acceptance/ms-51/mocks/home-active.html
|
|
787
|
+
tests/acceptance/ms-65/board_tabs_2282.rs
|
|
787
788
|
tests/acceptance/ms-65/contract.md
|
|
789
|
+
tests/acceptance/ms-65/manifest.yml
|
|
788
790
|
tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen
|
|
789
791
|
tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen
|
|
790
792
|
tests/acceptance/ms-65/mocks/board-preview-tab.screen
|
{code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -429,7 +429,9 @@
|
|
|
429
429
|
"tests/acceptance/ms-51/manifest.yml",
|
|
430
430
|
"tests/acceptance/ms-51/mocks/home-active.html",
|
|
431
431
|
"tests/acceptance/ms-51/tsconfig.json",
|
|
432
|
+
"tests/acceptance/ms-65/board_tabs_2282.rs",
|
|
432
433
|
"tests/acceptance/ms-65/contract.md",
|
|
434
|
+
"tests/acceptance/ms-65/manifest.yml",
|
|
433
435
|
"tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen",
|
|
434
436
|
"tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen",
|
|
435
437
|
"tests/acceptance/ms-65/mocks/board-preview-tab.screen",
|
|
@@ -3186,6 +3186,17 @@ not apply to it.
|
|
|
3186
3186
|
- If even the scoped run genuinely cannot finish in time, follow the \
|
|
3187
3187
|
background-and-poll pattern in the ONE-SHOT section above — do not invent \
|
|
3188
3188
|
a chunk-and-loop workaround.
|
|
3189
|
+
- #2192: check your own diff now — does it change user-visible behavior \
|
|
3190
|
+
AND add/modify zero test files? That exact pattern was 18.5% of this \
|
|
3191
|
+
repo's blocking reviews (#2132): the code was correct, but CLAUDE.md's \
|
|
3192
|
+
"Testing — black-box coverage is the acceptance bar" rule was skipped, so \
|
|
3193
|
+
the adversarial reviewer rejected it — costing a paid review leg plus a \
|
|
3194
|
+
fix + re-review round trip to catch something you can see for free right \
|
|
3195
|
+
now, in this same already-running session. If it fires, add the test \
|
|
3196
|
+
before declaring done. If this genuinely is a pure refactor / \
|
|
3197
|
+
internal-only change (CLAUDE.md's existing exemption), say so explicitly \
|
|
3198
|
+
in your final message instead — that already satisfies the reviewer, no \
|
|
3199
|
+
test required.
|
|
3189
3200
|
|
|
3190
3201
|
#252: before exiting, emit a SMOKE_TESTS block telling the human what to \
|
|
3191
3202
|
manually verify. You changed the code; you know what's worth poking.
|
|
@@ -324,7 +324,7 @@ CI_RERUN_POLL_INTERVAL_SECONDS = 10.0
|
|
|
324
324
|
CI_RERUN_MAX_WAIT_SECONDS = 360.0
|
|
325
325
|
|
|
326
326
|
|
|
327
|
-
def
|
|
327
|
+
def is_unreadable_check(check) -> bool:
|
|
328
328
|
"""True for the #1525 synthetic "could not read CI status" / "gh too
|
|
329
329
|
old" stand-ins (``coord.ci_github._unreadable_check`` /
|
|
330
330
|
``_gh_too_old_check``) — the read itself failed, so this says nothing
|
|
@@ -332,10 +332,33 @@ def _is_unreadable_check(check) -> bool:
|
|
|
332
332
|
importing ``coord.ci_github`` — this module must stay backend-agnostic,
|
|
333
333
|
and every stub/fake ``CheckRun``-alike in the test suite already has
|
|
334
334
|
both attributes.
|
|
335
|
+
|
|
336
|
+
Public (#2347) — :mod:`coord.merge_queue` reuses this directly to
|
|
337
|
+
classify a ``checks_failed`` block whose failures are ALL this stand-in
|
|
338
|
+
as a bare check-list *fetch* failure (``CI_UNREADABLE_PREFIX``), distinct
|
|
339
|
+
from both a real "still running" and a real "ran and failed" verdict; see
|
|
340
|
+
that module's docstring for the classification this feeds.
|
|
341
|
+
|
|
342
|
+
Deliberately narrower than "any ``coord: ``-named synthetic check with
|
|
343
|
+
``conclusion == "unknown"``": :class:`coord.gate_snapshot.GateSnapshot`
|
|
344
|
+
(the board *read* path's ``CiStore`` — :mod:`coord.merge_queue`'s
|
|
345
|
+
``_entry_gate_status`` can be, and in production is, called with one —
|
|
346
|
+
see ``coord.serve_app``'s ``/board`` handler) emits its OWN such
|
|
347
|
+
stand-in, ``_stale_check`` (``"coord: gate snapshot stale (...)"``), for
|
|
348
|
+
a completely different local condition — the daemon's own refresh loop
|
|
349
|
+
fell behind, not a GitHub read failure — and #2347's classification must
|
|
350
|
+
not relabel that as "GitHub unreachable". Both `coord.ci_github` stand-ins
|
|
351
|
+
share the phrase "read CI status" in their name; `_stale_check` does not,
|
|
352
|
+
so requiring it is what keeps the two apart without this module having
|
|
353
|
+
to import `coord.gate_snapshot` (which itself imports `coord.ci_store` —
|
|
354
|
+
the reverse import would cycle) or duck-type on anything less stable
|
|
355
|
+
than the prose these three call sites already commit to.
|
|
335
356
|
"""
|
|
357
|
+
name = str(getattr(check, "name", ""))
|
|
336
358
|
return (
|
|
337
359
|
getattr(check, "conclusion", None) == "unknown"
|
|
338
|
-
and
|
|
360
|
+
and name.startswith("coord: ")
|
|
361
|
+
and "read CI status" in name
|
|
339
362
|
)
|
|
340
363
|
|
|
341
364
|
|
|
@@ -381,7 +404,7 @@ def wait_for_ci_settle(
|
|
|
381
404
|
|
|
382
405
|
A "registering" read — no checks at all yet, or every check present is
|
|
383
406
|
one of the #1525 synthetic unreadable stand-ins (see
|
|
384
|
-
:func:`
|
|
407
|
+
:func:`is_unreadable_check`) — never counts as settled, however many
|
|
385
408
|
times it's observed; only real, resolved checks do. Genuinely in-flight
|
|
386
409
|
real checks (a run that registered and is now actually executing) also
|
|
387
410
|
keep polling — that's the ordinary "wait for CI to finish" case this
|
|
@@ -409,7 +432,7 @@ def wait_for_ci_settle(
|
|
|
409
432
|
except Exception: # noqa: BLE001 — best-effort cache-bust only
|
|
410
433
|
pass
|
|
411
434
|
checks = ci_store.list_checks_for_pr(repo, number)
|
|
412
|
-
registering = not checks or all(
|
|
435
|
+
registering = not checks or all(is_unreadable_check(c) for c in checks)
|
|
413
436
|
if not registering and not in_flight_checks(checks):
|
|
414
437
|
return CiSettleResult(
|
|
415
438
|
settled=True, checks=checks, waited_seconds=clock() - start,
|
|
@@ -1837,11 +1837,21 @@ def _fetch_gate_a_pending(entries: list) -> dict[str, bool]:
|
|
|
1837
1837
|
|
|
1838
1838
|
def _fetch_live_ci_gate(
|
|
1839
1839
|
entries: list, config_path: Path | None
|
|
1840
|
-
) -> dict[str, bool]:
|
|
1841
|
-
"""``{entry_key: still_blocked}`` for every
|
|
1842
|
-
park reason is CI-shaped
|
|
1843
|
-
re-derivation of the SAME
|
|
1844
|
-
live, right now, this tick
|
|
1840
|
+
) -> tuple[dict[str, bool], dict[str, str]]:
|
|
1841
|
+
"""``({entry_key: still_blocked}, {entry_key: reason})`` for every
|
|
1842
|
+
``parked`` entry whose OWN park reason is CI-shaped
|
|
1843
|
+
(#1891/#1892/#2347) — a FRESH, single-entry re-derivation of the SAME
|
|
1844
|
+
gate ``coord merge --plan`` computes, taken live, right now, this tick
|
|
1845
|
+
(#2182).
|
|
1846
|
+
|
|
1847
|
+
The second dict (#2347) carries the reason text
|
|
1848
|
+
:func:`coord.merge_queue.entry_gate_status` returned alongside each
|
|
1849
|
+
still-blocked verdict — used ONLY to let :func:`coord.drive_queue.
|
|
1850
|
+
plan_tick` rewrite a still-``parked`` entry's ``last_reason`` when the
|
|
1851
|
+
fresh reading is specifically "GitHub unreachable"
|
|
1852
|
+
(``is_ci_unreadable_reason``) and differs from what is currently stored;
|
|
1853
|
+
see that function's ``live_ci_gate_reason`` parameter. Never consulted
|
|
1854
|
+
to decide whether to resume — that remains the first dict's job alone.
|
|
1845
1855
|
|
|
1846
1856
|
THE GAP THIS CLOSES. On the daemon host — the only machine that ever
|
|
1847
1857
|
runs this tick (``docs/AGENT_OPERATIONS.md``) — ``_fetch_board_view``
|
|
@@ -1887,7 +1897,11 @@ def _fetch_live_ci_gate(
|
|
|
1887
1897
|
have nothing to add — worse, ``coord.state.load_board()`` guards against
|
|
1888
1898
|
being called from a thin client at all (#615).
|
|
1889
1899
|
"""
|
|
1890
|
-
from coord.merge_queue import
|
|
1900
|
+
from coord.merge_queue import ( # noqa: PLC0415
|
|
1901
|
+
is_ci_infra_reason,
|
|
1902
|
+
is_ci_pending_reason,
|
|
1903
|
+
is_ci_unreadable_reason,
|
|
1904
|
+
)
|
|
1891
1905
|
|
|
1892
1906
|
targets = [
|
|
1893
1907
|
e for e in entries
|
|
@@ -1895,15 +1909,16 @@ def _fetch_live_ci_gate(
|
|
|
1895
1909
|
and (
|
|
1896
1910
|
is_ci_pending_reason(getattr(e, "last_reason", "") or "")
|
|
1897
1911
|
or is_ci_infra_reason(getattr(e, "last_reason", "") or "")
|
|
1912
|
+
or is_ci_unreadable_reason(getattr(e, "last_reason", "") or "")
|
|
1898
1913
|
)
|
|
1899
1914
|
]
|
|
1900
1915
|
if not targets:
|
|
1901
|
-
return {}
|
|
1916
|
+
return {}, {}
|
|
1902
1917
|
|
|
1903
1918
|
from coord.board_service import resolve as resolve_board_service # noqa: PLC0415
|
|
1904
1919
|
|
|
1905
1920
|
if resolve_board_service() is not None:
|
|
1906
|
-
return {}
|
|
1921
|
+
return {}, {}
|
|
1907
1922
|
|
|
1908
1923
|
try:
|
|
1909
1924
|
from coord import github_ops as _gh_ops # noqa: PLC0415
|
|
@@ -1919,19 +1934,22 @@ def _fetch_live_ci_gate(
|
|
|
1919
1934
|
entry_key(q.repo_name, q.issue_number): q for q in _mq.load_queue()
|
|
1920
1935
|
}
|
|
1921
1936
|
except Exception: # noqa: BLE001 — see the fail-soft note above
|
|
1922
|
-
return {}
|
|
1937
|
+
return {}, {}
|
|
1923
1938
|
|
|
1924
1939
|
overrides: dict[str, bool] = {}
|
|
1940
|
+
reasons: dict[str, str] = {}
|
|
1925
1941
|
for e in targets:
|
|
1926
1942
|
q = queue_by_key.get(e.key)
|
|
1927
1943
|
if q is None or not q.pr_number:
|
|
1928
1944
|
continue
|
|
1929
1945
|
try:
|
|
1930
|
-
status,
|
|
1946
|
+
status, reason = _mq.entry_gate_status(q, board, cfg, ci_store, _gh_ops)
|
|
1931
1947
|
except Exception: # noqa: BLE001 — leave this one entry to the ceiling
|
|
1932
1948
|
continue
|
|
1933
1949
|
overrides[e.key] = status != _mq.PLAN_READY
|
|
1934
|
-
|
|
1950
|
+
if reason:
|
|
1951
|
+
reasons[e.key] = reason
|
|
1952
|
+
return overrides, reasons
|
|
1935
1953
|
|
|
1936
1954
|
|
|
1937
1955
|
def _fetch_live_blocked_gate(
|
|
@@ -2337,7 +2355,11 @@ def drive_queue_tick(
|
|
|
2337
2355
|
# on the daemon-host tick could previously be released only by the
|
|
2338
2356
|
# #2158 45-minute ceiling, never by CI actually reporting, because
|
|
2339
2357
|
# this tick's board read never computes a live `merge_plan`).
|
|
2340
|
-
|
|
2358
|
+
# #2347: the reason half — lets a still-parked entry's `last_reason`
|
|
2359
|
+
# be rewritten when the real cause is "GitHub unreachable" rather
|
|
2360
|
+
# than whatever it originally parked on; see `plan_tick`'s
|
|
2361
|
+
# `live_ci_gate_reason` parameter.
|
|
2362
|
+
live_ci_gate, live_ci_gate_reason = _fetch_live_ci_gate(entries, config_path)
|
|
2341
2363
|
|
|
2342
2364
|
# #2230: the same live re-derivation, for RE-EVALUABLE `blocked`
|
|
2343
2365
|
# entries — see `_fetch_live_blocked_gate`'s docstring for the gap
|
|
@@ -2384,6 +2406,7 @@ def drive_queue_tick(
|
|
|
2384
2406
|
gate_a_pending=gate_a_pending,
|
|
2385
2407
|
cordons=cordons,
|
|
2386
2408
|
live_ci_gate=live_ci_gate,
|
|
2409
|
+
live_ci_gate_reason=live_ci_gate_reason,
|
|
2387
2410
|
live_blocked_gate=live_blocked_gate,
|
|
2388
2411
|
editable_drift=editable_drift,
|
|
2389
2412
|
)
|
|
@@ -787,8 +787,9 @@ def _fix_from_review(
|
|
|
787
787
|
@click.command(
|
|
788
788
|
help=(
|
|
789
789
|
"Dispatch a headless same-branch fix worker.\n\n"
|
|
790
|
-
"ASSIGNMENT_ID is either a WORK assignment whose test gate FAILED
|
|
791
|
-
"whose PR has red CI
|
|
790
|
+
"ASSIGNMENT_ID is either a WORK assignment whose test gate FAILED "
|
|
791
|
+
"(or whose PR has red CI, or whose oracle-loop acceptance trust "
|
|
792
|
+
"gate FAILED — #2344), or a REVIEW assignment whose verdict was "
|
|
792
793
|
"request-changes. Either way the fix lands on the ORIGINAL branch and "
|
|
793
794
|
"updates the ORIGINAL PR — no new issue-N-* branch, no orphan PR."
|
|
794
795
|
)
|
|
@@ -802,12 +803,12 @@ def _fix_from_review(
|
|
|
802
803
|
help=(
|
|
803
804
|
"Override the #555 interactive-work exclusion when fixing a review of "
|
|
804
805
|
"work that ran under claude-pty, or (#2051) dispatch a WORK-row fix "
|
|
805
|
-
"when neither the test verdict
|
|
806
|
-
"for when the caller knows the PR is red
|
|
807
|
-
"(ci_store not configured, a transient read
|
|
808
|
-
"refusal names which of those it was, so
|
|
809
|
-
"before reaching for this. Does NOT override
|
|
810
|
-
"or the #522 terminal-work guard."
|
|
806
|
+
"when neither the test verdict, a live CI read, nor the acceptance "
|
|
807
|
+
"trust gate shows a failure — for when the caller knows the PR is red "
|
|
808
|
+
"but the check missed it (ci_store not configured, a transient read "
|
|
809
|
+
"error). Since #2091 the refusal names which of those it was, so "
|
|
810
|
+
"check the `note:` line before reaching for this. Does NOT override "
|
|
811
|
+
"max_review_iterations or the #522 terminal-work guard."
|
|
811
812
|
),
|
|
812
813
|
)
|
|
813
814
|
def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> None:
|
|
@@ -837,10 +838,27 @@ def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> No
|
|
|
837
838
|
# `smoke_test=NULL` and must still be fixable.
|
|
838
839
|
test_failed = assignment.test_state == "failed" or assignment.smoke_test == "fail"
|
|
839
840
|
|
|
841
|
+
# #2344: the oracle-loop TRUST GATE (docs/ORACLE_LOOP.md, #2199) is a
|
|
842
|
+
# fourth door onto this command. `_decide_acceptance_gate`
|
|
843
|
+
# (coord/drive.py) dispatches `coord fix <work_aid>` the instant the
|
|
844
|
+
# gate's coordinator-run re-run of the sealed suite comes back red — the
|
|
845
|
+
# same shape as `_decide_test` dispatching on a failed Test verdict.
|
|
846
|
+
# Before this, nothing here recognized that door: a milestone whose
|
|
847
|
+
# trust gate failed in isolation (Test not yet run, or already passed;
|
|
848
|
+
# CI green) hit the #2051 "expected a failed test verdict" refusal on
|
|
849
|
+
# every attempt — structurally unwinnable, not a transient miss — until
|
|
850
|
+
# the drive-queue entry parked after burning its retry budget (ms-65 /
|
|
851
|
+
# #2282, observed live 2026-08-17).
|
|
852
|
+
acceptance_failed = assignment.acceptance_state == "failed"
|
|
853
|
+
|
|
840
854
|
# #1622 (part 3): red CI is the third trigger. Only consulted when the
|
|
841
855
|
# local test gate has NOT already failed, so the cheap in-DB path stays
|
|
842
|
-
# zero-I/O and the existing failure story keeps priority.
|
|
843
|
-
|
|
856
|
+
# zero-I/O and the existing failure story keeps priority. #2344: same
|
|
857
|
+
# treatment for a failed trust gate — it is definitive evidence on its
|
|
858
|
+
# own, so skip the live CI read entirely rather than let a green CI read
|
|
859
|
+
# (which says nothing about the trust gate's sealed-suite re-run) shadow
|
|
860
|
+
# it below.
|
|
861
|
+
ci_read = CiRead() if (test_failed or acceptance_failed) else _read_ci(cfg, assignment)
|
|
844
862
|
ci_story = ci_read.story
|
|
845
863
|
|
|
846
864
|
# #2091: the stored Test verdict says PASSED while the branch's live CI
|
|
@@ -876,8 +894,9 @@ def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> No
|
|
|
876
894
|
err=True,
|
|
877
895
|
)
|
|
878
896
|
|
|
879
|
-
# #2051: none of the
|
|
880
|
-
#
|
|
897
|
+
# #2051 (extended by #2344): none of the four doors (failed test
|
|
898
|
+
# verdict, red CI, a failed acceptance trust gate, or the review-id door
|
|
899
|
+
# handled above) is open. `_read_ci` is read-only and
|
|
881
900
|
# fail-quiet (see :class:`CiRead`) — a missing story means "no CI
|
|
882
901
|
# evidence of a failure", never "CI is green" — so a caller who KNOWS
|
|
883
902
|
# the PR is red (ci_store not configured for this repo, a transient
|
|
@@ -886,15 +905,16 @@ def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> No
|
|
|
886
905
|
# that caller's release valve; it is NOT a way to skip the #555 / #522 /
|
|
887
906
|
# max_review_iterations guards, which sit elsewhere.
|
|
888
907
|
forced_without_evidence = False
|
|
889
|
-
if not test_failed and ci_story is None:
|
|
908
|
+
if not test_failed and not acceptance_failed and ci_story is None:
|
|
890
909
|
if not force:
|
|
891
910
|
click.echo(
|
|
892
911
|
f"error: assignment {assignment_id} test_state is "
|
|
893
912
|
f"{assignment.test_state!r} / smoke_test is "
|
|
894
|
-
f"{assignment.smoke_test!r}
|
|
895
|
-
"
|
|
896
|
-
"
|
|
897
|
-
"
|
|
913
|
+
f"{assignment.smoke_test!r} / acceptance_state is "
|
|
914
|
+
f"{assignment.acceptance_state!r}, expected a failed test "
|
|
915
|
+
"verdict (or red CI on its PR, a failed acceptance trust "
|
|
916
|
+
"gate, or a request-changes review id). If the PR is "
|
|
917
|
+
"actually red and this check missed it, re-run with --force.",
|
|
898
918
|
err=True,
|
|
899
919
|
)
|
|
900
920
|
# #2091: say WHY there is no CI evidence. Before this, six
|
|
@@ -940,6 +960,14 @@ def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> No
|
|
|
940
960
|
test_output_file = COORD_DIR / "test_output" / f"{assignment_id}.txt"
|
|
941
961
|
if ci_story is not None:
|
|
942
962
|
test_output = ci_story
|
|
963
|
+
elif acceptance_failed and not test_failed:
|
|
964
|
+
# #2344: the trust gate's own recorded reason is the evidence for
|
|
965
|
+
# this door — `coord acceptance record` writes it to
|
|
966
|
+
# `acceptance_reason` at the same time it flips `acceptance_state`
|
|
967
|
+
# to "failed" (coord/state.py). Neither the CI-story nor the
|
|
968
|
+
# smoke/test-reason fallbacks below apply here: this door fires
|
|
969
|
+
# precisely when Test/CI are NOT what's red.
|
|
970
|
+
test_output = assignment.acceptance_reason or ""
|
|
943
971
|
elif test_output_file.exists():
|
|
944
972
|
test_output = test_output_file.read_text()
|
|
945
973
|
elif assignment.smoke_test_reason or assignment.test_reason:
|
|
@@ -965,6 +993,9 @@ def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> No
|
|
|
965
993
|
"red)"
|
|
966
994
|
)
|
|
967
995
|
_failure_heading = "Reported failure (--force, unverified)"
|
|
996
|
+
elif acceptance_failed and not test_failed and ci_story is None:
|
|
997
|
+
_what = "a failed oracle-loop acceptance trust gate (#2199)"
|
|
998
|
+
_failure_heading = "Acceptance trust-gate failure"
|
|
968
999
|
else:
|
|
969
1000
|
_what = "red CI" if ci_story is not None else "a failed smoke test"
|
|
970
1001
|
_failure_heading = "CI failure" if ci_story is not None else "Test failure"
|
|
@@ -191,7 +191,8 @@ def _ensure_schema(conn: sqlite3.Connection) -> None:
|
|
|
191
191
|
ci_infra_reruns INTEGER NOT NULL DEFAULT 0,
|
|
192
192
|
ci_stale_reruns INTEGER NOT NULL DEFAULT 0,
|
|
193
193
|
ci_flaky_reruns INTEGER NOT NULL DEFAULT 0,
|
|
194
|
-
ci_flaky_pending TEXT NOT NULL DEFAULT ''
|
|
194
|
+
ci_flaky_pending TEXT NOT NULL DEFAULT '',
|
|
195
|
+
ci_unreadable_reruns INTEGER NOT NULL DEFAULT 0
|
|
195
196
|
);
|
|
196
197
|
|
|
197
198
|
CREATE TABLE IF NOT EXISTS plans (
|
|
@@ -909,6 +910,14 @@ def _migrate_add_columns(conn: sqlite3.Connection) -> None:
|
|
|
909
910
|
# row predating this migration and for a non-stream-json / PTY
|
|
910
911
|
# worker whose log carries no such field.
|
|
911
912
|
"ALTER TABLE assignments ADD COLUMN stop_reason TEXT",
|
|
913
|
+
# #2347: count of automatic checks `merge_queue.process()` has made
|
|
914
|
+
# against this entry's CURRENT streak of bare check-list FETCH
|
|
915
|
+
# failures (GitHub unreachable, not a real CI verdict) — see
|
|
916
|
+
# `coord.merge_queue.MAX_CI_UNREADABLE_RERUNS` and
|
|
917
|
+
# `QueuedMerge.ci_unreadable_reruns`'s docstring. 0 for every row
|
|
918
|
+
# predating this column, same as the column's own default for a
|
|
919
|
+
# freshly-enqueued entry.
|
|
920
|
+
"ALTER TABLE merge_queue ADD COLUMN ci_unreadable_reruns INTEGER NOT NULL DEFAULT 0",
|
|
912
921
|
]
|
|
913
922
|
for sql in migrations:
|
|
914
923
|
try:
|
|
@@ -133,6 +133,7 @@ from coord.merge_queue import (
|
|
|
133
133
|
is_ci_flaky_reason,
|
|
134
134
|
is_ci_infra_reason,
|
|
135
135
|
is_ci_pending_reason,
|
|
136
|
+
is_ci_unreadable_reason,
|
|
136
137
|
is_stale_smoke_reason as _mq_is_stale_smoke_reason,
|
|
137
138
|
)
|
|
138
139
|
|
|
@@ -2539,8 +2540,8 @@ def _effective_merge_gate_reason(
|
|
|
2539
2540
|
own resolution path (#1474/#241's conflict-fix dispatch, reached
|
|
2540
2541
|
through the bounded retry below). A re-test does not rebase a branch,
|
|
2541
2542
|
and diverting to one is the same stall this issue is about, inverted.
|
|
2542
|
-
- a CI reason (#1891/#1892/#2252) — `merge_reason` already carries
|
|
2543
|
-
live, recognised signal whose only resolution is more real time.
|
|
2543
|
+
- a CI reason (#1891/#1892/#2252/#2347) — `merge_reason` already carries
|
|
2544
|
+
a live, recognised signal whose only resolution is more real time.
|
|
2544
2545
|
These bare waits sit right after the divergence check and must keep
|
|
2545
2546
|
winning.
|
|
2546
2547
|
|
|
@@ -2559,6 +2560,7 @@ def _effective_merge_gate_reason(
|
|
|
2559
2560
|
is_ci_pending_reason(state.merge_reason)
|
|
2560
2561
|
or is_ci_infra_reason(state.merge_reason)
|
|
2561
2562
|
or is_ci_flaky_reason(state.merge_reason)
|
|
2563
|
+
or is_ci_unreadable_reason(state.merge_reason)
|
|
2562
2564
|
):
|
|
2563
2565
|
return state.merge_reason, False
|
|
2564
2566
|
fallback = _extract_gate_refusal_reason(counters.last_merge_diagnostic)
|
|
@@ -2864,6 +2866,24 @@ def _decide_merge(
|
|
|
2864
2866
|
)
|
|
2865
2867
|
)
|
|
2866
2868
|
|
|
2869
|
+
# #2347: the sibling case checked right after #1891 — the check-list
|
|
2870
|
+
# FETCH itself failed (GitHub unreachable: a transient `gh pr checks`
|
|
2871
|
+
# HTTP 5xx, an auth blip), so there is no CI verdict of ANY shape yet,
|
|
2872
|
+
# not even a real "still running" one. `coord merge`'s own live attempt
|
|
2873
|
+
# already tracks a bounded count of consecutive fetch failures for this
|
|
2874
|
+
# (`coord.merge_queue.MAX_CI_UNREADABLE_RERUNS`) and keeps waiting
|
|
2875
|
+
# either way — there is no CI to rerun and no gate to re-test, only more
|
|
2876
|
+
# real time (GitHub answering again). Retrying `coord merge` here would
|
|
2877
|
+
# just re-observe the identical transport failure and spend an attempt
|
|
2878
|
+
# for nothing.
|
|
2879
|
+
if is_ci_unreadable_reason(state.merge_reason):
|
|
2880
|
+
return _wait(
|
|
2881
|
+
label=(
|
|
2882
|
+
"MERGE: GitHub could not be reached to read CI status — "
|
|
2883
|
+
f"waiting, not retrying (#2347): {state.merge_reason}"
|
|
2884
|
+
)
|
|
2885
|
+
)
|
|
2886
|
+
|
|
2867
2887
|
# #1892: the sibling case — a CI verdict DID arrive, but every failing
|
|
2868
2888
|
# check said nothing about the code (never assigned a runner, or died
|
|
2869
2889
|
# before checkout). `coord merge`'s own live attempt is already
|
|
@@ -96,6 +96,7 @@ from coord.merge_queue import (
|
|
|
96
96
|
is_ci_flaky_reason,
|
|
97
97
|
is_ci_infra_reason,
|
|
98
98
|
is_ci_pending_reason,
|
|
99
|
+
is_ci_unreadable_reason,
|
|
99
100
|
)
|
|
100
101
|
from coord.models import is_policy_refusal_reason
|
|
101
102
|
|
|
@@ -154,6 +155,15 @@ STATE_FAILED = "failed"
|
|
|
154
155
|
# today) on the very next tick. Same reasoning as #1892 for why this parks
|
|
155
156
|
# rather than spends: relaunching right now would just observe the same
|
|
156
157
|
# re-run-in-progress and wait again.
|
|
158
|
+
#
|
|
159
|
+
# #2347 extends the SAME state to a FOURTH trigger:
|
|
160
|
+
# `coord.merge_queue.is_ci_unreadable_reason` — the check-list FETCH itself
|
|
161
|
+
# failed (GitHub unreachable: a transient `gh pr checks` HTTP 5xx, an auth
|
|
162
|
+
# blip), not a CI verdict of any shape. The "more real time" that un-parks
|
|
163
|
+
# the entry is simply GitHub answering again on a later read — there is no
|
|
164
|
+
# in-flight rerun to wait on, unlike #1892/#2252, only another attempt to
|
|
165
|
+
# read. Same queue-level treatment as the other three: relaunching right now
|
|
166
|
+
# would just observe the identical transport failure and wait again.
|
|
157
167
|
STATE_PARKED = "parked"
|
|
158
168
|
|
|
159
169
|
TERMINAL_QUEUE_STATES: frozenset[str] = frozenset(
|
|
@@ -959,10 +969,18 @@ def build_board_view(
|
|
|
959
969
|
elif is_ci_flaky_reason(raw_reason) and not is_ci_flaky_reason(plan_reason):
|
|
960
970
|
reason = raw_reason
|
|
961
971
|
reason_is_live = False
|
|
972
|
+
# #2347: NO raw-row recovery needed here, unlike #1892/#2252 above —
|
|
973
|
+
# `coord.merge_queue._ci_unreadable_reason` needs no extra `CiStore`
|
|
974
|
+
# call (see that function's docstring), so `_entry_gate_status`
|
|
975
|
+
# computes the CI_UNREADABLE_PREFIX classification directly at
|
|
976
|
+
# board-build time. `plan_reason` already carries it whenever it
|
|
977
|
+
# applies; the live plan reading and a live `coord merge` attempt's
|
|
978
|
+
# raw reading can never disagree about this one.
|
|
962
979
|
if not (
|
|
963
980
|
is_ci_pending_reason(reason)
|
|
964
981
|
or is_ci_infra_reason(reason)
|
|
965
982
|
or is_ci_flaky_reason(reason)
|
|
983
|
+
or is_ci_unreadable_reason(reason)
|
|
966
984
|
):
|
|
967
985
|
continue
|
|
968
986
|
# #2158: the same plan row that came back with NO reason of its own
|
|
@@ -1059,6 +1077,13 @@ class Reconcile:
|
|
|
1059
1077
|
every tick by the pre-pass in :func:`plan_tick`, which flips it back
|
|
1060
1078
|
to ``waiting`` — no human, no escalation — the moment the board shows
|
|
1061
1079
|
the gate has cleared.
|
|
1080
|
+
* ``reparked`` — #2347: an ALREADY-``parked`` entry, still CONFIRMED
|
|
1081
|
+
blocked by this tick's own fresh re-check — but that fresh check found
|
|
1082
|
+
the real cause has become "GitHub could not be reached", distinct from
|
|
1083
|
+
whatever reason the entry originally parked on. State does not change
|
|
1084
|
+
(stays :data:`STATE_PARKED`), no attempt spent — only ``last_reason``
|
|
1085
|
+
is rewritten, so an operator reading ``coord drive-queue list``/
|
|
1086
|
+
``status`` sees the true cause instead of a frozen, misleading one.
|
|
1062
1087
|
* ``retry`` — genuinely dead: no session, no active work, and past the
|
|
1063
1088
|
startup grace window. Costs one attempt.
|
|
1064
1089
|
* ``exhausted`` — as ``retry``, but out of attempts; pairs with a
|
|
@@ -2528,6 +2553,7 @@ def plan_tick(
|
|
|
2528
2553
|
gate_a_pending: Mapping[str, bool] | None = None,
|
|
2529
2554
|
cordons: Mapping[str, str] | None = None,
|
|
2530
2555
|
live_ci_gate: Mapping[str, bool] | None = None,
|
|
2556
|
+
live_ci_gate_reason: Mapping[str, str] | None = None,
|
|
2531
2557
|
live_blocked_gate: Mapping[str, bool] | None = None,
|
|
2532
2558
|
editable_drift: tuple[str, str] | None = None,
|
|
2533
2559
|
) -> TickPlan:
|
|
@@ -2635,6 +2661,21 @@ def plan_tick(
|
|
|
2635
2661
|
side, which computes this ONLY for the bounded set of entries currently
|
|
2636
2662
|
`parked` on a CI reason, never the whole queue.
|
|
2637
2663
|
|
|
2664
|
+
*live_ci_gate_reason* (#2347) is *live_ci_gate*'s companion: the reason
|
|
2665
|
+
text the SAME fresh `entry_gate_status` call returned, for entries whose
|
|
2666
|
+
reading is STILL blocked. Never used to decide whether to resume (that
|
|
2667
|
+
remains `live_ci_gate`'s job) — only to rewrite a still-parked entry's
|
|
2668
|
+
`last_reason` when the fresh reading is `CI_UNREADABLE_PREFIX`-shaped and
|
|
2669
|
+
differs from what is currently stored, so `coord drive-queue list`/
|
|
2670
|
+
`status` shows "GitHub could not be reached" the moment that becomes the
|
|
2671
|
+
real cause, instead of silently keeping whatever reason the entry
|
|
2672
|
+
happened to park on originally (which #1891/#1892/#2252's "still shut ⇒
|
|
2673
|
+
no reconcile, no write" rule would otherwise leave frozen indefinitely —
|
|
2674
|
+
see the issue for the observed incident: a stale "CI running: ..."
|
|
2675
|
+
reason surviving a run of transient GitHub API 503s for most of
|
|
2676
|
+
`PARK_STALE_SECONDS` with no operator-visible signal of the real cause).
|
|
2677
|
+
A key ABSENT here changes nothing — same as an absent `live_ci_gate` key.
|
|
2678
|
+
|
|
2638
2679
|
*live_blocked_gate* is #2230's counterpart, for `blocked` instead of
|
|
2639
2680
|
`parked`: maps a RE-EVALUABLE `blocked` entry's key (never one
|
|
2640
2681
|
:func:`is_permanent_block_reason` recognises — the shell never even
|
|
@@ -2882,6 +2923,36 @@ def plan_tick(
|
|
|
2882
2923
|
live_override = (live_ci_gate or {}).get(entry.key)
|
|
2883
2924
|
if live_override is not None:
|
|
2884
2925
|
if live_override:
|
|
2926
|
+
# #2347: CONFIRMED still blocked — but if the FRESH reading
|
|
2927
|
+
# taken THIS tick says the real cause is "GitHub could not
|
|
2928
|
+
# be reached" (not a real CI verdict) and that differs from
|
|
2929
|
+
# whatever reason is currently stored, rewrite `last_reason`
|
|
2930
|
+
# so `coord drive-queue list`/`status` says so — rather than
|
|
2931
|
+
# silently re-confirming whatever reason this entry
|
|
2932
|
+
# happened to park on originally, unboundedly, the way
|
|
2933
|
+
# #1891/#1892/#2252's "still shut ⇒ no reconcile, no write"
|
|
2934
|
+
# rule does for every other still-blocked reading. State
|
|
2935
|
+
# stays `parked`, no attempt spent — this changes only what
|
|
2936
|
+
# the operator is told, never the decision.
|
|
2937
|
+
live_reason = (live_ci_gate_reason or {}).get(entry.key)
|
|
2938
|
+
if (
|
|
2939
|
+
live_reason
|
|
2940
|
+
and is_ci_unreadable_reason(live_reason)
|
|
2941
|
+
and live_reason != entry.last_reason
|
|
2942
|
+
):
|
|
2943
|
+
reason = (
|
|
2944
|
+
f"{live_reason} — still parked; the live re-check "
|
|
2945
|
+
"this tick could not reach GitHub either (#2347)"
|
|
2946
|
+
)
|
|
2947
|
+
reconciles.append(
|
|
2948
|
+
Reconcile(
|
|
2949
|
+
entry.key,
|
|
2950
|
+
"reparked",
|
|
2951
|
+
reason,
|
|
2952
|
+
occupies=False,
|
|
2953
|
+
updates={"last_reason": reason},
|
|
2954
|
+
)
|
|
2955
|
+
)
|
|
2885
2956
|
continue
|
|
2886
2957
|
reason = (
|
|
2887
2958
|
f"live re-check of {entry.key}'s gate this tick reads READY "
|
|
@@ -597,6 +597,14 @@ def _merge_entry(
|
|
|
597
597
|
# branch can ever legitimately fire for a given raw_reason.
|
|
598
598
|
elif is_ci_flaky_reason(raw_reason) and not is_ci_flaky_reason(reason):
|
|
599
599
|
reason = raw_reason
|
|
600
|
+
# #2347: deliberately NO third `elif` here for
|
|
601
|
+
# `is_ci_unreadable_reason` — unlike CI_INFRA_PREFIX/CI_FLAKY_PREFIX
|
|
602
|
+
# above, that classification needs no extra `CiStore` I/O (see
|
|
603
|
+
# `coord.merge_queue._ci_unreadable_reason`'s docstring), so
|
|
604
|
+
# `_entry_gate_status` already computes it directly at board-build
|
|
605
|
+
# time. `plan_entry["reason"]` (i.e. `reason` here) already carries
|
|
606
|
+
# it whenever it applies — there is nothing for the raw row to
|
|
607
|
+
# recover that the fresh plan reading doesn't already have.
|
|
600
608
|
|
|
601
609
|
return {
|
|
602
610
|
"status": status,
|