code-coordinator 0.5.73__tar.gz → 0.5.75__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.73 → code_coordinator-0.5.75}/CLAUDE.md +2 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/PKG-INFO +1 -1
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/SOURCES.txt +6 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/scm_file_list.json +6 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/cli.py +5 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/merge.py +39 -0
- code_coordinator-0.5.75/coord/commands/repo.py +368 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/status.py +56 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/github_ops.py +82 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/merge_queue.py +77 -0
- code_coordinator-0.5.75/coord/repo_edit.py +211 -0
- code_coordinator-0.5.75/coord/repo_onboard.py +999 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/AGENT_OPERATIONS.md +63 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_merge.py +163 -0
- code_coordinator-0.5.75/tests/test_cli_repo_2220.py +468 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_merge_queue.py +65 -0
- code_coordinator-0.5.75/tests/test_repo_edit_2220.py +225 -0
- code_coordinator-0.5.75/tests/test_repo_onboard_2220.py +520 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_thin_client_board_audit.py +7 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.gitignore +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/GOAL.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/LICENSE +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/MANIFEST.in +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/README.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/__init__.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/agent.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/audit.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/board_service.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/brain.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/claim.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/client.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/comments.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/config.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dao.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/assets/Gallery-da3qNiIw.js +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/assets/Terminal-skVFCxPU.js +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/assets/index-DltfZR5f.js +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/db.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deps.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/drive.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/events.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/filelock.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/freshness.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/gates.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/goal.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/context.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/models.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/render.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/units.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/hooks.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/interactive.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/models.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/network.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notify.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/openapi.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/parentage.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/plans.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/progress.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/release_window.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/reports.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/review.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/smoke.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/split_work.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/state.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/test_author.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/test_report.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/usage.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/install-agent.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/pyproject.toml +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/setup.cfg +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/__init__.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/conftest.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_config.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_db.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_events.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_init.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_models.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_network.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_session.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_split.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_state.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -84,6 +84,8 @@ coord retry|stop|resume <id> # Recovery; `coord done` ends th
|
|
|
84
84
|
```
|
|
85
85
|
Setup / diagnostics (discoverable via `--help`): `coord init`, `coord config`, `coord agent`, `coord serve`, `coord web`, `coord diagnose`, `coord sessions [--remote]`, `coord split`, `coord notifier` ([`docs/NOTIFIER.md`](docs/NOTIFIER.md)).
|
|
86
86
|
|
|
87
|
+
**Onboarding a repo is five layers, and every one fails silently (#2220).** `coord repo add <name> --github <owner/repo> --machines a,b,c` does the safely-automatable parts (reads the *real* default branch from GitHub, writes the entry into the coord-settings checkout, adds it to each machine, creates the `coord`/tier labels) and then prints the residue it deliberately did **not** do. `coord repo doctor <name>` is the part that matters: it probes all five layers from **live state, not config** — each agent's `/health` repo list, the clone on each machine, the labels that exist, whether any workflow triggers on `pull_request`, `CLAUDE.md`, graph freshness — and exits non-zero on any CRIT. `coord doctor` folds in the live-state layer for every repo, so a half-onboarded one shows up in the fleet report without anyone remembering to ask. See [`docs/AGENT_OPERATIONS.md`](docs/AGENT_OPERATIONS.md).
|
|
88
|
+
|
|
87
89
|
## Development
|
|
88
90
|
|
|
89
91
|
Always work in a virtualenv. Agent workers are spawned with the agent's own
|
|
@@ -111,6 +111,8 @@ coord/release_cordon.py
|
|
|
111
111
|
coord/release_propagate.py
|
|
112
112
|
coord/release_verify.py
|
|
113
113
|
coord/release_window.py
|
|
114
|
+
coord/repo_edit.py
|
|
115
|
+
coord/repo_onboard.py
|
|
114
116
|
coord/reports.py
|
|
115
117
|
coord/revalidate.py
|
|
116
118
|
coord/review.py
|
|
@@ -153,6 +155,7 @@ coord/commands/plan_followup.py
|
|
|
153
155
|
coord/commands/plans.py
|
|
154
156
|
coord/commands/portal.py
|
|
155
157
|
coord/commands/release.py
|
|
158
|
+
coord/commands/repo.py
|
|
156
159
|
coord/commands/report.py
|
|
157
160
|
coord/commands/review.py
|
|
158
161
|
coord/commands/scorecard.py
|
|
@@ -497,6 +500,7 @@ tests/test_cli_refine_board.py
|
|
|
497
500
|
tests/test_cli_release_preflight.py
|
|
498
501
|
tests/test_cli_release_propagate.py
|
|
499
502
|
tests/test_cli_release_window.py
|
|
503
|
+
tests/test_cli_repo_2220.py
|
|
500
504
|
tests/test_cli_scorecard.py
|
|
501
505
|
tests/test_cli_set_review_findings.py
|
|
502
506
|
tests/test_cli_status_advisory_terminal.py
|
|
@@ -666,6 +670,8 @@ tests/test_release_verify.py
|
|
|
666
670
|
tests/test_release_window.py
|
|
667
671
|
tests/test_remote_auto_prune.py
|
|
668
672
|
tests/test_remote_interactive_reaper.py
|
|
673
|
+
tests/test_repo_edit_2220.py
|
|
674
|
+
tests/test_repo_onboard_2220.py
|
|
669
675
|
tests/test_report_result_push.py
|
|
670
676
|
tests/test_reports.py
|
|
671
677
|
tests/test_retry.py
|
{code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -64,6 +64,7 @@
|
|
|
64
64
|
"coord/commands/plans.py",
|
|
65
65
|
"coord/commands/portal.py",
|
|
66
66
|
"coord/commands/release.py",
|
|
67
|
+
"coord/commands/repo.py",
|
|
67
68
|
"coord/commands/report.py",
|
|
68
69
|
"coord/commands/review.py",
|
|
69
70
|
"coord/commands/scorecard.py",
|
|
@@ -289,6 +290,8 @@
|
|
|
289
290
|
"coord/release_propagate.py",
|
|
290
291
|
"coord/release_verify.py",
|
|
291
292
|
"coord/release_window.py",
|
|
293
|
+
"coord/repo_edit.py",
|
|
294
|
+
"coord/repo_onboard.py",
|
|
292
295
|
"coord/reports.py",
|
|
293
296
|
"coord/revalidate.py",
|
|
294
297
|
"coord/review.py",
|
|
@@ -527,6 +530,7 @@
|
|
|
527
530
|
"tests/test_cli_release_preflight.py",
|
|
528
531
|
"tests/test_cli_release_propagate.py",
|
|
529
532
|
"tests/test_cli_release_window.py",
|
|
533
|
+
"tests/test_cli_repo_2220.py",
|
|
530
534
|
"tests/test_cli_scorecard.py",
|
|
531
535
|
"tests/test_cli_set_review_findings.py",
|
|
532
536
|
"tests/test_cli_status_advisory_terminal.py",
|
|
@@ -696,6 +700,8 @@
|
|
|
696
700
|
"tests/test_release_window.py",
|
|
697
701
|
"tests/test_remote_auto_prune.py",
|
|
698
702
|
"tests/test_remote_interactive_reaper.py",
|
|
703
|
+
"tests/test_repo_edit_2220.py",
|
|
704
|
+
"tests/test_repo_onboard_2220.py",
|
|
699
705
|
"tests/test_report_result_push.py",
|
|
700
706
|
"tests/test_reports.py",
|
|
701
707
|
"tests/test_retry.py",
|
|
@@ -141,6 +141,9 @@ from coord.commands.lifecycle import done, housekeeping, notify, resume, serve,
|
|
|
141
141
|
from coord.commands.milestone import milestone_group
|
|
142
142
|
from coord.commands.plans import plans_cmd
|
|
143
143
|
from coord.commands.release import release_group, release_preflight
|
|
144
|
+
# #2220: `coord repo add` / `coord repo doctor` — onboarding a repo, and
|
|
145
|
+
# verifying it actually happened across all five layers.
|
|
146
|
+
from coord.commands.repo import repo_group
|
|
144
147
|
from coord.commands.plan_followup import (
|
|
145
148
|
_dispatch_followup, # noqa: F401 — re-exported for tests
|
|
146
149
|
approve_plan,
|
|
@@ -449,6 +452,8 @@ main.add_command(release_preflight)
|
|
|
449
452
|
# the flat command above), grouped so the pre-tag and post-release halves of
|
|
450
453
|
# the release story are discoverable together.
|
|
451
454
|
main.add_command(release_group)
|
|
455
|
+
# #2220: repo onboarding + its verifier.
|
|
456
|
+
main.add_command(repo_group)
|
|
452
457
|
main.add_command(tui_group)
|
|
453
458
|
|
|
454
459
|
|
|
@@ -218,6 +218,37 @@ def _apply_ci_revalidation(
|
|
|
218
218
|
return deferred
|
|
219
219
|
|
|
220
220
|
|
|
221
|
+
def _reload_board_after_wait(board, *, dry_run: bool):
|
|
222
|
+
"""#2143: force a fresh board read after ``_apply_ci_revalidation``'s
|
|
223
|
+
``wait_for_ci_settle`` poll — which, like ``_apply_revalidation``'s
|
|
224
|
+
composite/solo suite runs, can hold the caller for minutes.
|
|
225
|
+
|
|
226
|
+
``_apply_revalidation`` already refreshes the board it hands back, but
|
|
227
|
+
only when *it* recorded a new verdict; it has no way to know a CI-settle
|
|
228
|
+
wait ran afterwards. Real state can change on GitHub during that wait —
|
|
229
|
+
most dangerously a review approval landing, or a concurrent merge driver
|
|
230
|
+
(the drive-queue timer, another operator) merging the exact branch this
|
|
231
|
+
run is about to act on — and `merge_queue.process()` must not evaluate
|
|
232
|
+
review/smoke gates against a *board* snapshot that predates any of it
|
|
233
|
+
(the 2026-08-12 incident: a review approved 89s into the wait was still
|
|
234
|
+
reported as unapproved because the pre-wait board was never re-read).
|
|
235
|
+
|
|
236
|
+
Unconditional (not "only when something looks stale"): the risk here is
|
|
237
|
+
a stale *read*, and there's no cheap way to tell "nothing changed" from
|
|
238
|
+
"something changed but we didn't notice" without just re-reading. One
|
|
239
|
+
extra ``load_board()`` is a rounding error next to the suite run(s) or
|
|
240
|
+
the CI-settle poll that just happened. Under ``--dry-run`` nothing was
|
|
241
|
+
triggered (no wait actually ran), so the board is left untouched.
|
|
242
|
+
"""
|
|
243
|
+
if dry_run:
|
|
244
|
+
return board
|
|
245
|
+
from coord.models import Board as _Board # noqa: PLC0415
|
|
246
|
+
from coord.state import load_board as _load_board # noqa: PLC0415
|
|
247
|
+
|
|
248
|
+
refreshed = _load_board()
|
|
249
|
+
return refreshed if refreshed is not None else _Board(active=[], completed=[])
|
|
250
|
+
|
|
251
|
+
|
|
221
252
|
def _dispatch_conflict_fixes(events, config, *, dry_run: bool) -> None:
|
|
222
253
|
"""#241: classify any conflict events and dispatch a conflict-fix worker
|
|
223
254
|
for the eligible ones. Mutates each conflict event's ``ev.entry.state``
|
|
@@ -1564,6 +1595,10 @@ def merge(
|
|
|
1564
1595
|
only_items, board_only, cfg_only, ci_store_only, gh_ops,
|
|
1565
1596
|
dry_run=dry_run,
|
|
1566
1597
|
)
|
|
1598
|
+
# #2143: the CI-settle wait just above can run for minutes —
|
|
1599
|
+
# re-read the board so the gates `process()` runs below see
|
|
1600
|
+
# whatever landed on GitHub during it, not the pre-wait snapshot.
|
|
1601
|
+
board_only = _reload_board_after_wait(board_only, dry_run=dry_run)
|
|
1567
1602
|
# #1925: an entry deferred by the CI-settle wait above must not go
|
|
1568
1603
|
# through process() this pass — that would immediately re-derive the
|
|
1569
1604
|
# exact self-triggered "unknown" reading the wait was just trying to
|
|
@@ -1870,6 +1905,10 @@ def merge(
|
|
|
1870
1905
|
deferred_ci = _apply_ci_revalidation(
|
|
1871
1906
|
pending, board, cfg, ci_store, gh_ops, dry_run=dry_run,
|
|
1872
1907
|
)
|
|
1908
|
+
# #2143: the CI-settle wait just above can run for minutes —
|
|
1909
|
+
# re-read the board so the gates `process()` runs below see
|
|
1910
|
+
# whatever landed on GitHub during it, not the pre-wait snapshot.
|
|
1911
|
+
board = _reload_board_after_wait(board, dry_run=dry_run)
|
|
1873
1912
|
# #1925: entries the CI-settle wait above gave up on while still only
|
|
1874
1913
|
# seeing the registration-gap symptom must not go through process() this
|
|
1875
1914
|
# pass — see `_apply_ci_revalidation`'s docstring. They keep their
|
|
@@ -0,0 +1,368 @@
|
|
|
1
|
+
"""``coord repo add`` / ``coord repo doctor`` — onboarding a repo, and
|
|
2
|
+
checking that it actually happened (#2220).
|
|
3
|
+
|
|
4
|
+
Onboarding a repo is ~14 steps across five layers (config, three machines,
|
|
5
|
+
GitHub, the repo's own contents, the graph) with no command, no checklist and
|
|
6
|
+
no verifier — reconstructed from memory each time, and **every layer fails
|
|
7
|
+
silently**. ``stick-demo`` sat two-thirds onboarded until ``stick-demo#1`` died
|
|
8
|
+
of it, having burned both drive attempts, while ``coord config``, ``coord
|
|
9
|
+
status`` and ``coord assign --dry-run`` all reported the dispatch as fine.
|
|
10
|
+
|
|
11
|
+
Of the two commands here the **second is the one that matters**. A runbook is
|
|
12
|
+
the weakest available answer and this codebase already has the proof:
|
|
13
|
+
``docs/GRAPHIFY_SETUP.md`` is exactly that shape, and graphify has still fallen
|
|
14
|
+
by the wayside more than once because nothing checks it. What holds is a
|
|
15
|
+
checkable gate — ``coord diagnose --graph``, ``coord doctor``, ``coord release
|
|
16
|
+
verify`` all work because they answer *is it true right now*, not *did you
|
|
17
|
+
remember*.
|
|
18
|
+
|
|
19
|
+
``coord repo add`` therefore does only the mechanical, safely-automatable parts
|
|
20
|
+
and **prints the residue it deliberately did not do**, rather than pretending
|
|
21
|
+
completeness. The parts it skips (clone, agent restart, CLAUDE.md, CI workflow)
|
|
22
|
+
are the ones a wrong guess makes worse, and they are exactly what ``coord repo
|
|
23
|
+
doctor`` then verifies.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
from __future__ import annotations
|
|
27
|
+
|
|
28
|
+
import sys
|
|
29
|
+
from pathlib import Path
|
|
30
|
+
|
|
31
|
+
import click
|
|
32
|
+
|
|
33
|
+
from coord.commands._common import _CONFIG_OPTION, _load_config
|
|
34
|
+
|
|
35
|
+
# Reuse the fleet's own definition of where the tracked config lives (#1779) —
|
|
36
|
+
# `~/src/coord-settings/coord/coordinator.yml`, NOT the `~/.coord/` symlink
|
|
37
|
+
# (#1832): edits must land in the checkout so they can be committed, reviewed
|
|
38
|
+
# and pulled onto the daemon host.
|
|
39
|
+
from coord.fleet_config_health import TRACKED_CONFIG_REL, default_settings_dir
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@click.group("repo", help="Add a repo to the fleet, and verify it is actually onboarded.")
|
|
43
|
+
def repo_group() -> None:
|
|
44
|
+
"""Repo onboarding (#2220)."""
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def _resolve_write_target(explicit: Path | None) -> Path:
|
|
48
|
+
"""Where ``coord repo add`` writes.
|
|
49
|
+
|
|
50
|
+
Defaults to the coord-settings checkout's tracked file rather than
|
|
51
|
+
whatever ``resolve_config_path()`` returns, because the live
|
|
52
|
+
``~/.coord/coordinator.yml`` is a *symlink* into that checkout: writing
|
|
53
|
+
through the symlink produces an untracked, uncommitted change to the
|
|
54
|
+
fleet's governing config with nothing to review and nothing to pull
|
|
55
|
+
(#1779/#1832). Refuses rather than falling back when the checkout is
|
|
56
|
+
absent — a machine with no coord-settings checkout is deliberately not
|
|
57
|
+
allowed to edit the fleet's config.
|
|
58
|
+
"""
|
|
59
|
+
if explicit is not None:
|
|
60
|
+
return explicit
|
|
61
|
+
tracked = default_settings_dir() / TRACKED_CONFIG_REL
|
|
62
|
+
if not tracked.exists():
|
|
63
|
+
raise click.ClickException(
|
|
64
|
+
f"no coord-settings checkout at {default_settings_dir()} (expected "
|
|
65
|
+
f"{tracked}). `coord repo add` writes the TRACKED config so the "
|
|
66
|
+
"change can be committed, reviewed and pulled — it will not write "
|
|
67
|
+
"through the ~/.coord symlink (#1832). Clone coord-settings, set "
|
|
68
|
+
"$COORD_SETTINGS_DIR, or pass --config explicitly."
|
|
69
|
+
)
|
|
70
|
+
return tracked
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@repo_group.command(
|
|
74
|
+
"add",
|
|
75
|
+
help=(
|
|
76
|
+
"Write a new repo's coordinator.yml entry into the coord-settings "
|
|
77
|
+
"checkout, add it to the named machines, create the `coord` and tier "
|
|
78
|
+
"labels — then print the residue it deliberately did NOT do."
|
|
79
|
+
),
|
|
80
|
+
)
|
|
81
|
+
@click.argument("name")
|
|
82
|
+
@click.option("--github", "github_slug", required=True, help="owner/repo on GitHub.")
|
|
83
|
+
@click.option(
|
|
84
|
+
"--machines", "machines_csv", default=None,
|
|
85
|
+
help="Comma-separated machine names that should serve this repo.",
|
|
86
|
+
)
|
|
87
|
+
@click.option(
|
|
88
|
+
"--repo-path", "repo_path_tmpl", default=None,
|
|
89
|
+
help=(
|
|
90
|
+
"Path to the clone on each machine. Default: ~/src/<name> — the fleet "
|
|
91
|
+
"convention, and the worker WORKTREE BASE, not a convenience checkout."
|
|
92
|
+
),
|
|
93
|
+
)
|
|
94
|
+
@click.option(
|
|
95
|
+
"--default-branch", "default_branch_override", default=None,
|
|
96
|
+
help=(
|
|
97
|
+
"Override the default branch instead of reading the real one from "
|
|
98
|
+
"GitHub. Use only when GitHub is unreachable — a default_branch that "
|
|
99
|
+
"disagrees with the repo's real default silently routes worker PRs to "
|
|
100
|
+
"the wrong base."
|
|
101
|
+
),
|
|
102
|
+
)
|
|
103
|
+
@click.option("--build-command", default=None, help="repos[].build_command.")
|
|
104
|
+
@click.option("--test-command", default=None, help="repos[].test_command.")
|
|
105
|
+
@click.option(
|
|
106
|
+
"--labels/--no-labels", "do_labels", default=True, show_default=True,
|
|
107
|
+
help="Create the `coord` and tier:small/tier:large labels on GitHub.",
|
|
108
|
+
)
|
|
109
|
+
@click.option(
|
|
110
|
+
"--dry-run", is_flag=True, default=False,
|
|
111
|
+
help="Print the edited config and the residue without writing anything.",
|
|
112
|
+
)
|
|
113
|
+
@click.option(
|
|
114
|
+
"--config", "config_path", type=click.Path(path_type=Path), default=None,
|
|
115
|
+
help="coordinator.yml to edit. Default: the coord-settings tracked file.",
|
|
116
|
+
)
|
|
117
|
+
def repo_add( # noqa: PLR0913 — one option per thing the command can set
|
|
118
|
+
name: str,
|
|
119
|
+
github_slug: str,
|
|
120
|
+
machines_csv: str | None,
|
|
121
|
+
repo_path_tmpl: str | None,
|
|
122
|
+
default_branch_override: str | None,
|
|
123
|
+
build_command: str | None,
|
|
124
|
+
test_command: str | None,
|
|
125
|
+
do_labels: bool, # noqa: FBT001
|
|
126
|
+
dry_run: bool, # noqa: FBT001
|
|
127
|
+
config_path: Path | None,
|
|
128
|
+
) -> None:
|
|
129
|
+
from coord.config import load as load_config # noqa: PLC0415
|
|
130
|
+
from coord.repo_edit import ( # noqa: PLC0415
|
|
131
|
+
RepoEditError,
|
|
132
|
+
add_repo_to_machine,
|
|
133
|
+
insert_repo_entry,
|
|
134
|
+
render_repo_entry,
|
|
135
|
+
)
|
|
136
|
+
from coord.repo_onboard import COORD_LABEL, TIER_LABELS # noqa: PLC0415
|
|
137
|
+
|
|
138
|
+
target = _resolve_write_target(config_path)
|
|
139
|
+
original = target.read_text(encoding="utf-8")
|
|
140
|
+
|
|
141
|
+
try:
|
|
142
|
+
cfg = load_config(target)
|
|
143
|
+
except Exception as exc: # noqa: BLE001
|
|
144
|
+
raise click.ClickException(f"{target} does not currently load: {exc}") from exc
|
|
145
|
+
|
|
146
|
+
if cfg.repo(name) is not None:
|
|
147
|
+
raise click.ClickException(
|
|
148
|
+
f"repo {name!r} already has a repos[] entry in {target} — use "
|
|
149
|
+
f"`coord repo doctor {name}` to find what is actually missing."
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
known = {m.name for m in cfg.machines}
|
|
153
|
+
machines = [m.strip() for m in (machines_csv or "").split(",") if m.strip()]
|
|
154
|
+
unknown = [m for m in machines if m not in known]
|
|
155
|
+
if unknown:
|
|
156
|
+
raise click.ClickException(
|
|
157
|
+
f"unknown machine(s) {unknown} — coordinator.yml has {sorted(known)}"
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
# ── The real default branch, read from GitHub rather than trusted ────
|
|
161
|
+
if default_branch_override:
|
|
162
|
+
default_branch = default_branch_override
|
|
163
|
+
branch_source = "--default-branch (NOT verified against GitHub)"
|
|
164
|
+
else:
|
|
165
|
+
from coord import github_ops # noqa: PLC0415
|
|
166
|
+
|
|
167
|
+
try:
|
|
168
|
+
default_branch = github_ops.get_repo_default_branch(github_slug)
|
|
169
|
+
except Exception as exc: # noqa: BLE001
|
|
170
|
+
raise click.ClickException(
|
|
171
|
+
f"could not read {github_slug}'s default branch from GitHub: "
|
|
172
|
+
f"{exc}. Fix `gh` auth, or pass --default-branch explicitly "
|
|
173
|
+
"(and know that an unverified value silently routes worker PRs "
|
|
174
|
+
"to the wrong base)."
|
|
175
|
+
) from exc
|
|
176
|
+
branch_source = f"read from GitHub ({github_slug})"
|
|
177
|
+
|
|
178
|
+
entry = render_repo_entry(
|
|
179
|
+
name, github_slug, default_branch,
|
|
180
|
+
build_command=build_command, test_command=test_command,
|
|
181
|
+
)
|
|
182
|
+
try:
|
|
183
|
+
updated = insert_repo_entry(original, entry)
|
|
184
|
+
path_tmpl = repo_path_tmpl or f"~/src/{name}"
|
|
185
|
+
for machine in machines:
|
|
186
|
+
updated = add_repo_to_machine(updated, machine, name, path_tmpl)
|
|
187
|
+
except RepoEditError as exc:
|
|
188
|
+
raise click.ClickException(str(exc)) from exc
|
|
189
|
+
|
|
190
|
+
# ── Seatbelt: the edit must produce a config that LOADS and contains
|
|
191
|
+
# what we think it contains. A line-level edit that "worked" but left a
|
|
192
|
+
# repo unroutable is worse than no command at all (#2220's whole thesis).
|
|
193
|
+
import tempfile # noqa: PLC0415
|
|
194
|
+
|
|
195
|
+
with tempfile.NamedTemporaryFile(
|
|
196
|
+
"w", suffix=".yml", delete=False, encoding="utf-8"
|
|
197
|
+
) as fh:
|
|
198
|
+
fh.write(updated)
|
|
199
|
+
probe_path = Path(fh.name)
|
|
200
|
+
try:
|
|
201
|
+
new_cfg = load_config(probe_path)
|
|
202
|
+
except Exception as exc: # noqa: BLE001
|
|
203
|
+
raise click.ClickException(
|
|
204
|
+
f"refusing to write: the edited config does not parse ({exc}). "
|
|
205
|
+
f"{target} is unchanged."
|
|
206
|
+
) from exc
|
|
207
|
+
finally:
|
|
208
|
+
probe_path.unlink(missing_ok=True)
|
|
209
|
+
|
|
210
|
+
if new_cfg.repo(name) is None:
|
|
211
|
+
raise click.ClickException(
|
|
212
|
+
f"refusing to write: the edit parsed but repo {name!r} is not in "
|
|
213
|
+
f"the result. {target} is unchanged."
|
|
214
|
+
)
|
|
215
|
+
landed = [m.name for m in new_cfg.machines if name in (m.repos or [])]
|
|
216
|
+
missing = [m for m in machines if m not in landed]
|
|
217
|
+
if missing:
|
|
218
|
+
raise click.ClickException(
|
|
219
|
+
f"refusing to write: the edit parsed but machine(s) {missing} do "
|
|
220
|
+
f"not list {name!r}. {target} is unchanged."
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
if dry_run:
|
|
224
|
+
click.echo(f"--dry-run: would write {target}")
|
|
225
|
+
click.echo(updated)
|
|
226
|
+
else:
|
|
227
|
+
target.write_text(updated, encoding="utf-8")
|
|
228
|
+
click.echo(f"✓ wrote repos[{name}] to {target}")
|
|
229
|
+
click.echo(f" default_branch: {default_branch} ({branch_source})")
|
|
230
|
+
if landed:
|
|
231
|
+
click.echo(f" machines: {', '.join(landed)}")
|
|
232
|
+
|
|
233
|
+
# ── Labels ───────────────────────────────────────────────────────────
|
|
234
|
+
created: list[str] = []
|
|
235
|
+
label_failures: list[str] = []
|
|
236
|
+
if do_labels and not dry_run:
|
|
237
|
+
from coord import github_ops # noqa: PLC0415
|
|
238
|
+
|
|
239
|
+
for label, colour, desc in (
|
|
240
|
+
(COORD_LABEL, "0e8a16", "Managed by the coord Pipeline"),
|
|
241
|
+
(TIER_LABELS[0], "c2e0c6", "Route to the small/cheap model"),
|
|
242
|
+
(TIER_LABELS[1], "5319e7", "Route to the large model"),
|
|
243
|
+
):
|
|
244
|
+
try:
|
|
245
|
+
github_ops.create_label(
|
|
246
|
+
github_slug, label, color=colour, description=desc
|
|
247
|
+
)
|
|
248
|
+
created.append(label)
|
|
249
|
+
except Exception as exc: # noqa: BLE001
|
|
250
|
+
label_failures.append(f"{label}: {exc}")
|
|
251
|
+
if created:
|
|
252
|
+
click.echo(f"✓ labels ensured on {github_slug}: {', '.join(created)}")
|
|
253
|
+
for failure in label_failures:
|
|
254
|
+
click.echo(f"⚠ label creation failed — {failure}", err=True)
|
|
255
|
+
|
|
256
|
+
# ── Residue: what this command deliberately did NOT do ───────────────
|
|
257
|
+
click.echo("")
|
|
258
|
+
click.echo("NOT DONE — these need a human, and `coord repo doctor` checks each:")
|
|
259
|
+
tracked = default_settings_dir() / TRACKED_CONFIG_REL
|
|
260
|
+
if target == tracked:
|
|
261
|
+
click.echo(
|
|
262
|
+
f" 1. commit + push in {default_settings_dir()}, then `git pull` on "
|
|
263
|
+
"the daemon host — the fleet runs the COMMITTED config"
|
|
264
|
+
)
|
|
265
|
+
else:
|
|
266
|
+
click.echo(
|
|
267
|
+
f" 1. commit + push {target} wherever it is tracked, then `git "
|
|
268
|
+
"pull` on the daemon host — the fleet runs the COMMITTED config"
|
|
269
|
+
)
|
|
270
|
+
for machine in machines or ["<each machine>"]:
|
|
271
|
+
click.echo(
|
|
272
|
+
f" 2. clone the repo to {repo_path_tmpl or f'~/src/{name}'} on "
|
|
273
|
+
f"{machine} — this is the worker WORKTREE BASE"
|
|
274
|
+
)
|
|
275
|
+
click.echo(
|
|
276
|
+
" 3. RESTART coord-agent on each of those machines. The repo list is "
|
|
277
|
+
"frozen at process start (#2219), so a running agent will refuse every "
|
|
278
|
+
"dispatch for this repo while config says it is supported. This cannot "
|
|
279
|
+
"run while headless workers are live."
|
|
280
|
+
)
|
|
281
|
+
click.echo(
|
|
282
|
+
" 4. add a CLAUDE.md to the repo — the Test agent auto-loads it and "
|
|
283
|
+
"the adversarial review prompt is assembled from it; without one, "
|
|
284
|
+
"reviews enforce nothing."
|
|
285
|
+
)
|
|
286
|
+
click.echo(
|
|
287
|
+
" 5. make sure at least one CI workflow triggers on `pull_request`. "
|
|
288
|
+
"If none does, expects_checks() reads 'CI exists' while zero checks "
|
|
289
|
+
"arrive and `checks_absent` blocks EVERY merge in this repo, forever."
|
|
290
|
+
)
|
|
291
|
+
click.echo(
|
|
292
|
+
" 6. set `test_command`/`ci_command`, `smoke_tests.capability_rules` "
|
|
293
|
+
"for this repo's paths, and (if it joins the oracle loop) "
|
|
294
|
+
"`acceptance.drivers`."
|
|
295
|
+
)
|
|
296
|
+
click.echo(
|
|
297
|
+
" 7. graphify build + `graphify hook install` + `core.hooksPath`, in "
|
|
298
|
+
"that order, per machine (docs/GRAPHIFY_SETUP.md)."
|
|
299
|
+
)
|
|
300
|
+
click.echo("")
|
|
301
|
+
click.echo(f"Then: coord repo doctor {name}")
|
|
302
|
+
|
|
303
|
+
|
|
304
|
+
@repo_group.command(
|
|
305
|
+
"doctor",
|
|
306
|
+
help=(
|
|
307
|
+
"Probe all five onboarding layers for a repo and report per-layer "
|
|
308
|
+
"status. Reads LIVE state — each agent's /health repo list, the labels "
|
|
309
|
+
"that exist on GitHub, whether any workflow triggers on pull_request — "
|
|
310
|
+
"not config. Exits non-zero on any CRIT so it can gate."
|
|
311
|
+
),
|
|
312
|
+
)
|
|
313
|
+
@click.argument("name")
|
|
314
|
+
@_CONFIG_OPTION
|
|
315
|
+
@click.option(
|
|
316
|
+
"--timeout", default=3.0, show_default=True, type=float,
|
|
317
|
+
help="Per-machine /health timeout (seconds).",
|
|
318
|
+
)
|
|
319
|
+
@click.option(
|
|
320
|
+
"--github/--no-github", "probe_github", default=True, show_default=True,
|
|
321
|
+
help="Probe GitHub (labels, workflows, CLAUDE.md). Off makes this offline.",
|
|
322
|
+
)
|
|
323
|
+
@click.option(
|
|
324
|
+
"--verbose", "-v", is_flag=True, default=False,
|
|
325
|
+
help="Show passing checks too, not just the residue.",
|
|
326
|
+
)
|
|
327
|
+
def repo_doctor(
|
|
328
|
+
name: str,
|
|
329
|
+
config_path: Path,
|
|
330
|
+
timeout: float,
|
|
331
|
+
probe_github: bool, # noqa: FBT001
|
|
332
|
+
verbose: bool, # noqa: FBT001
|
|
333
|
+
) -> None:
|
|
334
|
+
from coord import repo_onboard # noqa: PLC0415
|
|
335
|
+
from coord.network import check_all # noqa: PLC0415
|
|
336
|
+
|
|
337
|
+
cfg = _load_config(config_path)
|
|
338
|
+
|
|
339
|
+
repo = cfg.repo(name)
|
|
340
|
+
if repo is None:
|
|
341
|
+
known = [r.name for r in cfg.repos]
|
|
342
|
+
click.echo(
|
|
343
|
+
f"error: repo {name!r} is not in coordinator.yml (have: {known})",
|
|
344
|
+
err=True,
|
|
345
|
+
)
|
|
346
|
+
# Still render the report — "config.repo_missing" IS the finding, and
|
|
347
|
+
# a caller gating on this deserves the same structured output.
|
|
348
|
+
facts = repo_onboard.RepoFacts(name=name, configured=False)
|
|
349
|
+
for line in repo_onboard.format_report(
|
|
350
|
+
repo_onboard.evaluate(facts), verbose=verbose
|
|
351
|
+
):
|
|
352
|
+
click.echo(line)
|
|
353
|
+
sys.exit(1)
|
|
354
|
+
|
|
355
|
+
machines = [m for m in cfg.machines if name in (m.repos or [])]
|
|
356
|
+
statuses = check_all(machines, timeout=timeout) if machines else []
|
|
357
|
+
|
|
358
|
+
facts = repo_onboard.gather_facts(
|
|
359
|
+
cfg, name,
|
|
360
|
+
statuses=statuses,
|
|
361
|
+
probe_github=probe_github,
|
|
362
|
+
local_clone=repo_onboard.local_clone_path(cfg, name),
|
|
363
|
+
)
|
|
364
|
+
report = repo_onboard.evaluate(facts)
|
|
365
|
+
for line in repo_onboard.format_report(report, verbose=verbose):
|
|
366
|
+
click.echo(line)
|
|
367
|
+
if not report.ok:
|
|
368
|
+
sys.exit(1)
|
|
@@ -954,6 +954,42 @@ def _dispatch_blocker_lines_for_config_free(machine, cfg) -> list[tuple[bool, st
|
|
|
954
954
|
return out
|
|
955
955
|
|
|
956
956
|
|
|
957
|
+
def _repo_onboarding_lines(cfg, statuses) -> list[tuple[bool, str]]:
|
|
958
|
+
"""Render every configured repo's onboarding residue as ``coord doctor``
|
|
959
|
+
lines (:mod:`coord.repo_onboard`, #2220).
|
|
960
|
+
|
|
961
|
+
This is the wiring #2220 asks for: a half-onboarded repo shows up in the
|
|
962
|
+
fleet report *without anyone remembering to ask*. ``stick-demo`` sat
|
|
963
|
+
two-thirds onboarded for days and the only thing that ever noticed was a
|
|
964
|
+
queue entry dying of it.
|
|
965
|
+
|
|
966
|
+
Runs with ``probe_github=False`` and no graph probe, so it costs **zero**
|
|
967
|
+
extra round trips — it re-reads the ``/health`` bodies this command has
|
|
968
|
+
already fetched. That is enough for the finding that actually bit: the
|
|
969
|
+
#2219 agent/config repo skew is visible from ``/health`` alone. The GitHub
|
|
970
|
+
and repo-contents layers need ``coord repo doctor <name>``, which the
|
|
971
|
+
footer below points at.
|
|
972
|
+
|
|
973
|
+
Mirrors :func:`_unit_drift_lines`/:func:`_release_lag_lines`: same
|
|
974
|
+
computation as the dedicated command (#2096's "two surfaces, one
|
|
975
|
+
function" rule), projected into doctor's output. Best-effort — a repo whose
|
|
976
|
+
facts can't be gathered is skipped rather than breaking the fleet report.
|
|
977
|
+
"""
|
|
978
|
+
from coord import repo_onboard # noqa: PLC0415
|
|
979
|
+
|
|
980
|
+
out: list[tuple[bool, str]] = []
|
|
981
|
+
for repo in getattr(cfg, "repos", None) or []:
|
|
982
|
+
try:
|
|
983
|
+
facts = repo_onboard.gather_facts(
|
|
984
|
+
cfg, repo.name, statuses=statuses, probe_github=False
|
|
985
|
+
)
|
|
986
|
+
report = repo_onboard.evaluate(facts)
|
|
987
|
+
except Exception: # noqa: BLE001 — never break the fleet report
|
|
988
|
+
continue
|
|
989
|
+
out.extend(repo_onboard.doctor_summary_lines(report))
|
|
990
|
+
return out
|
|
991
|
+
|
|
992
|
+
|
|
957
993
|
def _release_lag_lines(report) -> list[tuple[bool, str]]:
|
|
958
994
|
"""Render a :class:`coord.release_verify.VerifyReport`'s findings as
|
|
959
995
|
``coord doctor`` lines (#2082).
|
|
@@ -1135,6 +1171,26 @@ def doctor(
|
|
|
1135
1171
|
for reason in reasons:
|
|
1136
1172
|
click.echo(f" ✗ capability {cap!r} claimed but unmet — {reason}")
|
|
1137
1173
|
|
|
1174
|
+
# #2220: is any repo only half-onboarded? Costs nothing extra — reuses the
|
|
1175
|
+
# `/health` bodies fetched above. Skipped under `--machine`, where the
|
|
1176
|
+
# per-machine slice would report every OTHER machine's repos as
|
|
1177
|
+
# "unreachable" purely because this run never probed them.
|
|
1178
|
+
if not machine_filter:
|
|
1179
|
+
onboarding_lines = _repo_onboarding_lines(cfg, statuses)
|
|
1180
|
+
if onboarding_lines:
|
|
1181
|
+
click.echo("")
|
|
1182
|
+
click.echo("repo onboarding (coord repo doctor):")
|
|
1183
|
+
for is_problem, line in onboarding_lines:
|
|
1184
|
+
click.echo(line)
|
|
1185
|
+
if is_problem:
|
|
1186
|
+
any_problem = True
|
|
1187
|
+
click.echo(
|
|
1188
|
+
" → this is the LIVE-state layer only. GitHub labels, the "
|
|
1189
|
+
"pull_request trigger, CLAUDE.md, the Test-stage command and "
|
|
1190
|
+
"graph freshness are NOT checked here: run "
|
|
1191
|
+
"`coord repo doctor <name>`"
|
|
1192
|
+
)
|
|
1193
|
+
|
|
1138
1194
|
# #2082: is the fleet actually running the released version? On
|
|
1139
1195
|
# 2026-08-10 it was eleven releases behind (v0.5.15 vs PyPI's v0.5.26)
|
|
1140
1196
|
# and nothing routine said so — `coord release verify` already computed
|