code-coordinator 0.5.117__tar.gz → 0.5.119__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.117 → code_coordinator-0.5.119}/PKG-INFO +1 -1
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/code_coordinator.egg-info/SOURCES.txt +9 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/code_coordinator.egg-info/scm_file_list.json +9 -0
- code_coordinator-0.5.119/code_coordinator.egg-info/scm_version.json +8 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/agent.py +56 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/agents/opencode/agents/work.md +34 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/cli.py +56 -25
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/drive_queue.py +44 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/config.py +51 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/conflict_fix.py +7 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-drive-queue.service +29 -16
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/drive_queue.py +78 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-drive-queue.service +29 -16
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/DRIVE_QUEUE.md +42 -21
- code_coordinator-0.5.119/tests/acceptance/ms-65/contract.md +563 -0
- code_coordinator-0.5.119/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +40 -0
- code_coordinator-0.5.119/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +40 -0
- code_coordinator-0.5.119/tests/acceptance/ms-65/mocks/board-preview-tab.screen +40 -0
- code_coordinator-0.5.119/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +40 -0
- code_coordinator-0.5.119/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +40 -0
- code_coordinator-0.5.119/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +40 -0
- code_coordinator-0.5.119/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +40 -0
- code_coordinator-0.5.119/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +40 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_drive_queue.py +78 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_mock_author.py +10 -1
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_providers.py +188 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_worker_safety.py +149 -0
- code_coordinator-0.5.117/code_coordinator.egg-info/scm_version.json +0 -8
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/.gitignore +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/CLAUDE.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/GOAL.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/LICENSE +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/MANIFEST.in +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/README.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/__init__.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/audit.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/block_log.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/board_service.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/brain.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/claim.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/client.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/comments.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dao.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/db.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deps.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/drive.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/events.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/filelock.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/freshness.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/gates.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/goal.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/context.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/models.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/render.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/health/units.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/hooks.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/interactive.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/models.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/network.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/notify.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/openapi.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/parentage.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/plans.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/progress.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/release_window.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/reports.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/review.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/smoke.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/split_work.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/state.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/test_author.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/test_report.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/usage.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/install-agent.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/pyproject.toml +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/setup.cfg +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/__init__.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/conftest.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_config.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_db.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_events.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_init.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_models.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_network.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_review.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_session.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_split.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_state.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.117 → code_coordinator-0.5.119}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -783,6 +783,15 @@ tests/acceptance/ms-51/home-active.spec.ts
|
|
|
783
783
|
tests/acceptance/ms-51/manifest.yml
|
|
784
784
|
tests/acceptance/ms-51/tsconfig.json
|
|
785
785
|
tests/acceptance/ms-51/mocks/home-active.html
|
|
786
|
+
tests/acceptance/ms-65/contract.md
|
|
787
|
+
tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen
|
|
788
|
+
tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen
|
|
789
|
+
tests/acceptance/ms-65/mocks/board-preview-tab.screen
|
|
790
|
+
tests/acceptance/ms-65/mocks/board-split-side-by-side.screen
|
|
791
|
+
tests/acceptance/ms-65/mocks/board-tab-context-menu.screen
|
|
792
|
+
tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen
|
|
793
|
+
tests/acceptance/ms-65/mocks/board-tabs-overflow.screen
|
|
794
|
+
tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen
|
|
786
795
|
tests/acceptance/ms-example/mocks/home-active.html
|
|
787
796
|
tests/fixtures/board-pipeline-basic.json
|
|
788
797
|
tests/fixtures/board-pipeline-terminal-gates.json
|
{code_coordinator-0.5.117 → code_coordinator-0.5.119}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -428,6 +428,15 @@
|
|
|
428
428
|
"tests/acceptance/ms-51/manifest.yml",
|
|
429
429
|
"tests/acceptance/ms-51/mocks/home-active.html",
|
|
430
430
|
"tests/acceptance/ms-51/tsconfig.json",
|
|
431
|
+
"tests/acceptance/ms-65/contract.md",
|
|
432
|
+
"tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen",
|
|
433
|
+
"tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen",
|
|
434
|
+
"tests/acceptance/ms-65/mocks/board-preview-tab.screen",
|
|
435
|
+
"tests/acceptance/ms-65/mocks/board-split-side-by-side.screen",
|
|
436
|
+
"tests/acceptance/ms-65/mocks/board-tab-context-menu.screen",
|
|
437
|
+
"tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen",
|
|
438
|
+
"tests/acceptance/ms-65/mocks/board-tabs-overflow.screen",
|
|
439
|
+
"tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen",
|
|
431
440
|
"tests/acceptance/ms-example/mocks/home-active.html",
|
|
432
441
|
"tests/conftest.py",
|
|
433
442
|
"tests/fixtures/board-pipeline-basic.json",
|
|
@@ -3500,10 +3500,14 @@ MILESTONE_CHAT_DENY_COMMANDS: list[str] = [
|
|
|
3500
3500
|
"Bash(git push *)",
|
|
3501
3501
|
"Bash(git commit *)",
|
|
3502
3502
|
"Bash(git reset --hard *)",
|
|
3503
|
+
"Bash(git reset * --hard *)",
|
|
3503
3504
|
"Bash(git branch -D *)",
|
|
3505
|
+
"Bash(git branch * -D *)",
|
|
3504
3506
|
"Bash(git checkout -- .)",
|
|
3505
3507
|
"Bash(git clean -f *)",
|
|
3508
|
+
"Bash(git clean * -f *)",
|
|
3506
3509
|
"Bash(rm -rf *)",
|
|
3510
|
+
"Bash(rm -fr *)",
|
|
3507
3511
|
"Bash(coord approve *)",
|
|
3508
3512
|
"Bash(coord merge *)",
|
|
3509
3513
|
"Bash(coord assign *)",
|
|
@@ -3575,11 +3579,19 @@ manually verify in the rendered mock.
|
|
|
3575
3579
|
MOCK_AUTHOR_DENY_COMMANDS: list[str] = [
|
|
3576
3580
|
"Bash(gh *)",
|
|
3577
3581
|
"Bash(git push --force*)",
|
|
3582
|
+
# #2314: the entry above only matches `--force` IMMEDIATELY after
|
|
3583
|
+
# `push` — a `git push --quiet --force ...` with another flag pushed
|
|
3584
|
+
# in first would evade it.
|
|
3585
|
+
"Bash(git push * --force*)",
|
|
3578
3586
|
"Bash(git reset --hard *)",
|
|
3587
|
+
"Bash(git reset * --hard *)",
|
|
3579
3588
|
"Bash(git branch -D *)",
|
|
3589
|
+
"Bash(git branch * -D *)",
|
|
3580
3590
|
"Bash(git checkout -- .)",
|
|
3581
3591
|
"Bash(git clean -f *)",
|
|
3592
|
+
"Bash(git clean * -f *)",
|
|
3582
3593
|
"Bash(rm -rf *)",
|
|
3594
|
+
"Bash(rm -fr *)",
|
|
3583
3595
|
"Bash(coord approve *)",
|
|
3584
3596
|
"Bash(coord merge *)",
|
|
3585
3597
|
"Bash(coord assign *)",
|
|
@@ -3599,10 +3611,14 @@ NEW_ISSUE_CHAT_DENY_COMMANDS: list[str] = [
|
|
|
3599
3611
|
"Bash(git push *)",
|
|
3600
3612
|
"Bash(git commit *)",
|
|
3601
3613
|
"Bash(git reset --hard *)",
|
|
3614
|
+
"Bash(git reset * --hard *)",
|
|
3602
3615
|
"Bash(git branch -D *)",
|
|
3616
|
+
"Bash(git branch * -D *)",
|
|
3603
3617
|
"Bash(git checkout -- .)",
|
|
3604
3618
|
"Bash(git clean -f *)",
|
|
3619
|
+
"Bash(git clean * -f *)",
|
|
3605
3620
|
"Bash(rm -rf *)",
|
|
3621
|
+
"Bash(rm -fr *)",
|
|
3606
3622
|
]
|
|
3607
3623
|
|
|
3608
3624
|
|
|
@@ -3637,6 +3653,46 @@ def build_deny_prompt(deny_commands: list[str]) -> str:
|
|
|
3637
3653
|
)
|
|
3638
3654
|
|
|
3639
3655
|
|
|
3656
|
+
def bash_deny_pattern_matches(pattern: str, command: str) -> bool:
|
|
3657
|
+
"""Whether *command* (a raw shell command string) is caught by a single
|
|
3658
|
+
``Bash(...)`` deny *pattern*, using the same shell-glob semantics those
|
|
3659
|
+
patterns are written in throughout this module (``*`` matches any run of
|
|
3660
|
+
characters, including none, and including across what would look like an
|
|
3661
|
+
argv token boundary — this is a whole-string glob, not an argv-aware
|
|
3662
|
+
parse).
|
|
3663
|
+
|
|
3664
|
+
#2314: a worker evaded ``Bash(pip install -e *)`` simply by inserting
|
|
3665
|
+
another flag first (``pip install --user -e .``) — the pattern only
|
|
3666
|
+
matched ``-e`` IMMEDIATELY after ``install``. This function exists so
|
|
3667
|
+
that claim ("this deny list actually catches that evasion") is a
|
|
3668
|
+
testable fact rather than something read off the pattern text by eye —
|
|
3669
|
+
see the ``Bash(...)`` entries :data:`coord.config.DEFAULT_DENY_COMMANDS`
|
|
3670
|
+
pairs for exactly this reason, and ``tests/test_worker_safety.py`` for
|
|
3671
|
+
the regression tests built on top of this function.
|
|
3672
|
+
|
|
3673
|
+
Returns ``False`` for a *pattern* that isn't a ``Bash(...)`` rule at all
|
|
3674
|
+
(e.g. an ``Edit(...)``/``Write(...)`` path rule) — those constrain a
|
|
3675
|
+
different tool and never match a shell command string.
|
|
3676
|
+
"""
|
|
3677
|
+
if not (pattern.startswith("Bash(") and pattern.endswith(")")):
|
|
3678
|
+
return False
|
|
3679
|
+
inner = pattern[5:-1]
|
|
3680
|
+
return fnmatch.fnmatchcase(command.strip(), inner)
|
|
3681
|
+
|
|
3682
|
+
|
|
3683
|
+
def find_denying_bash_pattern(command: str, deny_commands: list[str]) -> str | None:
|
|
3684
|
+
"""The first pattern in *deny_commands* that blocks *command*, or ``None``.
|
|
3685
|
+
|
|
3686
|
+
Thin fold over :func:`bash_deny_pattern_matches` — a worker's own deny
|
|
3687
|
+
list is small (single digits to low tens of entries), so a linear scan
|
|
3688
|
+
needs no index.
|
|
3689
|
+
"""
|
|
3690
|
+
for pattern in deny_commands:
|
|
3691
|
+
if bash_deny_pattern_matches(pattern, command):
|
|
3692
|
+
return pattern
|
|
3693
|
+
return None
|
|
3694
|
+
|
|
3695
|
+
|
|
3640
3696
|
# #1315: sealed-oracle path prefix that only an independent authoring type
|
|
3641
3697
|
# (``"mock-author"``/a future ``"test-author"``) may ever write to
|
|
3642
3698
|
# (docs/ORACLE_LOOP.md sealing v1). ``coord.dispatch.dispatch`` already
|
|
@@ -63,6 +63,40 @@ there are lost, or collide with other workers running at the same time. If \
|
|
|
63
63
|
your worktree looks unexpectedly empty or unwritable, STOP and report it — \
|
|
64
64
|
do not fall back to editing the base checkout and copying files over.
|
|
65
65
|
|
|
66
|
+
Write incrementally — this is the single most important rule in this file:
|
|
67
|
+
- Every request you make has a hard output-token budget, and on a \
|
|
68
|
+
reasoning model those tokens are shared with your own thinking. Truncation \
|
|
69
|
+
can happen at any budget size — raising the ceiling makes it rarer, not \
|
|
70
|
+
impossible — so the rule below holds regardless of what the current limit \
|
|
71
|
+
is.
|
|
72
|
+
- Write each file as soon as its content is decided. Do NOT design the \
|
|
73
|
+
whole change, plan every file, and only then start emitting `write`/`edit` \
|
|
74
|
+
calls — a turn that spends its whole budget reasoning can be truncated \
|
|
75
|
+
before it emits a single tool call. Truncation produces a clean-looking \
|
|
76
|
+
exit with zero commits and nothing on disk: the work is not "mostly done", \
|
|
77
|
+
it is entirely lost, because nothing you only thought about was ever sent \
|
|
78
|
+
as a tool call.
|
|
79
|
+
- Prefer many small steps over one large one: read/understand one file, \
|
|
80
|
+
write it, move to the next. Small increments stay nowhere near the cap; \
|
|
81
|
+
a single-shot "figure out the whole diff, then write it all" turn is what \
|
|
82
|
+
exhausts it.
|
|
83
|
+
- Issue one command per `bash` call — do not chain with `&&`, `;` or `|`. \
|
|
84
|
+
Permission rules are prefix-matched against the whole command string, so \
|
|
85
|
+
`git status && git log` matches no `allow` entry and is denied outright, \
|
|
86
|
+
wasting a turn for nothing. Run `git status`, then separately `git log`.
|
|
87
|
+
- These are the only `bash` commands you can run; everything else is \
|
|
88
|
+
denied, including `pwd`, `ls`, `cat` and `grep` (use your own file-read \
|
|
89
|
+
and search tools for those): `git status`, `git diff`, `git log`, \
|
|
90
|
+
`git show`, `git add`, `git commit`, `git checkout`, `git branch`, \
|
|
91
|
+
`git rev-parse`, `git push`, `cargo …`, `make…`, `pytest…`, \
|
|
92
|
+
`python3 -m pytest…`, `python -m pytest…`, `npm …`, `pip install…`, \
|
|
93
|
+
`pip3 install…`. `gh` is denied — the coordinator owns GitHub.
|
|
94
|
+
- If a `bash` or `edit` call does come back denied, don't probe with \
|
|
95
|
+
variations to find what's allowed — every denial replays the entire \
|
|
96
|
+
permission ruleset back to you, burning output budget you need for \
|
|
97
|
+
`write` calls without telling you anything the list above didn't already \
|
|
98
|
+
say. Take the denial as final and move on.
|
|
99
|
+
|
|
66
100
|
This session is ONE-SHOT and non-interactive:
|
|
67
101
|
- There is no next turn and no human to reply to you. Background-task \
|
|
68
102
|
completion notifications will NEVER reach you — nothing wakes you up.
|
|
@@ -300,49 +300,80 @@ def _warn_if_source_install_drift() -> None:
|
|
|
300
300
|
pass
|
|
301
301
|
|
|
302
302
|
|
|
303
|
-
def
|
|
304
|
-
"""#561/#601
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
303
|
+
def _editable_checkout_drift() -> tuple[Path, str] | None:
|
|
304
|
+
"""Pure query behind both #561/#601's CLI warning and #2314's
|
|
305
|
+
drive-queue tick refusal (:mod:`coord.drive_queue`): is THIS process an
|
|
306
|
+
EDITABLE checkout of coord, and if so, is it on a branch other than the
|
|
307
|
+
default one?
|
|
308
|
+
|
|
309
|
+
A Build/`coord test`/smoke that git-checkout'd the base — or an
|
|
310
|
+
interactive agent inspecting a branch in the live checkout — silently
|
|
311
|
+
puts the running coordinator on that branch's code until restored (#561
|
|
312
|
+
incident: disabled guards; #601 incident: old code + retired local DB).
|
|
313
|
+
|
|
314
|
+
Returns ``(repo_root, shown)`` when drifted — ``shown`` is the branch
|
|
315
|
+
name formatted the way both callers print it (quoted, or
|
|
316
|
+
``"(detached HEAD)"``) — or ``None`` when this is a non-editable/
|
|
317
|
+
site-packages install, isn't a git checkout at all, is cleanly on
|
|
318
|
+
``main``/``master``, or the check itself couldn't be completed (git not
|
|
319
|
+
on PATH, no ``.git``, a timeout). Every failure mode here is read-only
|
|
320
|
+
and best-effort, so it degrades to "no drift detected" rather than
|
|
321
|
+
raising — a flaky read must never itself block a tick or crash a
|
|
322
|
+
command.
|
|
312
323
|
"""
|
|
313
324
|
import subprocess # noqa: PLC0415
|
|
314
|
-
import sys as _sys # noqa: PLC0415
|
|
315
325
|
|
|
316
|
-
if "pytest" in _sys.modules:
|
|
317
|
-
return # don't add startup noise to the test suite
|
|
318
326
|
try:
|
|
319
327
|
import coord as _coord # noqa: PLC0415
|
|
320
328
|
|
|
321
329
|
coord_file = _coord.__file__ or ""
|
|
322
330
|
if "site-packages" in coord_file:
|
|
323
|
-
return # PyPI/snapshot install — moving a checkout can't affect it.
|
|
331
|
+
return None # PyPI/snapshot install — moving a checkout can't affect it.
|
|
324
332
|
repo_root = Path(coord_file).resolve().parents[1]
|
|
325
333
|
if not (repo_root / ".git").exists():
|
|
326
|
-
return
|
|
334
|
+
return None
|
|
327
335
|
head = subprocess.run(
|
|
328
336
|
["git", "rev-parse", "--abbrev-ref", "HEAD"],
|
|
329
337
|
cwd=str(repo_root), capture_output=True, text=True, timeout=3,
|
|
330
338
|
)
|
|
331
339
|
if head.returncode != 0:
|
|
332
|
-
return
|
|
340
|
+
return None
|
|
333
341
|
branch = head.stdout.strip()
|
|
334
342
|
if branch in ("main", "master"):
|
|
335
|
-
return
|
|
343
|
+
return None
|
|
336
344
|
shown = "(detached HEAD)" if branch == "HEAD" else f"'{branch}'"
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
345
|
+
return (repo_root, shown)
|
|
346
|
+
except Exception: # noqa: BLE001 — best-effort, never break the caller
|
|
347
|
+
return None
|
|
348
|
+
|
|
349
|
+
|
|
350
|
+
def _warn_if_editable_checkout_moved() -> None:
|
|
351
|
+
"""#561/#601 backstop: when running from an EDITABLE checkout, warn loudly if
|
|
352
|
+
its branch was moved off the default.
|
|
353
|
+
|
|
354
|
+
This makes that state visible on every command instead of waiting for a
|
|
355
|
+
verdict or manual restore. #2314 escalated the SAME underlying reading
|
|
356
|
+
(:func:`_editable_checkout_drift`) from advisory-only here to a hard
|
|
357
|
+
refusal inside the drive-queue tick gate — see
|
|
358
|
+
``coord.drive_queue.plan_tick``'s ``editable_drift`` parameter — because
|
|
359
|
+
a warning nobody is watching an unattended tick's log for is not a gate.
|
|
360
|
+
This function stays as the interactive/human-facing half of that fix.
|
|
361
|
+
"""
|
|
362
|
+
import sys as _sys # noqa: PLC0415
|
|
363
|
+
|
|
364
|
+
if "pytest" in _sys.modules:
|
|
365
|
+
return # don't add startup noise to the test suite
|
|
366
|
+
drift = _editable_checkout_drift()
|
|
367
|
+
if drift is None:
|
|
368
|
+
return
|
|
369
|
+
repo_root, shown = drift
|
|
370
|
+
click.echo(
|
|
371
|
+
f"⚠ coord: editable checkout {repo_root} is on {shown}, not the "
|
|
372
|
+
"default branch — the running coordinator is on THAT code. A "
|
|
373
|
+
"Build/smoke/test may have checked it out. Restore with: "
|
|
374
|
+
f"git -C {repo_root} checkout main",
|
|
375
|
+
err=True,
|
|
376
|
+
)
|
|
346
377
|
|
|
347
378
|
|
|
348
379
|
@click.group(help="Multi-agent coordinator for Claude Code workers.")
|
|
@@ -1634,6 +1634,42 @@ def _fetch_cordons() -> dict[str, str]:
|
|
|
1634
1634
|
return {}
|
|
1635
1635
|
|
|
1636
1636
|
|
|
1637
|
+
def _fetch_editable_drift() -> tuple[str, str] | None:
|
|
1638
|
+
"""``(repo_root, shown)`` when THIS host's own `coord` is an editable
|
|
1639
|
+
checkout that has drifted off its default branch, else ``None`` (#2314).
|
|
1640
|
+
|
|
1641
|
+
Thin wrapper around ``coord.cli._editable_checkout_drift`` — the exact
|
|
1642
|
+
same read `coord.cli._warn_if_editable_checkout_moved` uses for its
|
|
1643
|
+
CLI-startup warning — reshaped to a plain ``(str, str)`` tuple so
|
|
1644
|
+
:func:`coord.drive_queue.plan_tick` (a pure function; see its module
|
|
1645
|
+
docstring) never has to import ``coord.cli`` or touch a ``Path``.
|
|
1646
|
+
Already fail-soft/best-effort at the source (see that function's
|
|
1647
|
+
docstring); this wrapper adds nothing on top beyond the reshape and the
|
|
1648
|
+
``str(repo_root)`` conversion.
|
|
1649
|
+
|
|
1650
|
+
Same ``"pytest" in sys.modules`` guard as
|
|
1651
|
+
``_warn_if_editable_checkout_moved`` — for the identical reason: this
|
|
1652
|
+
repo's OWN test suite runs from an editable checkout on a feature
|
|
1653
|
+
branch as a matter of course (that is what a worker's worktree is), so
|
|
1654
|
+
without the guard every CLI-level `drive-queue tick` test would trip
|
|
1655
|
+
this exact gate on itself. `coord.drive_queue.plan_tick`'s own tests
|
|
1656
|
+
(tests/test_drive_queue.py) exercise the real gate logic directly via
|
|
1657
|
+
its ``editable_drift`` parameter, unaffected by this guard.
|
|
1658
|
+
"""
|
|
1659
|
+
import sys as _sys # noqa: PLC0415
|
|
1660
|
+
|
|
1661
|
+
if "pytest" in _sys.modules:
|
|
1662
|
+
return None
|
|
1663
|
+
|
|
1664
|
+
from coord.cli import _editable_checkout_drift # noqa: PLC0415
|
|
1665
|
+
|
|
1666
|
+
drift = _editable_checkout_drift()
|
|
1667
|
+
if drift is None:
|
|
1668
|
+
return None
|
|
1669
|
+
repo_root, shown = drift
|
|
1670
|
+
return (str(repo_root), shown)
|
|
1671
|
+
|
|
1672
|
+
|
|
1637
1673
|
def _fetch_board_view() -> BoardView:
|
|
1638
1674
|
"""Board + live drive sessions, typed.
|
|
1639
1675
|
|
|
@@ -2316,6 +2352,13 @@ def drive_queue_tick(
|
|
|
2316
2352
|
# a rollable state.
|
|
2317
2353
|
cordons = _fetch_cordons()
|
|
2318
2354
|
|
|
2355
|
+
# #2314: is THIS host's own `coord` a drifted editable checkout?
|
|
2356
|
+
# Escalates `coord.cli._warn_if_editable_checkout_moved` from an
|
|
2357
|
+
# advisory-only startup warning (nothing unattended ever reads) to
|
|
2358
|
+
# an actual refusal — see `_editable_drift_alert` and `plan_tick`'s
|
|
2359
|
+
# `editable_drift` parameter for the gate itself.
|
|
2360
|
+
editable_drift = _fetch_editable_drift()
|
|
2361
|
+
|
|
2319
2362
|
# #1794: the clock is the shell's to read, never `coord.drive_queue`'s.
|
|
2320
2363
|
# It powers the startup grace window on both sides of the tick — a
|
|
2321
2364
|
# drive launched seconds ago is `starting`, not dead, and cannot be
|
|
@@ -2342,6 +2385,7 @@ def drive_queue_tick(
|
|
|
2342
2385
|
cordons=cordons,
|
|
2343
2386
|
live_ci_gate=live_ci_gate,
|
|
2344
2387
|
live_blocked_gate=live_blocked_gate,
|
|
2388
|
+
editable_drift=editable_drift,
|
|
2345
2389
|
)
|
|
2346
2390
|
|
|
2347
2391
|
if reconcile_only:
|
|
@@ -73,15 +73,66 @@ def is_canonical_config_path(path: Path) -> bool:
|
|
|
73
73
|
|
|
74
74
|
|
|
75
75
|
# Safety-by-default: repos without explicit worker_permissions get this deny-list.
|
|
76
|
+
#
|
|
77
|
+
# #2314: every ``Bash(<verb> <flag> *)`` entry only matches *flag* IMMEDIATELY
|
|
78
|
+
# after *verb* — a worker that inserted one more flag first (or swapped a
|
|
79
|
+
# combined short flag's letter order) sailed straight through undetected. The
|
|
80
|
+
# `git push`/`rm` entries below each pair the original adjacent form with a
|
|
81
|
+
# reordering-safe one (an interior ``*`` before the flag, or — for `rm` — the
|
|
82
|
+
# `-fr` letter-swap of `-rf`); this is the "audit other Bash(...) deny
|
|
83
|
+
# patterns for the same positional weakness" half of #2314, not exhaustive
|
|
84
|
+
# (it does not attempt to catch shell chaining/subshells, which is a
|
|
85
|
+
# different, much larger problem than argv flag position).
|
|
76
86
|
DEFAULT_DENY_COMMANDS: list[str] = [
|
|
77
87
|
"Bash(gh *)",
|
|
78
88
|
"Bash(git push --force *)",
|
|
79
89
|
"Bash(git push -f *)",
|
|
90
|
+
"Bash(git push * --force *)",
|
|
91
|
+
"Bash(git push * -f *)",
|
|
80
92
|
"Bash(git reset --hard *)",
|
|
93
|
+
"Bash(git reset * --hard *)",
|
|
81
94
|
"Bash(git branch -D *)",
|
|
95
|
+
"Bash(git branch * -D *)",
|
|
82
96
|
"Bash(git checkout -- .)",
|
|
83
97
|
"Bash(git clean -f *)",
|
|
98
|
+
"Bash(git clean * -f *)",
|
|
84
99
|
"Bash(rm -rf *)",
|
|
100
|
+
"Bash(rm -fr *)",
|
|
101
|
+
# #2314: a worker ran `pip install --break-system-packages -e .` — an
|
|
102
|
+
# editable install of coord's own source re-links (or, combined with
|
|
103
|
+
# `--user`/`--break-system-packages`, outright shadows) the interpreter
|
|
104
|
+
# `coord` itself is running under, out from under this and every other
|
|
105
|
+
# session on the box (see coord/cli.py's
|
|
106
|
+
# `_warn_if_source_install_drift`/`_editable_checkout_drift`). The old
|
|
107
|
+
# single `Bash(pip install -e *)` entry only matched `-e` IMMEDIATELY
|
|
108
|
+
# after `install`, so putting any other flag first evaded it entirely.
|
|
109
|
+
# Every entry below is duplicated with a leading `*` (covers `python -m
|
|
110
|
+
# pip install ...` / `python3 -m pip install ...`, which reach the exact
|
|
111
|
+
# same installer) and, for `-e`/`--editable` specifically, ALSO with an
|
|
112
|
+
# interior `*` before the flag (covers it appearing anywhere in argv,
|
|
113
|
+
# not just first) — the adjacent form alone still catches
|
|
114
|
+
# `pip install -e --break-system-packages .` (the flag being pushed
|
|
115
|
+
# AFTER `-e` doesn't break the immediate `install -e` adjacency), but
|
|
116
|
+
# not `pip install --break-system-packages -e .` (something pushed
|
|
117
|
+
# BEFORE it).
|
|
118
|
+
"Bash(pip install -e *)",
|
|
119
|
+
"Bash(*pip install -e *)",
|
|
120
|
+
"Bash(pip install * -e *)",
|
|
121
|
+
"Bash(*pip install * -e *)",
|
|
122
|
+
"Bash(pip install --editable *)",
|
|
123
|
+
"Bash(*pip install --editable *)",
|
|
124
|
+
"Bash(pip install * --editable *)",
|
|
125
|
+
"Bash(*pip install * --editable *)",
|
|
126
|
+
# `--break-system-packages` / `--user` are denied INDEPENDENTLY of
|
|
127
|
+
# `-e`/`--editable` — either flag alone, on a perfectly ordinary
|
|
128
|
+
# non-editable `pip install`, still lets a worker write into (or
|
|
129
|
+
# reconfigure) the interpreter coord itself runs under. No adjacency
|
|
130
|
+
# requirement at all: both are boolean flags a real `pip install`
|
|
131
|
+
# invocation can place anywhere after `install`.
|
|
132
|
+
"Bash(pip install *--break-system-packages*)",
|
|
133
|
+
"Bash(*pip install *--break-system-packages*)",
|
|
134
|
+
"Bash(pip install *--user*)",
|
|
135
|
+
"Bash(*pip install *--user*)",
|
|
85
136
|
]
|
|
86
137
|
|
|
87
138
|
|
|
@@ -70,6 +70,13 @@ CONFLICT_FIX_DENY_COMMANDS = [
|
|
|
70
70
|
"Bash(gh *)",
|
|
71
71
|
"Bash(git push --force *)",
|
|
72
72
|
"Bash(git push -f *)",
|
|
73
|
+
# #2314: the two entries above only match `--force`/`-f` IMMEDIATELY
|
|
74
|
+
# after `push` — a `--force-with-lease` push (the sanctioned, allowed
|
|
75
|
+
# form, see this module's own guidance above) must stay clear, but
|
|
76
|
+
# `git push --quiet --force ...` / `git push --quiet -f ...` (the flag
|
|
77
|
+
# pushed after some other one) must not evade the ban either.
|
|
78
|
+
"Bash(git push * --force *)",
|
|
79
|
+
"Bash(git push * -f *)",
|
|
73
80
|
]
|
|
74
81
|
|
|
75
82
|
|
{code_coordinator-0.5.117 → code_coordinator-0.5.119}/coord/deploy/coord-drive-queue.service
RENAMED
|
@@ -20,14 +20,21 @@
|
|
|
20
20
|
#
|
|
21
21
|
# COORD_BIN — the runner's own CLI must be a PINNED, NON-EDITABLE install
|
|
22
22
|
# (#1523): worker branch churn must never be able to rewrite the tool that is
|
|
23
|
-
# driving it, mid-run.
|
|
24
|
-
#
|
|
25
|
-
#
|
|
26
|
-
#
|
|
27
|
-
#
|
|
23
|
+
# driving it, mid-run. #2314: ExecStart below points at ~/.coord-venv/bin/coord
|
|
24
|
+
# DIRECTLY, the same way deploy/coord-agent.service, coord-serve.service,
|
|
25
|
+
# coord-notify.service and coord-web.service already do — NOT at
|
|
26
|
+
# ~/.local/bin/coord. On dellserver ~/.local/bin/coord is normally a symlink
|
|
27
|
+
# into that same venv, but it is still just an ordinary path on disk: a
|
|
28
|
+
# worker running `pip install --user` (or an editable `pip install -e .`
|
|
29
|
+
# that lands its own console-script shim there) can silently overwrite it
|
|
30
|
+
# with something that no longer points at the pinned venv at all, and the
|
|
31
|
+
# first this tick would know about that is the next `coord drive-queue tick`
|
|
32
|
+
# running whatever the worker just wrote. Pointing ExecStart at the venv path
|
|
33
|
+
# directly makes that overwrite structurally irrelevant to this unit —
|
|
34
|
+
# nothing a worker does to ~/.local/bin/coord can change what systemd execs.
|
|
28
35
|
#
|
|
29
36
|
# coord agent update --machine dellserver # or --all; the standard lane
|
|
30
|
-
# ~/.
|
|
37
|
+
# ~/.coord-venv/bin/coord --version # VERIFY it took — an upgrade
|
|
31
38
|
# # silently no-ops more often
|
|
32
39
|
# # than you would think
|
|
33
40
|
#
|
|
@@ -37,15 +44,21 @@
|
|
|
37
44
|
# stale on 2026-07-29. This unit intentionally does not use that pattern.
|
|
38
45
|
#
|
|
39
46
|
# If you ever install this timer on a DIFFERENT machine, first confirm THAT
|
|
40
|
-
# machine
|
|
41
|
-
#
|
|
42
|
-
#
|
|
43
|
-
#
|
|
44
|
-
#
|
|
45
|
-
#
|
|
46
|
-
#
|
|
47
|
-
#
|
|
48
|
-
#
|
|
47
|
+
# machine actually has a `~/.coord-venv` — the same pinned, non-editable
|
|
48
|
+
# install every other daemon lane already depends on — before trusting it
|
|
49
|
+
# unattended:
|
|
50
|
+
#
|
|
51
|
+
# readlink -f ~/.coord-venv/bin/coord # must resolve INTO
|
|
52
|
+
# # the venv, not out
|
|
53
|
+
# # to a checkout
|
|
54
|
+
# ~/.coord-venv/bin/pip show code-coordinator | grep -i editable
|
|
55
|
+
# # must print NOTHING
|
|
56
|
+
#
|
|
57
|
+
# An editable ~/.coord-venv (rare, but possible on a dev box someone
|
|
58
|
+
# repointed by hand) lets a worker's branch churn rewrite the runner's own
|
|
59
|
+
# code out from under a live tick just as badly as the ~/.local/bin/coord
|
|
60
|
+
# symlink-overwrite case this fix closes — do not install this unit on a
|
|
61
|
+
# machine whose ~/.coord-venv is editable. See docs/DRIVE_QUEUE.md.
|
|
49
62
|
#
|
|
50
63
|
# Install:
|
|
51
64
|
# mkdir -p ~/.config/systemd/user
|
|
@@ -109,7 +122,7 @@ KillMode=process
|
|
|
109
122
|
# ceiling (>= the release carrying #1972). A higher global ceiling on an
|
|
110
123
|
# older coord launches two same-repo drives, which stale each other's
|
|
111
124
|
# Test verdicts (#1479) — the exact collision #1972 exists to prevent.
|
|
112
|
-
ExecStart=%h/.
|
|
125
|
+
ExecStart=%h/.coord-venv/bin/coord drive-queue tick --max-parallel 4 --config %h/.coord/coordinator.yml
|
|
113
126
|
# Generous relative to the tick's own ~120s launch-subprocess timeout
|
|
114
127
|
# (_LAUNCH_TIMEOUT_SECONDS in coord/commands/drive_queue.py), but well below
|
|
115
128
|
# the timer's 15-minute cadence (coord-drive-queue.timer) so a genuinely
|
|
@@ -1240,6 +1240,14 @@ class TickPlan:
|
|
|
1240
1240
|
# a bool, because a queue that stops with no stated reason is the failure
|
|
1241
1241
|
# the cordon mechanism exists to stop repeating.
|
|
1242
1242
|
cordon_reason: str = ""
|
|
1243
|
+
# #2314: non-empty when THIS host's own `coord` is an editable checkout
|
|
1244
|
+
# that has drifted off its default branch (see `editable_drift` on
|
|
1245
|
+
# `plan_tick` and `coord.cli._editable_checkout_drift`), in which case
|
|
1246
|
+
# nothing launched this tick and `launch` is guaranteed None — same
|
|
1247
|
+
# shape as `cordon_reason` and for the same reason: a queue that stops
|
|
1248
|
+
# must say why in a field the shell can render, not just a log line
|
|
1249
|
+
# nobody is watching an unattended tick for.
|
|
1250
|
+
drift_reason: str = ""
|
|
1243
1251
|
|
|
1244
1252
|
@property
|
|
1245
1253
|
def free_slots(self) -> int:
|
|
@@ -2412,6 +2420,37 @@ def _normalized_cordons(cordons: Mapping[str, str] | None) -> dict[str, str]:
|
|
|
2412
2420
|
}
|
|
2413
2421
|
|
|
2414
2422
|
|
|
2423
|
+
def _editable_drift_alert(repo_root: str, shown: str) -> QueueAlert:
|
|
2424
|
+
"""The queue-level record for "this host's own coord has drifted" (#2314).
|
|
2425
|
+
|
|
2426
|
+
Mirrors :func:`_cordon_alert`: a queue that stops must say why, in the
|
|
2427
|
+
same channel and with the same one-key remedy field. Unlike a cordon
|
|
2428
|
+
(an operator-declared, self-expiring pause) this is an *accident* —
|
|
2429
|
+
something (a Build, a `coord test`/smoke run, an interactive agent
|
|
2430
|
+
poking at the live checkout) git-checked-out this host's editable
|
|
2431
|
+
``coord`` install onto a non-default branch, and every tick since has
|
|
2432
|
+
been reconciling and launching under whatever code that branch happens
|
|
2433
|
+
to carry. #2314: this used to be advisory-only (a warning at CLI
|
|
2434
|
+
startup nobody unattended is watching for); now it is a hard refusal —
|
|
2435
|
+
a worker branch that silently swaps out the tool driving it is exactly
|
|
2436
|
+
the #561/#601 failure class this whole module exists to avoid adding
|
|
2437
|
+
to.
|
|
2438
|
+
"""
|
|
2439
|
+
return QueueAlert(
|
|
2440
|
+
reason=(
|
|
2441
|
+
f"no launch — this host's coord ({repo_root}) is an editable "
|
|
2442
|
+
f"checkout on {shown}, not its default branch — the tick would "
|
|
2443
|
+
"be reconciling and launching under whatever code that branch "
|
|
2444
|
+
"carries. Restore it before anything launches here again."
|
|
2445
|
+
),
|
|
2446
|
+
details=(
|
|
2447
|
+
"reconciliation (steps 1/1b) still runs — this only refuses to "
|
|
2448
|
+
"launch NEW work, the same posture a release cordon takes",
|
|
2449
|
+
),
|
|
2450
|
+
command=f"git -C {repo_root} checkout main",
|
|
2451
|
+
)
|
|
2452
|
+
|
|
2453
|
+
|
|
2415
2454
|
def _cordon_alert(host: str, reason: str) -> QueueAlert:
|
|
2416
2455
|
"""The queue-level record for "this host is cordoned" (#2101 trap E).
|
|
2417
2456
|
|
|
@@ -2490,6 +2529,7 @@ def plan_tick(
|
|
|
2490
2529
|
cordons: Mapping[str, str] | None = None,
|
|
2491
2530
|
live_ci_gate: Mapping[str, bool] | None = None,
|
|
2492
2531
|
live_blocked_gate: Mapping[str, bool] | None = None,
|
|
2532
|
+
editable_drift: tuple[str, str] | None = None,
|
|
2493
2533
|
) -> TickPlan:
|
|
2494
2534
|
"""Decide one tick. Pure; the caller executes the returned plan.
|
|
2495
2535
|
|
|
@@ -2566,6 +2606,20 @@ def plan_tick(
|
|
|
2566
2606
|
#2110 deadlock, re-created by the very mechanism meant to end it. A
|
|
2567
2607
|
cordoned tick is exactly `--reconcile-only`.
|
|
2568
2608
|
|
|
2609
|
+
*editable_drift* is ``(repo_root, shown)`` (a rendered branch label —
|
|
2610
|
+
see :func:`coord.cli._editable_checkout_drift`) when THIS host's own
|
|
2611
|
+
``coord`` is an editable checkout that has drifted off its default
|
|
2612
|
+
branch, or ``None`` when it hasn't (the overwhelming common case — a
|
|
2613
|
+
release install, or an editable one still cleanly on `main`). #2314:
|
|
2614
|
+
this used to be advisory-only — a warning printed at CLI startup
|
|
2615
|
+
(`coord.cli._warn_if_editable_checkout_moved`) that nothing unattended
|
|
2616
|
+
ever reads. Non-``None`` here launches NOTHING this tick, same posture
|
|
2617
|
+
and same position as a local cordon (checked immediately after it,
|
|
2618
|
+
before capacity) — reconciliation still runs, for the identical #2110
|
|
2619
|
+
reason a cordon doesn't freeze it either. Deliberately host-scoped, not
|
|
2620
|
+
fleet-scoped: a drifted checkout only makes THIS host's tick
|
|
2621
|
+
untrustworthy, not every host's.
|
|
2622
|
+
|
|
2569
2623
|
*live_ci_gate* maps a `parked` entry's key to whether a FRESH,
|
|
2570
2624
|
single-entry re-derivation of its gate — computed by the shell THIS
|
|
2571
2625
|
tick, via :func:`coord.merge_queue.entry_gate_status` with a live
|
|
@@ -3018,6 +3072,25 @@ def plan_tick(
|
|
|
3018
3072
|
cordon_reason=local_cordon,
|
|
3019
3073
|
)
|
|
3020
3074
|
|
|
3075
|
+
# #2314 step 2c: is THIS host's own `coord` a drifted editable checkout?
|
|
3076
|
+
# Checked right after the cordon (same reasoning: reconciliation must
|
|
3077
|
+
# still run — see the docstring) and, like the cordon, before capacity —
|
|
3078
|
+
# a drifted checkout launches nothing however many slots are free. This
|
|
3079
|
+
# is the escalation of `coord.cli._warn_if_editable_checkout_moved` from
|
|
3080
|
+
# advisory-only to an actual refusal.
|
|
3081
|
+
if editable_drift is not None:
|
|
3082
|
+
drift_repo_root, drift_shown = editable_drift
|
|
3083
|
+
drift_text = f"drifted onto {drift_shown} ({drift_repo_root})"
|
|
3084
|
+
return TickPlan(
|
|
3085
|
+
**plan_base,
|
|
3086
|
+
reconciles=tuple(reconciles),
|
|
3087
|
+
blocked=tuple(blocked),
|
|
3088
|
+
deferrals=(),
|
|
3089
|
+
alert=_editable_drift_alert(drift_repo_root, drift_shown),
|
|
3090
|
+
launch=None,
|
|
3091
|
+
drift_reason=drift_text,
|
|
3092
|
+
)
|
|
3093
|
+
|
|
3021
3094
|
if capacity - occupied <= 0:
|
|
3022
3095
|
return TickPlan(
|
|
3023
3096
|
**plan_base,
|
|
@@ -3440,6 +3513,11 @@ def render_plan(plan: TickPlan, *, dry_run: bool = False) -> list[str]:
|
|
|
3440
3513
|
f" no launch — this host is {plan.cordon_reason}; in-flight "
|
|
3441
3514
|
"drives are draining and the queue resumes once it is rolled"
|
|
3442
3515
|
)
|
|
3516
|
+
elif plan.drift_reason:
|
|
3517
|
+
# #2314: same "name it or it reads as a mystery" reasoning as the
|
|
3518
|
+
# cordon branch above — this host's own `coord` is untrustworthy
|
|
3519
|
+
# right now, not the queue.
|
|
3520
|
+
lines.append(f" no launch — this host's coord is {plan.drift_reason}")
|
|
3443
3521
|
elif plan.capacity and plan.free_slots == 0:
|
|
3444
3522
|
# Naming the reason matters more here than anywhere else in this
|
|
3445
3523
|
# render: #1794 was diagnosed entirely from a journal, and "no launch"
|