code-coordinator 0.5.62__tar.gz → 0.5.64__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.64/.github/coord-ci-acceptance.yml +94 -0
- code_coordinator-0.5.64/.github/workflows/cargo-test.yml +122 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.github/workflows/test.yml +57 -5
- {code_coordinator-0.5.62/code_coordinator.egg-info → code_coordinator-0.5.64}/PKG-INFO +1 -1
- {code_coordinator-0.5.62 → code_coordinator-0.5.64/code_coordinator.egg-info}/PKG-INFO +1 -1
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/code_coordinator.egg-info/SOURCES.txt +1 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/code_coordinator.egg-info/scm_file_list.json +1 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/acceptance.py +69 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/drive_queue.py +77 -14
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/db.py +14 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/drive_queue.py +179 -30
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/merge_queue.py +55 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/reports.py +8 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/serve_app.py +5 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/state.py +28 -9
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/test_author.py +22 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/AGENT_OPERATIONS.md +3 -2
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/coord-test-runner.sh +112 -4
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/next_release_tag.py +6 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_acceptance.py +65 -0
- code_coordinator-0.5.64/tests/test_ci_acceptance_gate_1950.py +234 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_drive_queue.py +163 -7
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_coord_test_runner_baseline.py +83 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_db.py +98 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_drive_queue.py +109 -13
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_merge_queue.py +124 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_next_release_tag.py +10 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_reports.py +25 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_test_author.py +31 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/drive_queue.rs +236 -26
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/types.rs +11 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/tests/fixtures/board_sample.json +2 -0
- code_coordinator-0.5.62/.github/workflows/cargo-test.yml +0 -64
- code_coordinator-0.5.62/tests/test_ci_acceptance_gate_1950.py +0 -114
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.gitignore +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/CLAUDE.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/GOAL.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/LICENSE +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/MANIFEST.in +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/README.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/__init__.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/agent.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/audit.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/board_service.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/brain.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/claim.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/cli.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/client.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/comments.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/config.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dao.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/assets/Gallery-da3qNiIw.js +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/assets/Terminal-skVFCxPU.js +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/assets/index-DltfZR5f.js +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deps.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/drive.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/events.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/filelock.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/freshness.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/gates.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/goal.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/context.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/models.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/render.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/units.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/hooks.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/interactive.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/models.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/network.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notify.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/openapi.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/parentage.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/plans.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/progress.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/release_window.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/review.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/smoke.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/split_work.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/test_report.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/usage.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/install-agent.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/pyproject.toml +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/setup.cfg +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/__init__.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/conftest.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_config.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_events.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_init.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_models.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_network.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_session.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_split.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_state.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/tests/cli.rs +0 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# #2180: a minimal, CI-ONLY coordinator.yml so `.github/workflows/*.yml` can
|
|
2
|
+
# invoke `coord acceptance run --all --ci` (#2164's CI wrapper, PR #2173).
|
|
3
|
+
#
|
|
4
|
+
# This is deliberately NOT the fleet's real coordinator.yml. That file lives
|
|
5
|
+
# outside this repo (~/.coord/coordinator.yml on the coordinator host,
|
|
6
|
+
# "updated out-of-band" per scripts/coord-test-runner.sh's own header) and is
|
|
7
|
+
# unreachable from a GitHub Actions runner. `coord acceptance run` needs
|
|
8
|
+
# SOME coordinator.yml to resolve `acceptance.drivers.claude-coordinator`
|
|
9
|
+
# (and, being the same parser as the fleet config, a non-empty `repos:` /
|
|
10
|
+
# `machines:` list even though nothing here is a real machine) — this file
|
|
11
|
+
# is that, scoped to exactly what CI needs and nothing else.
|
|
12
|
+
#
|
|
13
|
+
# The three routes below mirror the fleet's real
|
|
14
|
+
# `acceptance.drivers.claude-coordinator.routes` (#1125 in-repo path
|
|
15
|
+
# routing: coord/dashboard/webapp/** -> web-playwright, coord/** ->
|
|
16
|
+
# cli-pytest, tui/** -> tui-tuidriver) with ONE deliberate difference: none
|
|
17
|
+
# of these `run:` commands reference the `{ms}` template.
|
|
18
|
+
#
|
|
19
|
+
# `{ms}` only gets substituted when `coord acceptance run` is scoped to one
|
|
20
|
+
# issue (`--issue N`, resolved via the issue's manifest-mapped ms-NN dir,
|
|
21
|
+
# coord/commands/acceptance.py). `--all` (Gate C, what `--ci` requires)
|
|
22
|
+
# always passes `ms=None` — coord.acceptance_drivers.render_run_command
|
|
23
|
+
# documents that it leaves `{ms}` UNSUBSTITUTED (literal) in that case,
|
|
24
|
+
# by design, for a driver whose `run:` never references it at all (like
|
|
25
|
+
# tui-tuidriver's below). A route written for `--issue` scoping, like the
|
|
26
|
+
# fleet's real `pytest tests/acceptance/{ms}`, would try to literally
|
|
27
|
+
# collect a path named `tests/acceptance/{ms}` under `--all` and crash
|
|
28
|
+
# outright — confirmed locally 2026-08-14 authoring this file:
|
|
29
|
+
# $ pytest 'tests/acceptance/{ms}' -q
|
|
30
|
+
# ERROR: file or directory not found: tests/acceptance/{ms}
|
|
31
|
+
# So the two use cases need different `run:` commands over the SAME
|
|
32
|
+
# underlying suite: the fleet config's per-issue routes stay as they are
|
|
33
|
+
# (a worker's own `--issue N` self-check, unaffected by this file), and
|
|
34
|
+
# this file's routes are written to always cover every ms-NN under that
|
|
35
|
+
# route in one pass — exactly what the accumulated Gate C suite needs.
|
|
36
|
+
repos:
|
|
37
|
+
- name: claude-coordinator
|
|
38
|
+
github: JDonaghy/claude-coordinator
|
|
39
|
+
default_branch: main
|
|
40
|
+
|
|
41
|
+
# Not a real fleet machine — just enough for coord.config.load() to parse.
|
|
42
|
+
# `coord.acceptance.acceptance_capability_gap` gives an unrecognized host
|
|
43
|
+
# (any GitHub Actions runner, which will never match `host:` below) the
|
|
44
|
+
# benefit of the doubt and proceeds rather than refusing, so this entry is
|
|
45
|
+
# never actually matched against anything at run time.
|
|
46
|
+
machines:
|
|
47
|
+
- name: ci-runner
|
|
48
|
+
host: ci-runner
|
|
49
|
+
|
|
50
|
+
acceptance:
|
|
51
|
+
drivers:
|
|
52
|
+
claude-coordinator:
|
|
53
|
+
routes:
|
|
54
|
+
# #1540: coord/dashboard/webapp/** MUST stay above coord/** below —
|
|
55
|
+
# driver_for() resolves the first matching route (fnmatch,
|
|
56
|
+
# first-match not most-specific), and coord/dashboard/webapp/** is a
|
|
57
|
+
# strict subset of coord/**.
|
|
58
|
+
- match: coord/dashboard/webapp/**
|
|
59
|
+
kind: web-playwright
|
|
60
|
+
# No `setup:` here — the CI job that uses this route provisions
|
|
61
|
+
# explicitly (npm ci, playwright install chromium --with-deps)
|
|
62
|
+
# before invoking the wrapper, matching the shape that job already
|
|
63
|
+
# had before #2180 wired the wrapper in.
|
|
64
|
+
# The trailing `--` matters: _run_web_playwright appends
|
|
65
|
+
# ` --reporter=json` verbatim (coord/acceptance_drivers.py), so
|
|
66
|
+
# without it npm would try to interpret --reporter=json as an npm
|
|
67
|
+
# CLI flag instead of forwarding it to the playwright binary.
|
|
68
|
+
run: "cd coord/dashboard/webapp && npm run test:acceptance --"
|
|
69
|
+
mock: "*.html"
|
|
70
|
+
capability: browser
|
|
71
|
+
- match: coord/**
|
|
72
|
+
kind: cli-pytest
|
|
73
|
+
# Whole tree, not one ms-NN dir -- see the file header.
|
|
74
|
+
run: "pytest tests/acceptance"
|
|
75
|
+
mock: "*.out"
|
|
76
|
+
capability: python
|
|
77
|
+
- match: tui/**
|
|
78
|
+
kind: tui-tuidriver
|
|
79
|
+
# Unlike the two routes above, this one is identical to the
|
|
80
|
+
# fleet's real route: it never referenced `{ms}` even for
|
|
81
|
+
# `--issue` scoping, since `cargo test --test acceptance` always
|
|
82
|
+
# runs the whole tui/tests/acceptance.rs entrypoint (which
|
|
83
|
+
# `include!`s every ms-NN/*.rs slice) regardless of `{ms}`.
|
|
84
|
+
# RUSTC_BOOTSTRAP=1 + -Z unstable-options: --format json is
|
|
85
|
+
# nightly-gated; verified working on stable rustc (#1042).
|
|
86
|
+
# --features test-support: tui/Cargo.toml's `acceptance` test
|
|
87
|
+
# target has `required-features = ["test-support"]`, so a plain
|
|
88
|
+
# `cargo test` (no flag) silently skips building/running it
|
|
89
|
+
# altogether -- that gap is exactly what made this route
|
|
90
|
+
# unreachable from CI before #2180.
|
|
91
|
+
run: "cd tui && RUSTC_BOOTSTRAP=1 cargo test --test acceptance --features test-support -- -Z unstable-options --format json"
|
|
92
|
+
mock: "*.screen"
|
|
93
|
+
capability: rust
|
|
94
|
+
entrypoint: tui/tests/acceptance.rs
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
name: Rust tests
|
|
2
|
+
|
|
3
|
+
# Closes the gap documented in GOAL.md (2026-06-11):
|
|
4
|
+
# "CI is pytest-only, so Rust repos (tui/quadraui/vimcode) still have no
|
|
5
|
+
# automated gate; they need an explicit cargo build && cargo test gate."
|
|
6
|
+
# Issue #741 called for either resolving or tracking the gap — this resolves it
|
|
7
|
+
# for the coord-tui crate (the tui/ subdirectory of this repo).
|
|
8
|
+
#
|
|
9
|
+
# #1973: tui/Cargo.toml pins quadraui by `git`/`rev` rather than a sibling
|
|
10
|
+
# path dependency, so `cargo test` here fetches quadraui straight from
|
|
11
|
+
# GitHub at the pinned rev — there is nothing left to check out or reproduce
|
|
12
|
+
# a sibling-directory layout for. That also retired this workflow's original
|
|
13
|
+
# #1865 role: the schedule/workflow_dispatch "canary" triggers below used to
|
|
14
|
+
# build tui/ against quadraui's *moving* `develop` branch specifically to
|
|
15
|
+
# catch a quadraui-side break before it reached coord-tui. Since the pin, a
|
|
16
|
+
# scheduled run here would just rebuild the same pinned rev every time and
|
|
17
|
+
# report green regardless of what quadraui's develop is doing — a canary
|
|
18
|
+
# that can't smell smoke. Per #1973's decision, vimcode (which keeps the
|
|
19
|
+
# floating path dep on purpose) is the sole canary for quadraui breaks going
|
|
20
|
+
# forward; this workflow is back to being a plain gate on tui/** changes.
|
|
21
|
+
on:
|
|
22
|
+
push:
|
|
23
|
+
branches: [main]
|
|
24
|
+
paths:
|
|
25
|
+
- 'tui/**'
|
|
26
|
+
# #2180: tui/tests/acceptance.rs (the sealed oracle's crate root,
|
|
27
|
+
# `include!`d into `cargo test --test acceptance`) is under tui/** and
|
|
28
|
+
# already covered above, but the JIT-authored slices it `include!`s
|
|
29
|
+
# live at the REPO ROOT (tests/acceptance/ms-33/, ms-38/), outside
|
|
30
|
+
# tui/**. Without this, a worker's fix to a red-by-design slice would
|
|
31
|
+
# never re-trigger this workflow at all.
|
|
32
|
+
- 'tests/acceptance/**'
|
|
33
|
+
# Self-trigger so edits to this workflow are exercised by their own PR.
|
|
34
|
+
- '.github/workflows/cargo-test.yml'
|
|
35
|
+
# Same reasoning as tests/acceptance/** above, for the CI-local config
|
|
36
|
+
# the new acceptance step (below) reads its driver command from.
|
|
37
|
+
- '.github/coord-ci-acceptance.yml'
|
|
38
|
+
pull_request:
|
|
39
|
+
branches: [main]
|
|
40
|
+
paths:
|
|
41
|
+
- 'tui/**'
|
|
42
|
+
- 'tests/acceptance/**'
|
|
43
|
+
# Self-trigger so edits to this workflow are exercised by their own PR.
|
|
44
|
+
- '.github/workflows/cargo-test.yml'
|
|
45
|
+
- '.github/coord-ci-acceptance.yml'
|
|
46
|
+
# Manual re-run convenience — no longer a "check tui/ against quadraui
|
|
47
|
+
# develop" canary (see #1973 note above); it now just builds tui/ at
|
|
48
|
+
# whatever ref is checked out, same as push/pull_request.
|
|
49
|
+
workflow_dispatch:
|
|
50
|
+
|
|
51
|
+
jobs:
|
|
52
|
+
cargo-test:
|
|
53
|
+
runs-on: ubuntu-latest
|
|
54
|
+
steps:
|
|
55
|
+
- uses: actions/checkout@v4
|
|
56
|
+
|
|
57
|
+
- uses: dtolnay/rust-toolchain@stable
|
|
58
|
+
|
|
59
|
+
- uses: Swatinem/rust-cache@v2
|
|
60
|
+
with:
|
|
61
|
+
workspaces: tui
|
|
62
|
+
|
|
63
|
+
# A few tui integration tests (commands::tests) spawn the real `coord`
|
|
64
|
+
# CLI (e.g. `coord --version`) via Command::new("coord") and assert it
|
|
65
|
+
# succeeds, so the Python package must be installed and on PATH inside
|
|
66
|
+
# this otherwise Rust-only job.
|
|
67
|
+
- uses: actions/setup-python@v5
|
|
68
|
+
with:
|
|
69
|
+
python-version: '3.12'
|
|
70
|
+
|
|
71
|
+
- name: Install coord CLI (tui integration tests spawn it)
|
|
72
|
+
run: pip install -e .
|
|
73
|
+
|
|
74
|
+
- name: cargo test (tui)
|
|
75
|
+
working-directory: tui
|
|
76
|
+
run: cargo test
|
|
77
|
+
|
|
78
|
+
# #2180: the tui-tuidriver sealed acceptance route (acceptance.drivers
|
|
79
|
+
# routes "tui/**" -> tui-tuidriver -> tui/tests/acceptance.rs, which
|
|
80
|
+
# `include!`s tests/acceptance/ms-33/ and ms-38/) run through the
|
|
81
|
+
# #2164 CI wrapper. Plain `cargo test` above does NOT exercise this —
|
|
82
|
+
# the `acceptance` test target has `required-features = ["test-
|
|
83
|
+
# support"]` (tui/Cargo.toml), so cargo silently skips building it
|
|
84
|
+
# without that flag. Before #2180 nothing in CI ran this route at all.
|
|
85
|
+
# Working directory is the repo root (not `tui`, unlike the step
|
|
86
|
+
# above): the driver's own `run:` command does its own `cd tui`.
|
|
87
|
+
#
|
|
88
|
+
# TEMPORARILY continue-on-error (STEP level only — same reasoning and
|
|
89
|
+
# same shape as the `windows` job in test.yml, see its header comment
|
|
90
|
+
# for why step-level and not job-level): running this route for the
|
|
91
|
+
# very first time (verified locally, 2026-08-14, authoring this PR)
|
|
92
|
+
# surfaced SIX pre-existing failures that predate #2180 and are not
|
|
93
|
+
# yet declared in either manifest's `expected_red:` —
|
|
94
|
+
# - ms-38/manifest.yml's own comment already documents all five
|
|
95
|
+
# `plans_detail_1122::*` tests as blocked on a harness gap (no
|
|
96
|
+
# public fixture seam for a seeded plan row) — #2164's
|
|
97
|
+
# `expected_red:` mechanism didn't exist when that comment was
|
|
98
|
+
# written; it's the natural home for these now.
|
|
99
|
+
# - ms-33's `audit_1039::populated_list_rows_are_relative_time` is a
|
|
100
|
+
# newly-discovered ticking-time-bomb regression: its fixture pins
|
|
101
|
+
# timestamps "~1 year in the past" (a fixed epoch, ts~=1752156191)
|
|
102
|
+
# so `format_unix_time()` always renders an "... ago" suffix — true
|
|
103
|
+
# when ms-33 was authored, false today (now >13 months stale) now
|
|
104
|
+
# that format_unix_time() has crossed whatever threshold stops
|
|
105
|
+
# appending "ago" for very old timestamps. This one is NOT already
|
|
106
|
+
# documented as expected — it looks like a genuine, ordinary bug a
|
|
107
|
+
# test-author/fix session should look at, not just declare red.
|
|
108
|
+
# Both `tests/acceptance/` and its `manifest.yml` files are SEALED
|
|
109
|
+
# (coord.config.AcceptanceConfig.sealed_paths) — a `type="work"`
|
|
110
|
+
# session (this one) editing them trips the oracle-tamper gate at
|
|
111
|
+
# review, so this PR deliberately does not add `expected_red:` entries
|
|
112
|
+
# itself. REVISIT: once a test-author/fix session addresses the six
|
|
113
|
+
# failures above (declaring the five documented ones in
|
|
114
|
+
# `expected_red:`, fixing or re-baselining the sixth), drop this
|
|
115
|
+
# continue-on-error and this becomes a real, blocking gate like the
|
|
116
|
+
# `acceptance` (ms-51) and cli-pytest (ms-37) routes already are.
|
|
117
|
+
- name: coord acceptance run --all --ci (tui-tuidriver route, ms-33/ms-38)
|
|
118
|
+
run: >-
|
|
119
|
+
coord acceptance run --repo claude-coordinator --all --ci
|
|
120
|
+
--for-path tui/src/main.rs
|
|
121
|
+
--config .github/coord-ci-acceptance.yml --path .
|
|
122
|
+
continue-on-error: true
|
|
@@ -18,7 +18,33 @@ jobs:
|
|
|
18
18
|
with:
|
|
19
19
|
python-version: ${{ matrix.python-version }}
|
|
20
20
|
- run: pip install -e ".[dev]"
|
|
21
|
-
|
|
21
|
+
# #2180: `--ignore=tests/acceptance` — the sealed oracle-loop suite
|
|
22
|
+
# (tests/acceptance/ms-NN/) is split out of the ordinary suite and
|
|
23
|
+
# gated separately, through `coord acceptance run --all --ci` (see the
|
|
24
|
+
# `acceptance-cli` step below and the `acceptance` job further down),
|
|
25
|
+
# which honours each ms-NN/manifest.yml's `expected_red:` registry
|
|
26
|
+
# (#2164). Left in here, a red-by-design slice would fail this job
|
|
27
|
+
# outright — every ordinary PR in the repo, not just the one the slice
|
|
28
|
+
# belongs to — exactly the quadraui#554/#490 failure mode #2180 exists
|
|
29
|
+
# to close. ms-33/ms-38 (Rust, feature-gated behind test-support) and
|
|
30
|
+
# ms-51 (Playwright, not .py) were never swept in here; ms-37 (plain
|
|
31
|
+
# .py files under testpaths=["tests"]) was the one accidental gap.
|
|
32
|
+
- run: pytest --ignore=tests/acceptance
|
|
33
|
+
# #2180: the cli-pytest sealed route (acceptance.drivers routes
|
|
34
|
+
# "coord/**" -> cli-pytest -> tests/acceptance/ms-37) run through the
|
|
35
|
+
# #2164 CI wrapper instead of a raw `pytest tests/acceptance` call, so
|
|
36
|
+
# expected_red is honoured. One matrix leg only — the suite result
|
|
37
|
+
# doesn't depend on the Python version any differently than the
|
|
38
|
+
# ordinary suite above does, so running it twice would just double the
|
|
39
|
+
# cost for no new signal. See .github/coord-ci-acceptance.yml's header
|
|
40
|
+
# for why this points at a CI-local config rather than
|
|
41
|
+
# ~/.coord/coordinator.yml (unreachable from a runner).
|
|
42
|
+
- name: coord acceptance run --all --ci (cli-pytest route, ms-37)
|
|
43
|
+
if: matrix.python-version == '3.12'
|
|
44
|
+
run: >-
|
|
45
|
+
coord acceptance run --repo claude-coordinator --all --ci
|
|
46
|
+
--for-path coord/cli.py
|
|
47
|
+
--config .github/coord-ci-acceptance.yml --path .
|
|
22
48
|
|
|
23
49
|
# #1895 (CP-4 slice of #1159): real Windows verification — the repo is
|
|
24
50
|
# public, so `windows-latest` runners cost nothing.
|
|
@@ -83,7 +109,10 @@ jobs:
|
|
|
83
109
|
# visible in the log as a failed test.
|
|
84
110
|
- run: pip install -e ".[dev]"
|
|
85
111
|
continue-on-error: true
|
|
86
|
-
|
|
112
|
+
# #2180: same split as the `test` job above — the sealed acceptance
|
|
113
|
+
# suite is gated separately through the #2164 CI wrapper, not swept
|
|
114
|
+
# into this job's ordinary pytest run.
|
|
115
|
+
- run: pytest --ignore=tests/acceptance
|
|
87
116
|
continue-on-error: true
|
|
88
117
|
|
|
89
118
|
# #1484: run the full suite with `gh` made unresolvable on PATH.
|
|
@@ -113,7 +142,9 @@ jobs:
|
|
|
113
142
|
with:
|
|
114
143
|
python-version: "3.12"
|
|
115
144
|
- run: pip install -e ".[dev]"
|
|
116
|
-
|
|
145
|
+
# #2180: same split as the `test` job — the sealed acceptance suite is
|
|
146
|
+
# gated separately through the #2164 CI wrapper.
|
|
147
|
+
- run: scripts/run_tests_without_gh.sh python -m pytest tests/ -q --ignore=tests/acceptance
|
|
117
148
|
|
|
118
149
|
# #2170: run the full suite in the environment of a REAL FLEET MACHINE — a
|
|
119
150
|
# populated `~/.coord/` (thin-client shaped), no `sqlite3` on PATH, and a
|
|
@@ -154,7 +185,9 @@ jobs:
|
|
|
154
185
|
with:
|
|
155
186
|
python-version: "3.12"
|
|
156
187
|
- run: pip install -e ".[dev]"
|
|
157
|
-
|
|
188
|
+
# #2180: same split as the `test` job — the sealed acceptance suite is
|
|
189
|
+
# gated separately through the #2164 CI wrapper.
|
|
190
|
+
- run: scripts/run_tests_in_populated_home.sh python -m pytest tests/ -q --ignore=tests/acceptance
|
|
158
191
|
- name: What a red result here means
|
|
159
192
|
if: failure()
|
|
160
193
|
run: |
|
|
@@ -271,6 +304,20 @@ jobs:
|
|
|
271
304
|
# full path/title on failure, so the ms-NN + issue are already in the
|
|
272
305
|
# job's own output; the failure-hint step below just spells out the two
|
|
273
306
|
# possible causes so whoever triages it doesn't have to rediscover them.
|
|
307
|
+
#
|
|
308
|
+
# #2180: the `npm run test:acceptance` step now runs THROUGH `coord
|
|
309
|
+
# acceptance run --all --ci` (#2164) instead of calling Playwright
|
|
310
|
+
# directly. Same suite, same reporter under the hood — the wrapper's
|
|
311
|
+
# web-playwright driver shape appends `--reporter=json` and reads
|
|
312
|
+
# PLAYWRIGHT_JSON_OUTPUT_FILE itself (coord/acceptance_drivers.py) — but
|
|
313
|
+
# now a test-id listed in a manifest's `expected_red:` that fails does not
|
|
314
|
+
# redden this job (a sealed slice authored red before its fix exists,
|
|
315
|
+
# #2164's whole point), while one that unexpectedly PASSES does, loudly
|
|
316
|
+
# (#1965's vacuous-assertion case). Before this, ms-51 going red for any
|
|
317
|
+
# reason failed this job exactly the same as every other kind of red —
|
|
318
|
+
# there was no way to merge a red-by-design slice without `--force-merge`.
|
|
319
|
+
# .github/coord-ci-acceptance.yml's header explains why this points at a
|
|
320
|
+
# CI-local config instead of the fleet's real ~/.coord/coordinator.yml.
|
|
274
321
|
acceptance:
|
|
275
322
|
runs-on: ubuntu-latest
|
|
276
323
|
defaults:
|
|
@@ -288,7 +335,12 @@ jobs:
|
|
|
288
335
|
node-version: '20'
|
|
289
336
|
- run: npm ci
|
|
290
337
|
- run: npx playwright install chromium --with-deps
|
|
291
|
-
-
|
|
338
|
+
- name: coord acceptance run --all --ci (web-playwright route, ms-51)
|
|
339
|
+
working-directory: .
|
|
340
|
+
run: >-
|
|
341
|
+
coord acceptance run --repo claude-coordinator --all --ci
|
|
342
|
+
--for-path coord/dashboard/webapp/src/App.tsx
|
|
343
|
+
--config .github/coord-ci-acceptance.yml --path .
|
|
292
344
|
- name: A red result here is attributable, not a mystery
|
|
293
345
|
if: failure()
|
|
294
346
|
run: |
|
|
@@ -886,6 +886,75 @@ def find_ms_manifest_for_issue_via_api(
|
|
|
886
886
|
return None
|
|
887
887
|
|
|
888
888
|
|
|
889
|
+
def missing_expected_red_warning(
|
|
890
|
+
repo_github: str, branch: str, issue_number: int, *, gh_ops: Any = None,
|
|
891
|
+
) -> str | None:
|
|
892
|
+
"""#2191 — the writer/gate seam: is *issue_number* the signature of an
|
|
893
|
+
unwritten ``expected_red`` registry on *branch*'s manifest? That
|
|
894
|
+
signature is checkable without ever running the suite: the manifest
|
|
895
|
+
maps at least one test id to *issue_number* (a slice was authored for
|
|
896
|
+
it) but records ZERO ``expected_red`` entries for it, and the issue is
|
|
897
|
+
still open. #2164 shipped a reader (:func:`apply_expected_red`), a
|
|
898
|
+
clearer (:func:`clear_expected_red_via_pr`) and a lister
|
|
899
|
+
(:func:`list_expected_red_via_api`) for this registry but no writer —
|
|
900
|
+
:data:`coord.test_author.TEST_AUTHOR_SYSTEM_PROMPT` step 4b is the
|
|
901
|
+
writer (the test-author records what it observed FAIL in its step-4
|
|
902
|
+
run). This function is the gate half: it does not trust the prompt was
|
|
903
|
+
followed, so it re-derives "was anything recorded" from the manifest
|
|
904
|
+
itself at slice-PR-open time (:func:`coord.merge_queue.process`'s
|
|
905
|
+
"Open PRs first" loop, gated on ``assignment_type == "test-author"``)
|
|
906
|
+
and flags exactly the case a skipped step 4b produces.
|
|
907
|
+
|
|
908
|
+
Returns ``None`` — nothing to flag — when: *branch*'s manifest doesn't
|
|
909
|
+
reference *issue_number* at all (no slice authored yet, out of scope);
|
|
910
|
+
``expected_red`` already has a non-empty entry for it (the writer did
|
|
911
|
+
its job, or the slice is genuinely all-green and needs none); the issue
|
|
912
|
+
is closed (its slice already served its purpose — flagging it now is
|
|
913
|
+
stale noise, not #2191's live deadlock); or any lookup fails. The last
|
|
914
|
+
case is deliberate fail-open, matching every other best-effort API
|
|
915
|
+
sweep in this module (:func:`find_ms_manifest_for_issue_via_api`,
|
|
916
|
+
:func:`coord.merge_queue._issue_has_expected_red_entries`) — this check
|
|
917
|
+
is advisory (see the "refused or warned" phrasing in #2191's acceptance
|
|
918
|
+
criteria; callers choose which), so an unreachable API must degrade to
|
|
919
|
+
"say nothing," never to blocking a PR the check itself couldn't
|
|
920
|
+
evaluate.
|
|
921
|
+
|
|
922
|
+
Otherwise returns a human-readable warning naming the missing ids.
|
|
923
|
+
"""
|
|
924
|
+
ops = gh_ops or _default_github_ops()
|
|
925
|
+
found = find_ms_manifest_for_issue_via_api(
|
|
926
|
+
repo_github, branch, issue_number, gh_ops=ops,
|
|
927
|
+
)
|
|
928
|
+
if found is None:
|
|
929
|
+
return None
|
|
930
|
+
path, _text, _blob_sha, data = found
|
|
931
|
+
if data.expected_red.get(issue_number):
|
|
932
|
+
return None
|
|
933
|
+
test_ids = test_ids_for_issue(data.tests, issue_number)
|
|
934
|
+
if not test_ids:
|
|
935
|
+
return None
|
|
936
|
+
live_state = getattr(ops, "get_issues_live_state", None)
|
|
937
|
+
if live_state is None:
|
|
938
|
+
return None
|
|
939
|
+
try:
|
|
940
|
+
states = live_state(repo_github, [issue_number])
|
|
941
|
+
except Exception: # noqa: BLE001 — best-effort, fail open (see docstring)
|
|
942
|
+
return None
|
|
943
|
+
if states.get(issue_number) != "open":
|
|
944
|
+
return None
|
|
945
|
+
return (
|
|
946
|
+
f"#{issue_number}: {path} maps {len(test_ids)} test-id(s) to this "
|
|
947
|
+
f"issue ({', '.join(sorted(test_ids))}) but records no "
|
|
948
|
+
"`expected_red` entries for it — the #2191 signature of an "
|
|
949
|
+
"unwritten registry (the test-author's step 4b never ran, or was "
|
|
950
|
+
"skipped). If this slice is genuinely all-green already, ignore; "
|
|
951
|
+
"otherwise every red id here fails CI with nothing telling "
|
|
952
|
+
"`coord acceptance run --all --ci` that's expected, and `coord "
|
|
953
|
+
"merge` will need `--force-merge` or a hand-edited manifest to "
|
|
954
|
+
"land it."
|
|
955
|
+
)
|
|
956
|
+
|
|
957
|
+
|
|
889
958
|
def list_expected_red_via_api(
|
|
890
959
|
repo_github: str, branch: str, *, gh_ops: Any = None,
|
|
891
960
|
) -> "dict[str, dict[int, frozenset[str]]]":
|
|
@@ -43,6 +43,8 @@ from coord.drive_queue import (
|
|
|
43
43
|
DEFAULT_MAX_ATTEMPTS,
|
|
44
44
|
DEFAULT_MAX_PARALLEL_PER_REPO,
|
|
45
45
|
HOLD_RELEASED,
|
|
46
|
+
HOLD_SCOPE_ENTRY,
|
|
47
|
+
HOLD_SCOPE_FLEET,
|
|
46
48
|
QUEUE_ALERT_ISSUE,
|
|
47
49
|
QUEUE_ALERT_REPO,
|
|
48
50
|
QUEUE_ALERT_STAGE,
|
|
@@ -155,6 +157,19 @@ def drive_queue_group() -> None:
|
|
|
155
157
|
"treated as a failure. Requires --hold-after."
|
|
156
158
|
),
|
|
157
159
|
)
|
|
160
|
+
@click.option(
|
|
161
|
+
"--scope",
|
|
162
|
+
"hold_scope",
|
|
163
|
+
type=click.Choice([HOLD_SCOPE_ENTRY, HOLD_SCOPE_FLEET]),
|
|
164
|
+
default=HOLD_SCOPE_ENTRY,
|
|
165
|
+
show_default=True,
|
|
166
|
+
help=(
|
|
167
|
+
"How far a fired gate reaches (#2186). `entry` holds only entries "
|
|
168
|
+
"whose own --after names THIS one. `fleet` is the whole-queue stop — "
|
|
169
|
+
"launch NOTHING anywhere, for the rare case (a rename, a schema "
|
|
170
|
+
"migration) where that is really what's needed. Requires --hold-after."
|
|
171
|
+
),
|
|
172
|
+
)
|
|
158
173
|
@_CONFIG_OPTION
|
|
159
174
|
def drive_queue_add(
|
|
160
175
|
repo: str,
|
|
@@ -165,6 +180,7 @@ def drive_queue_add(
|
|
|
165
180
|
hold_after: bool,
|
|
166
181
|
hold_reason: str,
|
|
167
182
|
resume_when: str,
|
|
183
|
+
hold_scope: str,
|
|
168
184
|
config_path: Path,
|
|
169
185
|
) -> None:
|
|
170
186
|
"""Queue REPO ISSUE for `coord drive`, or update it if already queued.
|
|
@@ -175,14 +191,36 @@ def drive_queue_add(
|
|
|
175
191
|
"""
|
|
176
192
|
from coord.state import enqueue_drive_queue, list_drive_queue # noqa: PLC0415
|
|
177
193
|
|
|
194
|
+
existing_entries = entries_from_rows(list_drive_queue())
|
|
178
195
|
try:
|
|
179
196
|
after = parse_after_spec(after_specs, repo)
|
|
180
197
|
validate_config_repo(config_path, repo)
|
|
181
|
-
validate_hold_flags(hold_after, hold_reason, resume_when)
|
|
182
|
-
validate_enqueue(
|
|
198
|
+
validate_hold_flags(hold_after, hold_reason, resume_when, hold_scope)
|
|
199
|
+
validate_enqueue(existing_entries, repo, issue, after)
|
|
183
200
|
except QueueError as exc:
|
|
184
201
|
raise click.ClickException(str(exc)) from None
|
|
185
202
|
|
|
203
|
+
# #2186: the UPDATE path in `_enqueue_drive_queue_local` always writes
|
|
204
|
+
# whatever `hold_scope` THIS call passed (default `entry`) — so re-adding
|
|
205
|
+
# an already fleet-scoped gate without repeating `--scope fleet` silently
|
|
206
|
+
# narrows it. That fails toward the safer/narrower scope, not a
|
|
207
|
+
# correctness bug, but it is a real behaviour change an operator who only
|
|
208
|
+
# meant to touch `--machine`/`--after` would not expect, so it is echoed
|
|
209
|
+
# rather than left silent.
|
|
210
|
+
previous = next((e for e in existing_entries if e.key == entry_key(repo, issue)), None)
|
|
211
|
+
scope_downgrade_warning = ""
|
|
212
|
+
if (
|
|
213
|
+
previous is not None
|
|
214
|
+
and previous.hold_scope == HOLD_SCOPE_FLEET
|
|
215
|
+
and hold_after
|
|
216
|
+
and hold_scope != HOLD_SCOPE_FLEET
|
|
217
|
+
):
|
|
218
|
+
scope_downgrade_warning = (
|
|
219
|
+
f"\nwarning: {entry_key(repo, issue)} was scope=fleet — this add did not "
|
|
220
|
+
f"repeat --scope {HOLD_SCOPE_FLEET}, so its gate is now scope={hold_scope} "
|
|
221
|
+
"(entries-only). Pass --scope fleet again if the fleet-wide stop was still needed."
|
|
222
|
+
)
|
|
223
|
+
|
|
186
224
|
enqueue_drive_queue(
|
|
187
225
|
repo,
|
|
188
226
|
issue,
|
|
@@ -192,37 +230,51 @@ def drive_queue_add(
|
|
|
192
230
|
hold_after=hold_after,
|
|
193
231
|
hold_reason=hold_reason,
|
|
194
232
|
resume_when=resume_when,
|
|
233
|
+
hold_scope=hold_scope,
|
|
195
234
|
)
|
|
196
235
|
suffix = f" after {', '.join(after)}" if after else ""
|
|
197
236
|
pinned = f" on {machine}" if machine else ""
|
|
198
237
|
gate = ""
|
|
199
238
|
if hold_after:
|
|
200
239
|
gate = " · holds the queue when done"
|
|
240
|
+
if hold_scope == HOLD_SCOPE_FLEET:
|
|
241
|
+
gate += " (fleet-wide — nothing anywhere launches)"
|
|
201
242
|
if resume_when:
|
|
202
243
|
gate += f" (auto-resume when `{resume_when}` passes)"
|
|
203
|
-
click.echo(f"queued {entry_key(repo, issue)}{pinned}{suffix}{gate}")
|
|
244
|
+
click.echo(f"queued {entry_key(repo, issue)}{pinned}{suffix}{gate}{scope_downgrade_warning}")
|
|
204
245
|
|
|
205
246
|
|
|
206
|
-
def validate_hold_flags(
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
247
|
+
def validate_hold_flags(
|
|
248
|
+
hold_after: bool,
|
|
249
|
+
hold_reason: str,
|
|
250
|
+
resume_when: str,
|
|
251
|
+
hold_scope: str = HOLD_SCOPE_ENTRY,
|
|
252
|
+
) -> None:
|
|
253
|
+
"""Refuse gate detail without a gate (#1757, extended by #2186).
|
|
254
|
+
|
|
255
|
+
`--resume-when` / `--hold-reason` / a non-default `--scope` on an entry
|
|
256
|
+
with no `--hold-after` would be stored and then never read — a silent
|
|
257
|
+
no-op on the ONE flag whose whole job is to stop the queue (or narrow
|
|
258
|
+
what it stops). An operator who mistyped that has no signal at all that
|
|
259
|
+
overnight sequencing will now blow straight through the deploy step, so
|
|
260
|
+
this is a usage error, not a warning.
|
|
214
261
|
"""
|
|
215
262
|
if hold_after:
|
|
216
263
|
return
|
|
217
264
|
offenders = [
|
|
218
265
|
flag
|
|
219
|
-
for flag, value in (
|
|
266
|
+
for flag, value in (
|
|
267
|
+
("--resume-when", resume_when),
|
|
268
|
+
("--hold-reason", hold_reason),
|
|
269
|
+
)
|
|
220
270
|
if value
|
|
221
271
|
]
|
|
272
|
+
if hold_scope == HOLD_SCOPE_FLEET:
|
|
273
|
+
offenders.append("--scope=fleet")
|
|
222
274
|
if offenders:
|
|
223
275
|
raise QueueError(
|
|
224
276
|
f"{' and '.join(offenders)} require --hold-after "
|
|
225
|
-
"(without it there is no gate to resume or
|
|
277
|
+
"(without it there is no gate to resume, explain, or scope)"
|
|
226
278
|
)
|
|
227
279
|
|
|
228
280
|
|
|
@@ -277,6 +329,8 @@ def drive_queue_list(repo: str | None, output_json: bool, config_path: Path) ->
|
|
|
277
329
|
bits.append(f"deferrals={entry.deferrals}")
|
|
278
330
|
if entry.hold_after:
|
|
279
331
|
bits.append(f"hold={entry.hold_state or 'armed'}")
|
|
332
|
+
if entry.hold_scope == HOLD_SCOPE_FLEET:
|
|
333
|
+
bits.append("scope=fleet")
|
|
280
334
|
click.echo(" ".join(bits))
|
|
281
335
|
if entry.last_reason:
|
|
282
336
|
click.echo(f" last{_reason_age_suffix(entry, now)}: {entry.last_reason}")
|
|
@@ -325,7 +379,12 @@ def _hold_lines(entry: QueueEntry) -> list[str]:
|
|
|
325
379
|
"""
|
|
326
380
|
if not entry.hold_after:
|
|
327
381
|
return []
|
|
328
|
-
|
|
382
|
+
scope_suffix = (
|
|
383
|
+
" [fleet-wide — holds everything, not just this entry's dependents]"
|
|
384
|
+
if entry.hold_scope == HOLD_SCOPE_FLEET
|
|
385
|
+
else ""
|
|
386
|
+
)
|
|
387
|
+
lines = [f" hold-after: {entry.gate_reason}{scope_suffix}"]
|
|
329
388
|
if entry.resume_when:
|
|
330
389
|
probe = f" resume-when: {entry.resume_when}"
|
|
331
390
|
if entry.hold_probes:
|
|
@@ -416,6 +475,10 @@ def drive_queue_status(output_json: bool, config_path: Path) -> None:
|
|
|
416
475
|
"reason": e.gate_reason,
|
|
417
476
|
"resume_when": e.resume_when,
|
|
418
477
|
"probes": e.hold_probes,
|
|
478
|
+
# #2186: typed, so a client reads what this gate
|
|
479
|
+
# holds without parsing the `[fleet-wide ...]`
|
|
480
|
+
# suffix back out of the rendered text.
|
|
481
|
+
"scope": e.hold_scope,
|
|
419
482
|
}
|
|
420
483
|
for e in held
|
|
421
484
|
],
|
|
@@ -401,6 +401,13 @@ def _ensure_schema(conn: sqlite3.Connection) -> None:
|
|
|
401
401
|
hold_state TEXT NOT NULL DEFAULT '',
|
|
402
402
|
hold_probes INTEGER NOT NULL DEFAULT 0,
|
|
403
403
|
launch_host TEXT NOT NULL DEFAULT '',
|
|
404
|
+
-- #2186: how far a FIRED gate reaches. 'entry' (the default) holds
|
|
405
|
+
-- only entries whose own after_json names this row's key; 'fleet'
|
|
406
|
+
-- is the pre-#2186 whole-queue stop, kept for an explicit
|
|
407
|
+
-- --scope=fleet. NOT NULL DEFAULT 'entry' so a row written before
|
|
408
|
+
-- this column existed reads as the narrower scope, never a silent
|
|
409
|
+
-- fleet-wide one — see coord.drive_queue.QueueEntry.hold_scope.
|
|
410
|
+
hold_scope TEXT NOT NULL DEFAULT 'entry',
|
|
404
411
|
UNIQUE(repo_name, issue_number)
|
|
405
412
|
);
|
|
406
413
|
|
|
@@ -717,6 +724,13 @@ def _migrate_add_columns(conn: sqlite3.Connection) -> None:
|
|
|
717
724
|
# carries its age instead of rendering a stale snapshot as current
|
|
718
725
|
# state. NULL for every row predating this migration.
|
|
719
726
|
"ALTER TABLE drive_queue ADD COLUMN reason_at REAL",
|
|
727
|
+
# #2186: deploy-gate SCOPE — see the CREATE TABLE comment above and
|
|
728
|
+
# coord/drive_queue.py's HOLD_SCOPE_ENTRY/HOLD_SCOPE_FLEET. Every row
|
|
729
|
+
# predating this migration (and every armed-but-not-yet-fired gate)
|
|
730
|
+
# defaults to 'entry', the narrower reading — a fired gate on such a
|
|
731
|
+
# row holds only its own dependents rather than the whole queue, which
|
|
732
|
+
# is the #2186 fix itself, not just a schema detail.
|
|
733
|
+
"ALTER TABLE drive_queue ADD COLUMN hold_scope TEXT NOT NULL DEFAULT 'entry'",
|
|
720
734
|
]
|
|
721
735
|
for sql in migrations:
|
|
722
736
|
try:
|