code-coordinator 0.5.131__tar.gz → 0.5.133__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.133/PKG-INFO +512 -0
- code_coordinator-0.5.133/README.md +472 -0
- code_coordinator-0.5.133/code_coordinator.egg-info/PKG-INFO +512 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/drive_queue.py +249 -28
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_drive_queue.py +253 -0
- code_coordinator-0.5.131/PKG-INFO +0 -627
- code_coordinator-0.5.131/README.md +0 -587
- code_coordinator-0.5.131/code_coordinator.egg-info/PKG-INFO +0 -627
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/.gitignore +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/CLAUDE.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/GOAL.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/LICENSE +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/MANIFEST.in +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/__init__.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/agent.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/audit.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/block_log.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/board_service.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/brain.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/claim.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/cli.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/client.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/comments.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/config.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dao.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/db.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/deps.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/drive.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/events.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/filelock.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/freshness.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/gates.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/goal.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/context.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/models.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/render.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/health/units.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/hooks.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/interactive.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/models.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/network.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/notify.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/openapi.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/parentage.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/plans.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/progress.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/release_window.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/reports.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/review.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/smoke.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/split_work.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/state.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/test_author.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/test_report.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/usage.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/install-agent.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/pyproject.toml +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/setup.cfg +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/__init__.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/conftest.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_config.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_db.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_events.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_init.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_models.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_network.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_review.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_session.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_split.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_state.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.131 → code_coordinator-0.5.133}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -0,0 +1,512 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: code-coordinator
|
|
3
|
+
Version: 0.5.133
|
|
4
|
+
Summary: Coordinate Claude Code workers across multiple machines and repos.
|
|
5
|
+
Author-email: John Donaghy <johnfdonaghy@gmail.com>
|
|
6
|
+
License-Expression: LicenseRef-FSL-1.1-MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/JDonaghy/claude-coordinator
|
|
8
|
+
Project-URL: Repository, https://github.com/JDonaghy/claude-coordinator
|
|
9
|
+
Project-URL: Issues, https://github.com/JDonaghy/claude-coordinator/issues
|
|
10
|
+
Keywords: claude,claude-code,multi-agent,coordinator,automation
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
16
|
+
Requires-Python: >=3.12
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
License-File: LICENSE
|
|
19
|
+
Requires-Dist: click>=8.1
|
|
20
|
+
Requires-Dist: pyyaml>=6.0
|
|
21
|
+
Requires-Dist: httpx>=0.27
|
|
22
|
+
Requires-Dist: platformdirs>=4.0
|
|
23
|
+
Requires-Dist: tzdata; sys_platform == "win32"
|
|
24
|
+
Provides-Extra: server
|
|
25
|
+
Requires-Dist: starlette>=0.37; extra == "server"
|
|
26
|
+
Requires-Dist: uvicorn>=0.30; extra == "server"
|
|
27
|
+
Requires-Dist: websockets>=12.0; extra == "server"
|
|
28
|
+
Requires-Dist: psutil>=5.9; extra == "server"
|
|
29
|
+
Provides-Extra: all
|
|
30
|
+
Requires-Dist: code-coordinator[server]; extra == "all"
|
|
31
|
+
Provides-Extra: dev
|
|
32
|
+
Requires-Dist: code-coordinator[server]; extra == "dev"
|
|
33
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
34
|
+
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
|
|
35
|
+
Requires-Dist: pytest-xdist>=3.5; extra == "dev"
|
|
36
|
+
Requires-Dist: setuptools>=68; extra == "dev"
|
|
37
|
+
Requires-Dist: setuptools-scm>=8; extra == "dev"
|
|
38
|
+
Requires-Dist: wheel; extra == "dev"
|
|
39
|
+
Dynamic: license-file
|
|
40
|
+
|
|
41
|
+
# code-coordinator
|
|
42
|
+
|
|
43
|
+
[](https://pypi.org/project/code-coordinator/)
|
|
44
|
+
[](https://pypi.org/project/code-coordinator/)
|
|
45
|
+
[](https://github.com/JDonaghy/code-coordinator/actions/workflows/test.yml)
|
|
46
|
+
[](LICENSE)
|
|
47
|
+
|
|
48
|
+
Coordinate a fleet of Claude Code workers — and human-attended interactive `claude` sessions —
|
|
49
|
+
across multiple repos and machines, from a single board.
|
|
50
|
+
|
|
51
|
+
Claude Code is excellent at one task at a time. Real projects have dozens of issues in flight,
|
|
52
|
+
spread across repos, each wanting its own session, its own scoping, and its own review.
|
|
53
|
+
`code-coordinator` runs many workers in parallel — one machine with worktrees, or several over
|
|
54
|
+
Tailscale — behind a coordinator that picks the model, avoids file conflicts, routes by
|
|
55
|
+
capability, and drives every issue through a gated **Work → Test → Review → Merge** pipeline.
|
|
56
|
+
Every stage can run as a cheap headless `claude -p` worker *or* a human-attended interactive
|
|
57
|
+
session you launch and steer from the board.
|
|
58
|
+
|
|
59
|
+
No Anthropic API key: it drives the `claude` CLI itself, billed on your existing Max/Pro
|
|
60
|
+
subscription. There's no orchestration daemon deciding what to do — a human approves every
|
|
61
|
+
dispatch — but once approved, a single command can carry one issue unattended from a GitHub
|
|
62
|
+
issue to a merged, reviewed, tested PR.
|
|
63
|
+
|
|
64
|
+
## This repo builds itself
|
|
65
|
+
|
|
66
|
+
`code-coordinator` is developed largely *by* code-coordinator. Every commit below is a worker's
|
|
67
|
+
own diff, produced through the Work → Test → Review → Merge pipeline this tool implements:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
$ git log --oneline -5
|
|
71
|
+
14a2d930 fix(#2356 review): make the already-on-origin test actually exercise the fix
|
|
72
|
+
0b685d1c fix(#2356): don't FAIL an assignment whose commit already reached origin
|
|
73
|
+
35ed648c fix(#2335): route coord milestone dispatch bulk mode through the drive-queue
|
|
74
|
+
db3e5a50 fix(#2352): serialize coord acceptance record per (repo, issue)
|
|
75
|
+
e4ff1986 docs: propose a WSL2 Windows worker for quadraui/vimcode Win-GUI ports
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
~1,800 commits since the repo opened three months ago — roughly 164k lines of Python and 66k
|
|
79
|
+
lines of Rust (plus a 48k-line in-crate acceptance suite for the terminal UI), backed by over
|
|
80
|
+
10,000 test functions across 336 test files, with GitHub Actions cutting a new PyPI + binary
|
|
81
|
+
release on most merges to `main`. It's also used day to day to coordinate work across several
|
|
82
|
+
*other* repos — a Rust TUI framework, a couple of application codebases, and this one.
|
|
83
|
+
|
|
84
|
+
## The problem
|
|
85
|
+
|
|
86
|
+
Running one Claude Code session at a time is a bottleneck. You context-switch between issues,
|
|
87
|
+
lose session state, and can't parallelize. A complex issue gets one shot; if the session dies
|
|
88
|
+
mid-flight, you start over. There's no audit trail, no conflict detection, and no way to see
|
|
89
|
+
what happened last Thursday.
|
|
90
|
+
|
|
91
|
+
## The solution
|
|
92
|
+
|
|
93
|
+
One config file describes your repos and machines. Workers run in isolated git worktrees so
|
|
94
|
+
they never step on each other. The coordinator tracks what's in flight, prevents conflicts,
|
|
95
|
+
sequences PRs, and moves each issue through a gated pipeline. You approve the decisions; the
|
|
96
|
+
workers do the work.
|
|
97
|
+
|
|
98
|
+
Works on **one machine** with multiple worktrees. Add more machines over Tailscale for true
|
|
99
|
+
parallelism, capability routing (a GTK box, a browser box), or independent review.
|
|
100
|
+
|
|
101
|
+
## How it works
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
~/.coord/coord.db (SQLite) · coordinator.yml · GitHub (issues / PRs / comments)
|
|
105
|
+
▲
|
|
106
|
+
┌─────────────────────────┼─────────────────────────┐
|
|
107
|
+
│ │ │
|
|
108
|
+
coord CLI coord-tui coord web
|
|
109
|
+
(Python) (Rust board) (phone PWA + REST)
|
|
110
|
+
│ │ │
|
|
111
|
+
└──────────── coord serve ─┴─ (optional daemon, port 7435) ──┘
|
|
112
|
+
│ canonical board for thin clients
|
|
113
|
+
│
|
|
114
|
+
│ HTTP (port 7433)
|
|
115
|
+
▼
|
|
116
|
+
┌────────────────┐
|
|
117
|
+
│ coord agent │ one per machine
|
|
118
|
+
│ (HTTP server) │
|
|
119
|
+
└───────┬────────┘
|
|
120
|
+
│ spawns
|
|
121
|
+
┌───────────────┴───────────────┐
|
|
122
|
+
▼ ▼
|
|
123
|
+
claude -p worker interactive claude session
|
|
124
|
+
(headless, isolated worktree) (human-attended, tmux)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
Three kinds of process:
|
|
128
|
+
|
|
129
|
+
1. **Coordinator clients** — the CLI (`coord`), the terminal board (`coord-tui`), and the web
|
|
130
|
+
dashboard / phone PWA (`coord web`). They read shared state and dispatch work. All three are
|
|
131
|
+
**peers** of the same state, not layers — use whichever fits the task.
|
|
132
|
+
2. **Agent servers** — one `coord agent` per worker machine (port 7433). A dumb dispatcher: it
|
|
133
|
+
spawns and tracks worker processes and owns the worktrees and logs. All the intelligence
|
|
134
|
+
lives in the coordinator.
|
|
135
|
+
3. **Workers** — either a headless `claude -p` subprocess in an isolated worktree, or a
|
|
136
|
+
human-attended interactive `claude` session in a named tmux session driven from the board.
|
|
137
|
+
Both report their result through the same board seam.
|
|
138
|
+
|
|
139
|
+
State lives in SQLite (`~/.coord/`) plus GitHub issue comments — the durable message bus, where
|
|
140
|
+
every briefing, completion, failure, and review verdict is a comment carrying a
|
|
141
|
+
`<!-- coord:event=... -->` marker. Either can reconstruct the other. An optional control-center
|
|
142
|
+
daemon (`coord serve`) fronts one canonical DB so every client on the tailnet renders and drives
|
|
143
|
+
the same board.
|
|
144
|
+
|
|
145
|
+
## The pipeline: Work → Test → Review → Merge
|
|
146
|
+
|
|
147
|
+
Every issue moves through four gated stages, each runnable headless or interactively:
|
|
148
|
+
|
|
149
|
+
| Stage | What happens | Automated path | Interactive path |
|
|
150
|
+
|-------|--------------|----------------|-------------------|
|
|
151
|
+
| **Work** | Read the issue, write code, push a branch | `claude -p` worker | `coord assign --interactive` |
|
|
152
|
+
| **Test** | Build + run tests on capability-matched hardware; record a verdict | headless smoke assignment | `--smoke-of` testing agent |
|
|
153
|
+
| **Review** | A fresh, zero-context session reviews the diff against the repo's rules | `type="review"` worker on a *different* machine | `--review-of` reviewer |
|
|
154
|
+
| **Merge** | Rebase onto the base branch, resolve conflicts, run tests, merge | merge queue + auto-rebase | `--merge-of` merge agent |
|
|
155
|
+
|
|
156
|
+
Two things make the gate real rather than decorative:
|
|
157
|
+
|
|
158
|
+
- **Test precedes Review**, and Review is *held* until Test reports a `passed`/`skipped`
|
|
159
|
+
verdict — a work item stuck at Pending Test gets no review and never merges. A green verdict
|
|
160
|
+
is only as trustworthy as the suite behind it, so the Test stage prefers a repo's declared
|
|
161
|
+
`ci_command` over a narrower default, to keep "Test passed" meaning what CI would say.
|
|
162
|
+
- **A failed test routes exactly like a request-changes review** — both drop back to a fix on
|
|
163
|
+
the *same* branch, capped at a configurable retry count before escalating to a human, never
|
|
164
|
+
to an orphaned branch.
|
|
165
|
+
|
|
166
|
+
`coord notify` drives the automated legs (review-on-completion, fix-on-request-changes,
|
|
167
|
+
re-review-on-fix) — or `coord drive` (below) does the whole thing as one durable, resumable
|
|
168
|
+
run.
|
|
169
|
+
|
|
170
|
+
## Quick demo
|
|
171
|
+
|
|
172
|
+
The fastest path — drive one issue unattended, end to end:
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
pip install code-coordinator
|
|
176
|
+
coord init # detects repos, writes coordinator.yml
|
|
177
|
+
coord agent & # start the local worker dispatcher (port 7433)
|
|
178
|
+
|
|
179
|
+
coord drive myrepo 42 --model sonnet
|
|
180
|
+
# → dispatches Work, waits for the branch
|
|
181
|
+
# → runs Test on capability-matched hardware, records the verdict
|
|
182
|
+
# → dispatches an independent Review; on request-changes, loops a fix back through Work
|
|
183
|
+
# → rebases, resolves mechanical conflicts, and merges once Test + Review are both green
|
|
184
|
+
# exit 0: merged and verified against the remote default branch
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
`coord drive` is a resumable state machine over the board — re-running it on the same issue
|
|
188
|
+
picks up wherever the board actually is, so a killed terminal or a crashed daemon loses no
|
|
189
|
+
progress. For visibility into (or control over) each step, drive it by hand instead:
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
coord assign laptop myrepo 42 --model sonnet --briefing "Fix the auth middleware timeout"
|
|
193
|
+
coord watch <id> # live filtered output (stream-json events)
|
|
194
|
+
coord test <id> --passed # record the Test-gate verdict
|
|
195
|
+
coord pr <id> # open the PR + auto-dispatch an adversarial review
|
|
196
|
+
coord merge # once the review approves and CI is green
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Prefer a terminal UI over raw commands? `coord-tui` launches every stage — automated or
|
|
200
|
+
interactive — from a pipeline row's right-click menu; see
|
|
201
|
+
[Driving from coord-tui](#driving-from-coord-tui).
|
|
202
|
+
|
|
203
|
+
## Quick start
|
|
204
|
+
|
|
205
|
+
### 1. Install
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
pip install code-coordinator
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
The `coord` CLI is now on your PATH. The same package provides the agent server
|
|
212
|
+
(`coord agent`), so the coordinator side and the worker side share one install.
|
|
213
|
+
|
|
214
|
+
> **Developing the coordinator itself?** Clone the repo and `pip install -e .`. Reserve
|
|
215
|
+
> editable installs for development machines — agent machines should stay on PyPI installs (see
|
|
216
|
+
> [`docs/AGENT_OPERATIONS.md`](docs/AGENT_OPERATIONS.md)).
|
|
217
|
+
|
|
218
|
+
The terminal board, `coord-tui`, is a separate Rust binary — install a prebuilt release with
|
|
219
|
+
`coord tui update` (see [Driving from coord-tui](#driving-from-coord-tui)).
|
|
220
|
+
|
|
221
|
+
### 2. Configure
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
coord init # interactive wizard: detects repos in cwd and ~/src/, writes coordinator.yml
|
|
225
|
+
coord config # verify it parsed cleanly (prints the resolved config path)
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
Or copy `coordinator.example.yml` and edit by hand. `coordinator.yml` is gitignored — keep
|
|
229
|
+
secrets out of version control. Its canonical home is `~/.coord/coordinator.yml`, so the tool
|
|
230
|
+
runs on a machine with no repo checkout.
|
|
231
|
+
|
|
232
|
+
### 3. Start the agent server
|
|
233
|
+
|
|
234
|
+
```bash
|
|
235
|
+
coord agent & # port 7433; auto-detects the machine from hostname
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
For anything beyond a quick trial, install it as a systemd user service (auto-restart, survives
|
|
239
|
+
reboots, separate worker logs) with `install-agent.sh` — see [Scaling up](#scaling-up), which
|
|
240
|
+
uses the same script for additional machines.
|
|
241
|
+
|
|
242
|
+
### 4. Coordinate
|
|
243
|
+
|
|
244
|
+
Three peer clients drive the same board — pick per task, they don't conflict:
|
|
245
|
+
|
|
246
|
+
**`coord-tui`** — a terminal board with a live pipeline, right-click actions, and one-key
|
|
247
|
+
stage-to-stage handoffs. See [Driving from coord-tui](#driving-from-coord-tui).
|
|
248
|
+
|
|
249
|
+
**The `coord` CLI directly:**
|
|
250
|
+
|
|
251
|
+
```bash
|
|
252
|
+
coord status # machines, assignments, connectivity
|
|
253
|
+
coord drive myrepo 42 # or, step by step:
|
|
254
|
+
coord assign laptop myrepo 42 --model sonnet --briefing "Fix the auth bug"
|
|
255
|
+
coord watch <id> # live filtered output
|
|
256
|
+
coord test <id> --passed # record the Test-gate verdict
|
|
257
|
+
coord pr <id> # open the PR + adversarial review
|
|
258
|
+
coord notify # drive the auto-loop (run periodically)
|
|
259
|
+
coord merge # open + merge PRs in sequence
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**The `/coordinator` slash command in Claude Code** — open Claude Code in the repo and type
|
|
263
|
+
`/coordinator` for guided setup, triage, dispatch, monitoring, and PR creation.
|
|
264
|
+
|
|
265
|
+
To share one board across every Tailscale host, run the control-center daemon (`coord serve`,
|
|
266
|
+
port 7435) on an always-on machine; the CLI and TUI then read from it as thin clients. See
|
|
267
|
+
[`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md).
|
|
268
|
+
|
|
269
|
+
## Driving from coord-tui
|
|
270
|
+
|
|
271
|
+
`coord-tui` is the rich terminal board: a live pipeline view, a machines panel, an embedded
|
|
272
|
+
terminal for interactive sessions, SSE log tailing, and a per-issue usage view. Interaction is
|
|
273
|
+
**right-click-first** — right-click a pipeline row for its context menu; `?` opens a help
|
|
274
|
+
overlay and command palette.
|
|
275
|
+
|
|
276
|
+
Install or update it with the coordinator itself — no Rust toolchain needed:
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
coord tui update # downloads the release binary matching `coord --version`
|
|
280
|
+
coord tui status # check the installed version against the coordinator's
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
(Building from source is only for developing the TUI itself: `cd tui && cargo build`.)
|
|
284
|
+
|
|
285
|
+
The whole lifecycle can also be driven as **human-attended interactive sessions** launched from
|
|
286
|
+
a pipeline row's right-click menu — a testing agent, a reviewer, a merge agent, or a fix worker,
|
|
287
|
+
each recording its verdict through the same board seam as the headless path. Every stage also
|
|
288
|
+
has a `claude -p` automation peer, so attended and headless stages mix freely, and review/fix
|
|
289
|
+
can run on a remote machine over ssh+tmux for reviewer independence or capability routing.
|
|
290
|
+
|
|
291
|
+
Full keyboard reference, right-click menus, and stage-handoff details: press `?` in the TUI, or
|
|
292
|
+
see [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md).
|
|
293
|
+
|
|
294
|
+
## Milestones & epics
|
|
295
|
+
|
|
296
|
+
For work bigger than one issue, group issues under an **epic** — a GitHub tracking issue whose
|
|
297
|
+
body holds a `## Work order` block: a DAG of child issues (`- #762 {group: A, after: #761}`)
|
|
298
|
+
backed by GitHub's native sub-issues API. The issue pipeline above nests inside a **milestone
|
|
299
|
+
pipeline** so expensive gates are paid once per milestone, not once per issue:
|
|
300
|
+
|
|
301
|
+
| Gate | What it checks |
|
|
302
|
+
|------|-----------------|
|
|
303
|
+
| **A — contract** | A mock-first, black-box acceptance contract exists before any issue dispatches |
|
|
304
|
+
| **B — architecture** | An independent review confirms the *assembled* milestone matches the Gate-A contract |
|
|
305
|
+
| **C — acceptance** | The full accumulated acceptance suite is green (catches integration gaps between issues) |
|
|
306
|
+
| **D — ship** | Merges the milestone's feature branch to `develop`, gated on B (approved) and C (re-run live) |
|
|
307
|
+
|
|
308
|
+
```bash
|
|
309
|
+
coord milestone chat myrepo --new # steward session: draft the milestone + Work order DAG
|
|
310
|
+
coord milestone dispatch myrepo <epic> # dispatch the ready frontier; drain as deps clear
|
|
311
|
+
coord milestone drive myrepo <epic> # walk all four gates as one durable, resumable run
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
`coord milestone drive` is the milestone-scale analogue of `coord drive` — a board-backed gate
|
|
315
|
+
record tracks which gate a milestone is in and what it's waiting on, so a restarted daemon
|
|
316
|
+
resumes exactly where it left off rather than re-running a gate it already cleared.
|
|
317
|
+
|
|
318
|
+
In an **oracle-loop** milestone, acceptance tests are no longer worker-authored: an independent
|
|
319
|
+
agent writes them from the Gate-A contract before any code exists, delivers them to the worker
|
|
320
|
+
**read-only**, and the worker iterates against them until green — the sealed suite is then the
|
|
321
|
+
external trust gate, not a test the worker could have written to pass itself. See
|
|
322
|
+
[`docs/PIPELINE_V2.md`](docs/PIPELINE_V2.md) and [`docs/ORACLE_LOOP.md`](docs/ORACLE_LOOP.md).
|
|
323
|
+
|
|
324
|
+
## Features
|
|
325
|
+
|
|
326
|
+
- **No API key** — drives `claude -p` on your Max/Pro subscription; billing stays per-seat.
|
|
327
|
+
- **Two ways to run every stage** — cheap headless `claude -p` workers *or* human-attended
|
|
328
|
+
interactive sessions launched and steered from the board.
|
|
329
|
+
- **Single-machine first** — one agent server, many workers in isolated git worktrees; no
|
|
330
|
+
Tailscale needed. Add machines for parallelism, capability routing, or remote review.
|
|
331
|
+
- **Gated pipeline** — Work → Test → Review → Merge, with Test gating Review and CI/review/smoke
|
|
332
|
+
gating Merge.
|
|
333
|
+
- **One-command drive** — `coord drive` (one issue) and `coord milestone drive` (a whole
|
|
334
|
+
milestone) walk the full pipeline unattended as durable, resumable state machines.
|
|
335
|
+
- **Model tiering** — haiku for docs, sonnet for standard work, opus for architecture; `coord
|
|
336
|
+
fix` auto-escalates on failure.
|
|
337
|
+
- **Adversarial review** — a fresh, zero-context session reviews the diff against the repo's
|
|
338
|
+
own rules; request-changes dispatches a fix on the same branch, then re-reviews, capped before
|
|
339
|
+
escalating to a human.
|
|
340
|
+
- **Milestones & epics** — group issues under an epic with a `## Work order` DAG; amortize
|
|
341
|
+
architecture and acceptance gates across the milestone; ship as one unit.
|
|
342
|
+
- **Merge queue** — dependency-aware sequencing, CI gating, auto-rebase of mechanical conflicts,
|
|
343
|
+
and escalation of semantic ones.
|
|
344
|
+
- **Capability-aware testing** — routes platform-specific suites to capable hardware (a GTK box,
|
|
345
|
+
a browser box) via declared machine capabilities.
|
|
346
|
+
- **Observability** — per-issue/repo/window cost and token usage, a durable audit trail, named
|
|
347
|
+
reports folded out of it, stream-json log tailing, and live `STATUS:`/`STUCK:` progress lines.
|
|
348
|
+
- **Crash recovery** — board state reconciles against live agent and git state; interactive
|
|
349
|
+
tmux sessions survive a TUI crash and are reattachable.
|
|
350
|
+
- **Web dashboard + phone PWA** — a board view and a React/Vite phone control-center, served
|
|
351
|
+
over Tailscale.
|
|
352
|
+
- **~88 CLI subcommands** (100+ counting subcommand groups) covering the full surface above,
|
|
353
|
+
each documented via `coord <cmd> --help`.
|
|
354
|
+
|
|
355
|
+
## Why this works (even with one machine)
|
|
356
|
+
|
|
357
|
+
The tool encodes a pattern from real multi-agent sessions: **separate the tech lead from the
|
|
358
|
+
IC.** The coordinator thinks about *what to do next* — priority, dependencies, conflicts, which
|
|
359
|
+
machine is idle. Workers think about *how to do this one thing*. Neither is distracted by the
|
|
360
|
+
other's concern.
|
|
361
|
+
|
|
362
|
+
- **Forced scoping.** One issue per worker session. No "while I'm here, let me also refactor
|
|
363
|
+
this."
|
|
364
|
+
- **Structured handoffs.** Every assignment is a briefing posted as a GitHub comment. If a
|
|
365
|
+
session dies, a new one resumes from the comment — zero context loss.
|
|
366
|
+
- **Persistent record.** Every decision, briefing, verdict, and result lives on GitHub. Review
|
|
367
|
+
what happened a week later; terminal scrollback is gone when the window closes.
|
|
368
|
+
- **Fresh eyes.** Each worker starts with no prior context. Adversarial review takes it
|
|
369
|
+
further: a separate session reviews with zero shared context — even on the same machine.
|
|
370
|
+
- **Human stays strategic.** You approve assignments and make judgment calls; you don't ferry
|
|
371
|
+
messages between terminals or track who's touching which file.
|
|
372
|
+
- **Cost discipline.** Model tiering means no opus prices for a docs fix; auto-escalation
|
|
373
|
+
starts cheap and pays more only when needed.
|
|
374
|
+
|
|
375
|
+
## Command reference
|
|
376
|
+
|
|
377
|
+
`coord <cmd> --help` documents every command and flag; `coord --help` lists all ~88. This is
|
|
378
|
+
the core workflow — see [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) for the rest (recovery,
|
|
379
|
+
observability, interactive-session flags, setup and diagnostics).
|
|
380
|
+
|
|
381
|
+
### Core workflow
|
|
382
|
+
|
|
383
|
+
| Command | Description |
|
|
384
|
+
|---------|-------------|
|
|
385
|
+
| `coord drive <repo> <issue>` | Drive one issue Work → Test → Review → Merge, unattended |
|
|
386
|
+
| `coord plan [--dry-run]` | Brain proposes assignments for idle machines |
|
|
387
|
+
| `coord approve <IDs>` | Dispatch approved proposals (comma-separated) |
|
|
388
|
+
| `coord assign <machine> <repo> <issue> [--model haiku\|sonnet\|opus] [--briefing TEXT]` | Direct dispatch, bypasses the brain |
|
|
389
|
+
| `coord status [--freshness]` | Machines, assignments, connectivity |
|
|
390
|
+
| `coord watch <id>` | Filtered live log (stream-json events) |
|
|
391
|
+
|
|
392
|
+
### Post-completion & merge
|
|
393
|
+
|
|
394
|
+
| Command | Description |
|
|
395
|
+
|---------|-------------|
|
|
396
|
+
| `coord test <id> [--passed\|--skipped\|--fail]` | Run, or record the verdict for, the Test gate |
|
|
397
|
+
| `coord pr <id> [--no-review]` | Open a PR (auto-dispatches an adversarial review) |
|
|
398
|
+
| `coord fix <id>` | Dispatch a fix-up worker for a failed test (auto-escalates model) |
|
|
399
|
+
| `coord notify` | Poll agents, post GitHub comments, drive the auto-loop |
|
|
400
|
+
| `coord merge [--dry-run] [--method rebase\|squash\|merge]` | Process the merge queue |
|
|
401
|
+
|
|
402
|
+
### Milestones & fleet ops
|
|
403
|
+
|
|
404
|
+
| Command | Description |
|
|
405
|
+
|---------|-------------|
|
|
406
|
+
| `coord milestone chat\|dispatch\|gate-b\|gate-c\|ship\|drive` | Draft, dispatch, gate, and ship a milestone |
|
|
407
|
+
| `coord drive-queue add\|list\|tick` | Durable, board-backed queue for `coord drive` |
|
|
408
|
+
| `coord usage` / `coord audit` / `coord report` | Cost + token usage, the durable event log, named reports over it |
|
|
409
|
+
| `coord doctor` / `coord repo doctor` | Fleet-wide prereq report — is a machine (or repo, per machine) fit to run work |
|
|
410
|
+
| `coord resume` / `coord diagnose` | Reconcile board state after a crash; diagnose a stuck stage |
|
|
411
|
+
|
|
412
|
+
### Model tiers
|
|
413
|
+
|
|
414
|
+
| Flag | Use for |
|
|
415
|
+
|------|---------|
|
|
416
|
+
| `--model haiku` | Docs, config, trivial single-file changes |
|
|
417
|
+
| `--model sonnet` | Standard features, bug fixes (default) |
|
|
418
|
+
| `--model opus` | Complex multi-file or architectural work |
|
|
419
|
+
|
|
420
|
+
`coord fix` escalates to the next tier on failure. Configure the ladder in `models.escalation`
|
|
421
|
+
and pin exact model ids per alias with `models.versions`.
|
|
422
|
+
|
|
423
|
+
### Ports
|
|
424
|
+
|
|
425
|
+
| Port | Service |
|
|
426
|
+
|------|---------|
|
|
427
|
+
| 7433 | `coord agent` — per-machine worker dispatcher |
|
|
428
|
+
| 7434 | `coord web` — web dashboard + phone PWA |
|
|
429
|
+
| 7435 | `coord serve` — control-center board daemon |
|
|
430
|
+
|
|
431
|
+
## Configuration
|
|
432
|
+
|
|
433
|
+
Minimal single-machine `coordinator.yml`:
|
|
434
|
+
|
|
435
|
+
```yaml
|
|
436
|
+
repos:
|
|
437
|
+
- name: my-project
|
|
438
|
+
github: owner/my-project
|
|
439
|
+
default_branch: main
|
|
440
|
+
build_command: "pytest"
|
|
441
|
+
test_command: "pytest"
|
|
442
|
+
|
|
443
|
+
machines:
|
|
444
|
+
- name: laptop
|
|
445
|
+
host: localhost # single machine: localhost works fine
|
|
446
|
+
capabilities: [python]
|
|
447
|
+
repos: [my-project]
|
|
448
|
+
repo_paths:
|
|
449
|
+
my-project: ~/src/my-project
|
|
450
|
+
|
|
451
|
+
concurrency:
|
|
452
|
+
max_workers: 3 # how many worker sessions run at once
|
|
453
|
+
stagger_seconds: 30 # delay between dispatches (avoids rate limits)
|
|
454
|
+
|
|
455
|
+
models:
|
|
456
|
+
default: sonnet
|
|
457
|
+
escalation: [haiku, sonnet, opus]
|
|
458
|
+
labels: # assign model by GitHub issue label
|
|
459
|
+
documentation: haiku
|
|
460
|
+
architecture: opus
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
`coordinator.example.yml` in the repo is the full annotated reference — multi-machine setups,
|
|
464
|
+
review checklists, smoke-test capability routing, CI gating, and the milestone feature-branch
|
|
465
|
+
model. `coordinator.yml` is gitignored; config resolves `$COORD_CONFIG` →
|
|
466
|
+
`~/.coord/coordinator.yml` (canonical) → `./coordinator.yml` (dev fallback). `coord config` and
|
|
467
|
+
`coord serve` print the resolved path so it's never ambiguous which file loaded.
|
|
468
|
+
|
|
469
|
+
## Scaling up
|
|
470
|
+
|
|
471
|
+
1. On the new machine, run the installer (venv + systemd service in one shot):
|
|
472
|
+
```bash
|
|
473
|
+
curl -sSL https://raw.githubusercontent.com/JDonaghy/code-coordinator/main/install-agent.sh | bash -s -- --machine <name>
|
|
474
|
+
```
|
|
475
|
+
No git clone needed — it pulls from PyPI.
|
|
476
|
+
2. Add the machine to `coordinator.yml` under `machines:` with its Tailscale hostname and
|
|
477
|
+
capabilities.
|
|
478
|
+
3. `coord status` from the coordinator machine shows all machines and their connectivity.
|
|
479
|
+
|
|
480
|
+
For Tailscale setup, see [tailscale.com/kb](https://tailscale.com/kb/). The agent server only
|
|
481
|
+
needs port 7433 reachable on the tailnet — there's no authentication beyond the tailnet ACL, so
|
|
482
|
+
treat that ACL as the security boundary.
|
|
483
|
+
|
|
484
|
+
## Requirements
|
|
485
|
+
|
|
486
|
+
- Python 3.12+
|
|
487
|
+
- Claude Code CLI with a Max or Pro subscription
|
|
488
|
+
- `gh` CLI (authenticated, for coordinator-side GitHub operations — workers never touch `gh`)
|
|
489
|
+
- Tailscale — optional, only for multi-machine setups
|
|
490
|
+
|
|
491
|
+
## License
|
|
492
|
+
|
|
493
|
+
[FSL-1.1-MIT](LICENSE) (Functional Source License). Free to use, modify, and self-host for
|
|
494
|
+
internal use, non-commercial work, or in the professional services you provide to your own
|
|
495
|
+
clients using it. The one thing it restricts is re-packaging the software itself into a
|
|
496
|
+
competing product or service. Each release automatically relicenses to plain MIT two years
|
|
497
|
+
after publication.
|
|
498
|
+
|
|
499
|
+
## Documentation
|
|
500
|
+
|
|
501
|
+
- [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) — how the clients, agents, daemon, and workers
|
|
502
|
+
fit together; the agent HTTP API; the auto-loop end to end; the merge-gate checklist.
|
|
503
|
+
- [`docs/PIPELINE_V2.md`](docs/PIPELINE_V2.md) / [`docs/ORACLE_LOOP.md`](docs/ORACLE_LOOP.md) —
|
|
504
|
+
the two-tier milestone pipeline and the sealed-acceptance oracle loop.
|
|
505
|
+
- [`docs/DRIVE_QUEUE.md`](docs/DRIVE_QUEUE.md) — queuing multiple issues for unattended
|
|
506
|
+
overnight drives.
|
|
507
|
+
- [`docs/PHONE_WEBAPP.md`](docs/PHONE_WEBAPP.md) — build and serve the phone control-center PWA
|
|
508
|
+
over Tailscale.
|
|
509
|
+
- [`docs/AGENT_OPERATIONS.md`](docs/AGENT_OPERATIONS.md) — agent install, upgrade, and
|
|
510
|
+
releasing to PyPI.
|
|
511
|
+
- [`docs/OPERATING_GOTCHAS.md`](docs/OPERATING_GOTCHAS.md) — traps that cost a real dispatch or
|
|
512
|
+
real money and aren't visible from the code.
|