code-coordinator 0.5.161__tar.gz → 0.5.164__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.161 → code_coordinator-0.5.164}/PKG-INFO +1 -1
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/_board_mapping.py +6 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/api/generated.ts +1 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/db.py +8 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/drive.py +96 -17
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/models.py +32 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/state.py +77 -8
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_drive.py +95 -1
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_state.py +157 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/data.rs +6 -1
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/dialogs.rs +138 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/doc_tabs.rs +141 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/events.rs +121 -2
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/fixtures.rs +6 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/milestone_dag.rs +1 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/mod.rs +94 -8
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/plans.rs +12 -1
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/render.rs +32 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/tests.rs +197 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/types.rs +37 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/tests/fixtures/board_sample.json +3 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/workflows/acceptance-web.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.gitignore +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/CLAUDE.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/GOAL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/LICENSE +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/MANIFEST.in +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/README.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/agent.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/audit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/block_log.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/board_service.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/brain.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/claim.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/cli.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/client.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/comments.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/config.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dao.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deps.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/events.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/filelock.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/freshness.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/gates.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/goal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/context.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/models.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/render.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/units.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/hooks.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/interactive.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/network.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notify.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/openapi.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/parentage.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/plans.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/progress.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/release_window.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/reports.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/review.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/smoke.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/split_work.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/test_author.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/test_report.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/usage.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/install-agent.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/pyproject.toml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/setup.cfg +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/conftest.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_config.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_db.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_events.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_init.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_models.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_network.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_session.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_split.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/tests/cli.rs +0 -0
|
@@ -161,6 +161,12 @@ def row_to_assignment(row: object) -> Assignment:
|
|
|
161
161
|
# #2316: raw terminal stop_reason; None for rows predating this
|
|
162
162
|
# column or a worker whose log carried no such field.
|
|
163
163
|
stop_reason=d.get("stop_reason"),
|
|
164
|
+
# #2417: the calling worker's own assignment id, when this row was
|
|
165
|
+
# dispatched from INSIDE another worker's turn (e.g. `coord
|
|
166
|
+
# acceptance author`/`coord fix` shelled out to from a `type="work"`
|
|
167
|
+
# session's own bash tool). None for a hand or coordinator/brain
|
|
168
|
+
# dispatch, and for rows predating this column.
|
|
169
|
+
dispatched_by_assignment_id=d.get("dispatched_by_assignment_id"),
|
|
164
170
|
)
|
|
165
171
|
|
|
166
172
|
|
|
@@ -926,6 +926,14 @@ def _migrate_add_columns(conn: sqlite3.Connection) -> None:
|
|
|
926
926
|
# submission with no preview queued yet, same as `open_question`'s
|
|
927
927
|
# own default.
|
|
928
928
|
"ALTER TABLE portal_submissions ADD COLUMN preview_url TEXT NOT NULL DEFAULT ''",
|
|
929
|
+
# #2417: the CALLING assignment's id when this row was dispatched by
|
|
930
|
+
# a `coord` subcommand run from INSIDE another worker's own turn
|
|
931
|
+
# (e.g. `coord acceptance author`/`coord fix` shelled out to from a
|
|
932
|
+
# `type="work"` session's own bash tool) rather than typed by a
|
|
933
|
+
# human — see `coord.models.Assignment.dispatched_by_assignment_id`.
|
|
934
|
+
# NULL for a hand dispatch, a coordinator/brain-proposed dispatch,
|
|
935
|
+
# and every row predating this column.
|
|
936
|
+
"ALTER TABLE assignments ADD COLUMN dispatched_by_assignment_id TEXT",
|
|
929
937
|
]
|
|
930
938
|
for sql in migrations:
|
|
931
939
|
try:
|
|
@@ -996,22 +996,35 @@ def _decide_acceptance_landing(
|
|
|
996
996
|
something that will happen, and waiting for the fourth is the #1526
|
|
997
997
|
defect: an unbounded wait for an event that cannot occur.
|
|
998
998
|
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
999
|
+
Two shapes get an immediate, actionable exit instead of a wait, because
|
|
1000
|
+
for each of them the corrective action belongs to a loop that will never
|
|
1001
|
+
run for this row:
|
|
1002
1002
|
|
|
1003
1003
|
* a FAILED slice test — the work row's equivalent dispatches
|
|
1004
1004
|
``coord fix``, but nothing dispatches one for a ``test-author`` row
|
|
1005
1005
|
whose Test stage failed;
|
|
1006
|
-
* a ``request-changes`` slice review — ``auto_loop`` accepts a
|
|
1007
|
-
``test-author`` fix (``FIX_DISPATCH_TYPES``), but the daemon drain
|
|
1008
|
-
deliberately excludes fix dispatch (#476/#477, and #1692's own
|
|
1009
|
-
analysis), so for the work row it is THIS driver that runs
|
|
1010
|
-
``coord fix``; there was no such arm for the slice;
|
|
1011
1006
|
* ``--no-merge`` — the slice merge is a hard prerequisite for
|
|
1012
1007
|
dispatching any work at all (#1138), so with merging switched off the
|
|
1013
1008
|
run cannot progress, and saying so beats idling to the deadline.
|
|
1014
1009
|
|
|
1010
|
+
A third shape — a ``request-changes`` slice review — used to be a fourth
|
|
1011
|
+
immediate exit for the identical reason (``auto_loop`` accepts a
|
|
1012
|
+
``test-author`` fix via ``FIX_DISPATCH_TYPES``, but the daemon drain
|
|
1013
|
+
deliberately excludes fix dispatch — #476/#477, and #1692's own
|
|
1014
|
+
analysis — so for the work row it is THIS driver that runs
|
|
1015
|
+
``coord fix``, and there was no such arm for the slice). #2425: it no
|
|
1016
|
+
longer is. Every retry of this lane re-dispatched a fresh author on the
|
|
1017
|
+
SAME branch name instead of fixing the one review blocking it
|
|
1018
|
+
(claude-coordinator#2286 — 11 re-authoring attempts over ~11h with the
|
|
1019
|
+
review's findings never once addressed), because re-authoring was the
|
|
1020
|
+
only path this lane had. Below, ``request-changes`` now gets the same
|
|
1021
|
+
bounded ``coord fix <acceptance_review_aid>`` arm :func:`decide` already
|
|
1022
|
+
runs for the work row's own review (the ``REVIEW: request-changes → fix
|
|
1023
|
+
round`` arm), spending :attr:`DriveCounters.acceptance`'s OWN
|
|
1024
|
+
``fix_rounds`` — not the work row's — for the same #2079 reason the
|
|
1025
|
+
slice's merge attempts get their own budget: a struggling slice review
|
|
1026
|
+
must not silently leave the issue's real fix budget at zero.
|
|
1027
|
+
|
|
1015
1028
|
The merge itself reuses :func:`_decide_merge` verbatim against a shadow
|
|
1016
1029
|
:class:`~coord.drive_state.IssueState` whose "work row" IS the slice —
|
|
1017
1030
|
that is what carries #1891 (CI not reported → wait, don't retry), #1892
|
|
@@ -1049,15 +1062,81 @@ def _decide_acceptance_landing(
|
|
|
1049
1062
|
)
|
|
1050
1063
|
|
|
1051
1064
|
if state.acceptance_review_verdict == "request-changes":
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1065
|
+
# #2425: the slice's own twin of `decide()`'s `REVIEW: request-
|
|
1066
|
+
# changes → fix round` arm — see the docstring above for why this
|
|
1067
|
+
# used to be a bare `_die()`. `coord fix` already accepts a
|
|
1068
|
+
# `type="test-author"` review id (#1622/#1692:
|
|
1069
|
+
# `auto_loop.FIX_DISPATCH_TYPES` includes `SEALED_PATH_AUTHOR_TYPES`,
|
|
1070
|
+
# which is where "test-author" lives), so this is the SAME command
|
|
1071
|
+
# the work-row arm dispatches, not a second implementation of it.
|
|
1072
|
+
slice_counters = counters.slice_budget()
|
|
1073
|
+
if not state.auto_loop:
|
|
1074
|
+
return _die(
|
|
1075
|
+
"the JIT acceptance slice's review requested changes, but "
|
|
1076
|
+
"pipeline.auto_loop is OFF — the review→fix path is "
|
|
1077
|
+
"switched off in coordinator.yml, so no fix can be "
|
|
1078
|
+
"dispatched.\n"
|
|
1079
|
+
f" Findings: coord log {state.acceptance_review_aid or aid}\n"
|
|
1080
|
+
" Continue by hand: coord assign --interactive --fix-of "
|
|
1081
|
+
f"{state.acceptance_review_aid or aid}"
|
|
1082
|
+
)
|
|
1083
|
+
# Belt-and-braces, mirroring the work-row arm: `acceptance_review_
|
|
1084
|
+
# verdict` and `acceptance_review_aid` are read off the SAME board
|
|
1085
|
+
# row (drive_state.project), so a verdict without an id is
|
|
1086
|
+
# impossible today. Refuse to guess rather than dispatch `coord fix`
|
|
1087
|
+
# against the wrong assignment.
|
|
1088
|
+
if not state.acceptance_review_aid:
|
|
1089
|
+
return _die(
|
|
1090
|
+
"the JIT acceptance slice's review verdict is "
|
|
1091
|
+
"'request-changes' but no review assignment id is on the "
|
|
1092
|
+
"board — refusing to guess which review to fix. Inspect: "
|
|
1093
|
+
f"coord gates {state.repo} {state.issue}"
|
|
1094
|
+
)
|
|
1095
|
+
# Same de-duplication latch as `review_fix_dispatched_for` on the
|
|
1096
|
+
# work row's own arm, just on the slice's own counters: `coord fix`
|
|
1097
|
+
# returns as soon as the fix worker is dispatched, and the board
|
|
1098
|
+
# this driver polls needs a beat to show the new row.
|
|
1099
|
+
if slice_counters.review_fix_dispatched_for == state.acceptance_review_aid:
|
|
1100
|
+
return _wait(
|
|
1101
|
+
label=(
|
|
1102
|
+
"ACCEPTANCE: fix already dispatched for "
|
|
1103
|
+
f"{state.acceptance_review_aid} — waiting for the fix "
|
|
1104
|
+
"row to appear on the board"
|
|
1105
|
+
)
|
|
1106
|
+
)
|
|
1107
|
+
if slice_counters.fix_rounds >= opts.max_fix_rounds:
|
|
1108
|
+
return _die(
|
|
1109
|
+
f"the JIT acceptance slice {aid} was reviewed REQUEST-"
|
|
1110
|
+
f"CHANGES (review {state.acceptance_review_aid}) after "
|
|
1111
|
+
f"{slice_counters.fix_rounds} fix round(s) this drive spent "
|
|
1112
|
+
"landing the slice — stopping.\n"
|
|
1113
|
+
f" Findings: coord log {state.acceptance_review_aid}\n"
|
|
1114
|
+
f" Continue by hand: coord fix {state.acceptance_review_aid}\n"
|
|
1115
|
+
" or re-run coord drive with --no-acceptance to skip JIT "
|
|
1116
|
+
"authoring."
|
|
1117
|
+
)
|
|
1118
|
+
slice_counters.fix_rounds += 1
|
|
1119
|
+
slice_counters.review_fix_dispatched_for = state.acceptance_review_aid
|
|
1120
|
+
return Action(
|
|
1121
|
+
kind=RUN,
|
|
1122
|
+
label=(
|
|
1123
|
+
"ACCEPTANCE: review request-changes → fix round "
|
|
1124
|
+
f"{slice_counters.fix_rounds}/{opts.max_fix_rounds} "
|
|
1125
|
+
f"(coord fix {state.acceptance_review_aid})"
|
|
1126
|
+
),
|
|
1127
|
+
command=("fix", state.acceptance_review_aid),
|
|
1128
|
+
error_message=(
|
|
1129
|
+
f"coord fix {state.acceptance_review_aid} failed to "
|
|
1130
|
+
"dispatch a fix for the JIT acceptance slice's review.\n"
|
|
1131
|
+
" Its refusals are all guards doing their job: auto_loop "
|
|
1132
|
+
"disabled, no structured\n"
|
|
1133
|
+
" findings, approve-with-nits (#476), max_review_"
|
|
1134
|
+
"iterations, or the #522\n"
|
|
1135
|
+
" terminal-work guard — the message above names which.\n"
|
|
1136
|
+
f" Check: coord log {state.acceptance_review_aid} / "
|
|
1137
|
+
"continue by hand: coord assign --interactive --fix-of "
|
|
1138
|
+
f"{state.acceptance_review_aid}"
|
|
1139
|
+
),
|
|
1061
1140
|
)
|
|
1062
1141
|
|
|
1063
1142
|
if not opts.do_merge:
|
|
@@ -723,6 +723,29 @@ class Assignment:
|
|
|
723
723
|
# `advisory` — the same bucket as a worker that looked and correctly
|
|
724
724
|
# found nothing to do — so nobody re-drove it.
|
|
725
725
|
stop_reason: str | None = None
|
|
726
|
+
# #2417: the CALLING assignment's id when this row was dispatched by a
|
|
727
|
+
# `coord` subcommand run from INSIDE another worker's own turn (e.g. a
|
|
728
|
+
# `type="work"` session shelling out to `coord acceptance author repo ms
|
|
729
|
+
# --issue N` or `coord fix <other-id>`), as opposed to a human typing the
|
|
730
|
+
# same command in their own shell. Populated centrally in
|
|
731
|
+
# `coord.state.record_dispatched`/`record_dispatched_assignment` from the
|
|
732
|
+
# `COORD_ASSIGNMENT_ID` env var (see `coord.agent._build_worker_env`'s
|
|
733
|
+
# #2217 note — every headless worker's subprocess environment carries its
|
|
734
|
+
# own assignment id, so a `coord` CLI the worker shells out to inherits
|
|
735
|
+
# it automatically; a human's own shell never has it set). `None` for a
|
|
736
|
+
# hand dispatch, a coordinator/brain-proposed dispatch, and rows
|
|
737
|
+
# predating this column.
|
|
738
|
+
#
|
|
739
|
+
# This is the missing link #2417 reported: before this field, the only
|
|
740
|
+
# way to discover that a work row had dispatched an independent sibling
|
|
741
|
+
# assignment (and whether that sibling then succeeded) was grepping the
|
|
742
|
+
# worker's raw `claude -p` transcript for the printed "Dispatched ... to
|
|
743
|
+
# ..." line and manually cross-referencing a second `coord log` by hand.
|
|
744
|
+
# With this field, the ORIGIN row can be found by any consumer (the
|
|
745
|
+
# board, `coord audit`, the TUI) via a reverse lookup: "which assignment
|
|
746
|
+
# has `dispatched_by_assignment_id == this row's id`?" — see
|
|
747
|
+
# `coord.state.find_dispatched_children`.
|
|
748
|
+
dispatched_by_assignment_id: str | None = None
|
|
726
749
|
|
|
727
750
|
|
|
728
751
|
def effective_issue_number(assignment: "Assignment | dict") -> int:
|
|
@@ -859,6 +882,15 @@ class Proposal:
|
|
|
859
882
|
# through) carries durable provenance. `None` for every other caller
|
|
860
883
|
# (brain-proposed, milestone dispatch, ...).
|
|
861
884
|
driven_by: str | None = None
|
|
885
|
+
# #2417: mirrors `Assignment.dispatched_by_assignment_id` — see that
|
|
886
|
+
# field's docstring. Set here (rather than left for the caller to
|
|
887
|
+
# populate) by `coord.state.record_dispatched` reading
|
|
888
|
+
# `COORD_ASSIGNMENT_ID` from the environment at record time, so every
|
|
889
|
+
# `Proposal`-based dispatch path (`coord fix`/`coord pr`/`coord review`
|
|
890
|
+
# follow-ups via `_dispatch_followup`, `coord assign`,
|
|
891
|
+
# `coord/dispatch_workers.py`, ...) gets this for free without each call
|
|
892
|
+
# site threading it through by hand.
|
|
893
|
+
dispatched_by_assignment_id: str | None = None
|
|
862
894
|
|
|
863
895
|
|
|
864
896
|
@dataclass
|
|
@@ -17,7 +17,7 @@ import os
|
|
|
17
17
|
import sqlite3
|
|
18
18
|
import time
|
|
19
19
|
import warnings
|
|
20
|
-
from dataclasses import asdict
|
|
20
|
+
from dataclasses import asdict, replace
|
|
21
21
|
from datetime import datetime, timezone
|
|
22
22
|
from pathlib import Path
|
|
23
23
|
from typing import TYPE_CHECKING
|
|
@@ -561,6 +561,10 @@ def _dispatched_dict_from_payload(a: dict) -> dict:
|
|
|
561
561
|
"provider_name": a.get("provider_name"),
|
|
562
562
|
# #1499: durable drive provenance; None for a hand `coord assign`.
|
|
563
563
|
"driven_by": a.get("driven_by"),
|
|
564
|
+
# #2417: the calling worker's own assignment id, when this row was
|
|
565
|
+
# dispatched from INSIDE another worker's turn. None for a hand or
|
|
566
|
+
# coordinator/brain dispatch.
|
|
567
|
+
"dispatched_by_assignment_id": a.get("dispatched_by_assignment_id"),
|
|
564
568
|
}
|
|
565
569
|
|
|
566
570
|
|
|
@@ -605,6 +609,10 @@ def _row_to_dispatched_dict(row: object) -> dict:
|
|
|
605
609
|
"provider_name": d.get("provider_name"),
|
|
606
610
|
# #1499: durable drive provenance; None for a hand `coord assign`.
|
|
607
611
|
"driven_by": d.get("driven_by"),
|
|
612
|
+
# #2417: the calling worker's own assignment id, when this row was
|
|
613
|
+
# dispatched from INSIDE another worker's turn. None for a hand or
|
|
614
|
+
# coordinator/brain dispatch.
|
|
615
|
+
"dispatched_by_assignment_id": d.get("dispatched_by_assignment_id"),
|
|
608
616
|
}
|
|
609
617
|
|
|
610
618
|
|
|
@@ -799,6 +807,21 @@ def _thin_client_local_board_guard(fn_name: str) -> None:
|
|
|
799
807
|
_log.warning(msg)
|
|
800
808
|
|
|
801
809
|
|
|
810
|
+
def _dispatched_by_from_env() -> str | None:
|
|
811
|
+
"""The calling worker's own assignment id, if this process is running
|
|
812
|
+
INSIDE a headless worker's turn (#2417).
|
|
813
|
+
|
|
814
|
+
`COORD_ASSIGNMENT_ID` is set on a worker subprocess's own environment by
|
|
815
|
+
`coord.agent._build_worker_env` (#2217) — so a `coord` CLI invocation
|
|
816
|
+
the worker shells out to (e.g. `coord acceptance author` dispatching an
|
|
817
|
+
independent test-author sibling, `coord fix <other-id>` escalating an
|
|
818
|
+
unrelated assignment) inherits it automatically. A human typing the same
|
|
819
|
+
command in their own shell never has it set, so this correctly returns
|
|
820
|
+
`None` for a hand/coordinator dispatch.
|
|
821
|
+
"""
|
|
822
|
+
return os.environ.get("COORD_ASSIGNMENT_ID") or None
|
|
823
|
+
|
|
824
|
+
|
|
802
825
|
def record_dispatched(
|
|
803
826
|
*,
|
|
804
827
|
assignment_id: str,
|
|
@@ -807,6 +830,15 @@ def record_dispatched(
|
|
|
807
830
|
provider_name: str | None = None,
|
|
808
831
|
) -> None:
|
|
809
832
|
"""Record a newly dispatched assignment — routes to the daemon when set."""
|
|
833
|
+
# #2417: stamp the calling worker's own assignment id (if any) BEFORE
|
|
834
|
+
# this crosses the HTTP boundary to a possibly-remote daemon — the env
|
|
835
|
+
# var only exists on the machine/process that is actually dispatching,
|
|
836
|
+
# never on the daemon host. Caller-supplied values (none of today's
|
|
837
|
+
# callers set one explicitly) are left alone.
|
|
838
|
+
if proposal.dispatched_by_assignment_id is None:
|
|
839
|
+
proposal = replace(
|
|
840
|
+
proposal, dispatched_by_assignment_id=_dispatched_by_from_env()
|
|
841
|
+
)
|
|
810
842
|
svc = _board_service()
|
|
811
843
|
resp = _route_write(
|
|
812
844
|
svc,
|
|
@@ -874,8 +906,8 @@ def _record_dispatched_local(
|
|
|
874
906
|
assignment_id, machine_name, repo_name, repo_github,
|
|
875
907
|
issue_number, issue_title, status, type, briefing,
|
|
876
908
|
files_allowed, model, dispatched_at, required_gates,
|
|
877
|
-
provider_name, branch, driven_by
|
|
878
|
-
) VALUES (?, ?, ?, ?, ?, ?, 'running', ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
909
|
+
provider_name, branch, driven_by, dispatched_by_assignment_id
|
|
910
|
+
) VALUES (?, ?, ?, ?, ?, ?, 'running', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
879
911
|
ON CONFLICT(assignment_id) DO NOTHING""",
|
|
880
912
|
(
|
|
881
913
|
assignment_id,
|
|
@@ -893,6 +925,7 @@ def _record_dispatched_local(
|
|
|
893
925
|
provider_name,
|
|
894
926
|
branch,
|
|
895
927
|
proposal.driven_by,
|
|
928
|
+
proposal.dispatched_by_assignment_id,
|
|
896
929
|
),
|
|
897
930
|
)
|
|
898
931
|
conn.commit()
|
|
@@ -915,7 +948,16 @@ def _record_dispatched_local(
|
|
|
915
948
|
# the audit log alone, after the driver process has exited.
|
|
916
949
|
actor="drive" if proposal.driven_by else "coordinator",
|
|
917
950
|
summary=f"Dispatched {proposal.type} to {proposal.machine_name}: "
|
|
918
|
-
f"{proposal.repo_name}#{proposal.issue_number}"
|
|
951
|
+
f"{proposal.repo_name}#{proposal.issue_number}"
|
|
952
|
+
# #2417: make the sibling-dispatch link visible in the default
|
|
953
|
+
# (non-`--json`) `coord audit` table, not just in `details` —
|
|
954
|
+
# this is what let coord-portal#119's dispatch of a test-author
|
|
955
|
+
# sibling go unnoticed without grepping the raw worker transcript.
|
|
956
|
+
+ (
|
|
957
|
+
f" (dispatched by assignment {proposal.dispatched_by_assignment_id})"
|
|
958
|
+
if proposal.dispatched_by_assignment_id
|
|
959
|
+
else ""
|
|
960
|
+
),
|
|
919
961
|
repo=proposal.repo_name,
|
|
920
962
|
issue=proposal.issue_number,
|
|
921
963
|
assignment_id=assignment_id,
|
|
@@ -924,6 +966,11 @@ def _record_dispatched_local(
|
|
|
924
966
|
"type": proposal.type,
|
|
925
967
|
"branch": branch,
|
|
926
968
|
"driven_by": proposal.driven_by,
|
|
969
|
+
# #2417: surfaces "this was dispatched BY a worker's own
|
|
970
|
+
# turn" directly in `coord audit`, without cross-referencing
|
|
971
|
+
# the raw `claude -p` transcript for the printed "Dispatched
|
|
972
|
+
# ... to ..." line.
|
|
973
|
+
"dispatched_by_assignment_id": proposal.dispatched_by_assignment_id,
|
|
927
974
|
},
|
|
928
975
|
)
|
|
929
976
|
|
|
@@ -934,6 +981,12 @@ def record_dispatched_assignment(
|
|
|
934
981
|
repo_github: str,
|
|
935
982
|
) -> None:
|
|
936
983
|
"""Record a dispatched assignment — routes to the daemon when set."""
|
|
984
|
+
# #2417: see record_dispatched's matching comment — must be stamped here,
|
|
985
|
+
# on the dispatching process's own env, before the daemon HTTP hop.
|
|
986
|
+
if assignment.dispatched_by_assignment_id is None:
|
|
987
|
+
assignment = replace(
|
|
988
|
+
assignment, dispatched_by_assignment_id=_dispatched_by_from_env()
|
|
989
|
+
)
|
|
937
990
|
svc = _board_service()
|
|
938
991
|
resp = _route_write(
|
|
939
992
|
svc, "/dispatched", {"assignment": asdict(assignment), "repo_github": repo_github}
|
|
@@ -971,7 +1024,8 @@ def _record_dispatched_assignment_local(
|
|
|
971
1024
|
issue_number, issue_title, status, type, briefing,
|
|
972
1025
|
files_allowed, model, dispatched_at, review_of_assignment_id,
|
|
973
1026
|
review_target, required_gates, review_iteration,
|
|
974
|
-
provider_name, branch, for_issue_number, driven_by
|
|
1027
|
+
provider_name, branch, for_issue_number, driven_by,
|
|
1028
|
+
dispatched_by_assignment_id
|
|
975
1029
|
) VALUES (?, ?, ?, ?, ?, ?, 'running', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
|
|
976
1030
|
-- #1553: a follow-up dispatched off another assignment (review,
|
|
977
1031
|
-- smoke, [fix-N], retry, pr-helper) inherits that parent's
|
|
@@ -989,7 +1043,7 @@ def _record_dispatched_assignment_local(
|
|
|
989
1043
|
SELECT p.for_issue_number FROM assignments p
|
|
990
1044
|
WHERE p.assignment_id = ?
|
|
991
1045
|
)),
|
|
992
|
-
?)
|
|
1046
|
+
?, ?)
|
|
993
1047
|
ON CONFLICT(assignment_id) DO UPDATE SET
|
|
994
1048
|
status = 'running',
|
|
995
1049
|
machine_name = excluded.machine_name,
|
|
@@ -1013,7 +1067,13 @@ def _record_dispatched_assignment_local(
|
|
|
1013
1067
|
for_issue_number = COALESCE(excluded.for_issue_number, for_issue_number),
|
|
1014
1068
|
-- #1499: COALESCE so a re-dispatch/reload doesn't clear the
|
|
1015
1069
|
-- drive provenance already recorded for this assignment.
|
|
1016
|
-
driven_by = COALESCE(excluded.driven_by, driven_by)
|
|
1070
|
+
driven_by = COALESCE(excluded.driven_by, driven_by),
|
|
1071
|
+
-- #2417: COALESCE so a re-dispatch/reload doesn't clear the
|
|
1072
|
+
-- calling-worker provenance already recorded for this
|
|
1073
|
+
-- assignment.
|
|
1074
|
+
dispatched_by_assignment_id = COALESCE(
|
|
1075
|
+
excluded.dispatched_by_assignment_id, dispatched_by_assignment_id
|
|
1076
|
+
)""",
|
|
1017
1077
|
(
|
|
1018
1078
|
assignment.assignment_id or "",
|
|
1019
1079
|
assignment.machine_name,
|
|
@@ -1039,6 +1099,7 @@ def _record_dispatched_assignment_local(
|
|
|
1039
1099
|
# positional).
|
|
1040
1100
|
assignment.review_of_assignment_id,
|
|
1041
1101
|
assignment.driven_by,
|
|
1102
|
+
assignment.dispatched_by_assignment_id,
|
|
1042
1103
|
),
|
|
1043
1104
|
)
|
|
1044
1105
|
conn.commit()
|
|
@@ -1051,7 +1112,13 @@ def _record_dispatched_assignment_local(
|
|
|
1051
1112
|
# to a human `coord assign` (the exact gap #1499 reported).
|
|
1052
1113
|
actor="drive" if assignment.driven_by else "coordinator",
|
|
1053
1114
|
summary=f"Dispatched {assignment.type} to {assignment.machine_name}: "
|
|
1054
|
-
f"{assignment.repo_name}#{assignment.issue_number}"
|
|
1115
|
+
f"{assignment.repo_name}#{assignment.issue_number}"
|
|
1116
|
+
# #2417: see the matching Proposal-path comment above.
|
|
1117
|
+
+ (
|
|
1118
|
+
f" (dispatched by assignment {assignment.dispatched_by_assignment_id})"
|
|
1119
|
+
if assignment.dispatched_by_assignment_id
|
|
1120
|
+
else ""
|
|
1121
|
+
),
|
|
1055
1122
|
repo=assignment.repo_name,
|
|
1056
1123
|
issue=assignment.issue_number,
|
|
1057
1124
|
assignment_id=assignment.assignment_id,
|
|
@@ -1062,6 +1129,8 @@ def _record_dispatched_assignment_local(
|
|
|
1062
1129
|
"review_target": assignment.review_target,
|
|
1063
1130
|
"review_iteration": assignment.review_iteration,
|
|
1064
1131
|
"driven_by": assignment.driven_by,
|
|
1132
|
+
# #2417: see record_dispatched's matching comment.
|
|
1133
|
+
"dispatched_by_assignment_id": assignment.dispatched_by_assignment_id,
|
|
1065
1134
|
},
|
|
1066
1135
|
)
|
|
1067
1136
|
|
|
@@ -1304,18 +1304,112 @@ def test_failed_slice_test_stops_with_the_fix_command():
|
|
|
1304
1304
|
assert "coord fix ta1" in action.message
|
|
1305
1305
|
|
|
1306
1306
|
|
|
1307
|
-
def
|
|
1307
|
+
def test_slice_review_request_changes_dispatches_a_fix():
|
|
1308
|
+
"""#2425: the JIT lane's own twin of the work row's `REVIEW:
|
|
1309
|
+
request-changes → fix round` arm — before this, a request-changes
|
|
1310
|
+
verdict on the slice was a dead end nothing ever dispatched a fix for
|
|
1311
|
+
(claude-coordinator#2286: 11 re-authoring retries over ~11h, never once
|
|
1312
|
+
addressing the review)."""
|
|
1313
|
+
counters = DriveCounters()
|
|
1314
|
+
action = landing_step(
|
|
1315
|
+
landing_state(
|
|
1316
|
+
acceptance_review_verdict="request-changes",
|
|
1317
|
+
acceptance_merge_status="",
|
|
1318
|
+
),
|
|
1319
|
+
counters=counters,
|
|
1320
|
+
)
|
|
1321
|
+
assert action.kind == RUN
|
|
1322
|
+
assert action.command == ("fix", "rv1")
|
|
1323
|
+
assert "rv1" in action.label
|
|
1324
|
+
assert not action.is_exit
|
|
1325
|
+
# Spends the SLICE's own budget, not the work row's (#2079's rule,
|
|
1326
|
+
# extended to fix rounds): landing the slice must not silently leave
|
|
1327
|
+
# the issue's own fix budget at zero.
|
|
1328
|
+
assert counters.fix_rounds == 0
|
|
1329
|
+
assert counters.acceptance is not None
|
|
1330
|
+
assert counters.acceptance.fix_rounds == 1
|
|
1331
|
+
assert counters.acceptance.review_fix_dispatched_for == "rv1"
|
|
1332
|
+
|
|
1333
|
+
|
|
1334
|
+
def test_slice_review_fix_already_dispatched_waits_for_the_board():
|
|
1335
|
+
"""The de-dup latch: a second poll against the SAME review id must not
|
|
1336
|
+
spawn a second fix worker on the same branch (#476/#477)."""
|
|
1337
|
+
counters = DriveCounters()
|
|
1338
|
+
counters.slice_budget().review_fix_dispatched_for = "rv1"
|
|
1308
1339
|
action = landing_step(
|
|
1309
1340
|
landing_state(
|
|
1310
1341
|
acceptance_review_verdict="request-changes",
|
|
1311
1342
|
acceptance_merge_status="",
|
|
1343
|
+
),
|
|
1344
|
+
counters=counters,
|
|
1345
|
+
)
|
|
1346
|
+
assert action.kind == WAIT
|
|
1347
|
+
assert "rv1" in action.label
|
|
1348
|
+
assert counters.acceptance.fix_rounds == 0
|
|
1349
|
+
|
|
1350
|
+
|
|
1351
|
+
def test_slice_review_fix_rounds_are_bounded_then_die():
|
|
1352
|
+
"""Bounded the same way the work row's fix loop is — a slice review that
|
|
1353
|
+
keeps coming back request-changes must eventually escalate, not spin."""
|
|
1354
|
+
opts = DriveOptions(machine="precision", max_fix_rounds=2)
|
|
1355
|
+
counters = DriveCounters()
|
|
1356
|
+
for expected_round in (1, 2):
|
|
1357
|
+
action = landing_step(
|
|
1358
|
+
landing_state(
|
|
1359
|
+
acceptance_review_verdict="request-changes",
|
|
1360
|
+
acceptance_merge_status="",
|
|
1361
|
+
),
|
|
1362
|
+
opts,
|
|
1363
|
+
counters=counters,
|
|
1312
1364
|
)
|
|
1365
|
+
assert action.kind == RUN
|
|
1366
|
+
assert action.command == ("fix", "rv1")
|
|
1367
|
+
assert counters.acceptance.fix_rounds == expected_round
|
|
1368
|
+
# Clear the latch between rounds the same way a changed review row
|
|
1369
|
+
# would on the real board (a fresh review after the fix landed).
|
|
1370
|
+
counters.acceptance.review_fix_dispatched_for = ""
|
|
1371
|
+
|
|
1372
|
+
action = landing_step(
|
|
1373
|
+
landing_state(
|
|
1374
|
+
acceptance_review_verdict="request-changes",
|
|
1375
|
+
acceptance_merge_status="",
|
|
1376
|
+
),
|
|
1377
|
+
opts,
|
|
1378
|
+
counters=counters,
|
|
1313
1379
|
)
|
|
1314
1380
|
assert action.is_exit
|
|
1315
1381
|
assert action.exit_code == EXIT_TERMINAL_FAILURE
|
|
1382
|
+
assert "2 fix round(s)" in action.message
|
|
1316
1383
|
assert "coord fix rv1" in action.message
|
|
1317
1384
|
|
|
1318
1385
|
|
|
1386
|
+
def test_slice_review_request_changes_with_auto_loop_off_dies_without_dispatching():
|
|
1387
|
+
action = landing_step(
|
|
1388
|
+
landing_state(
|
|
1389
|
+
acceptance_review_verdict="request-changes",
|
|
1390
|
+
acceptance_merge_status="",
|
|
1391
|
+
auto_loop=False,
|
|
1392
|
+
)
|
|
1393
|
+
)
|
|
1394
|
+
assert action.is_exit
|
|
1395
|
+
assert action.exit_code == EXIT_TERMINAL_FAILURE
|
|
1396
|
+
assert "auto_loop is OFF" in action.message
|
|
1397
|
+
assert "coord assign --interactive --fix-of rv1" in action.message
|
|
1398
|
+
|
|
1399
|
+
|
|
1400
|
+
def test_slice_review_request_changes_with_no_review_id_refuses_to_guess():
|
|
1401
|
+
action = landing_step(
|
|
1402
|
+
landing_state(
|
|
1403
|
+
acceptance_review_verdict="request-changes",
|
|
1404
|
+
acceptance_merge_status="",
|
|
1405
|
+
acceptance_review_aid="",
|
|
1406
|
+
)
|
|
1407
|
+
)
|
|
1408
|
+
assert action.is_exit
|
|
1409
|
+
assert action.exit_code == EXIT_TERMINAL_FAILURE
|
|
1410
|
+
assert "refusing to guess" in action.message
|
|
1411
|
+
|
|
1412
|
+
|
|
1319
1413
|
def test_no_merge_refuses_up_front_instead_of_idling_to_the_deadline():
|
|
1320
1414
|
"""`--no-merge` makes the run unable to progress at all (#1138 refuses
|
|
1321
1415
|
the work dispatch until the slice lands) — say so immediately."""
|