code-coordinator 0.5.161__tar.gz → 0.5.163__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.163}/PKG-INFO +1 -1
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/_board_mapping.py +6 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/api/generated.ts +1 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/db.py +8 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/models.py +32 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/state.py +77 -8
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_state.py +157 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/data.rs +6 -1
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/dialogs.rs +138 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/doc_tabs.rs +141 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/events.rs +121 -2
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/fixtures.rs +6 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/milestone_dag.rs +1 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/mod.rs +94 -8
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/plans.rs +12 -1
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/render.rs +32 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/tests.rs +197 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/types.rs +37 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/tests/fixtures/board_sample.json +3 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.github/workflows/acceptance-web.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/.gitignore +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/CLAUDE.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/GOAL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/LICENSE +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/MANIFEST.in +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/README.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/agent.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/audit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/block_log.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/board_service.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/brain.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/claim.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/cli.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/client.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/comments.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/config.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dao.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/deps.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/drive.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/events.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/filelock.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/freshness.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/gates.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/goal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/context.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/models.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/render.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/health/units.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/hooks.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/interactive.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/network.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/notify.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/openapi.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/parentage.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/plans.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/progress.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/release_window.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/reports.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/review.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/smoke.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/split_work.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/test_author.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/test_report.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/usage.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/install-agent.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/pyproject.toml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/setup.cfg +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/__init__.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/conftest.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_config.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_db.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_events.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_init.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_models.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_network.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_review.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_session.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_split.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.161 → code_coordinator-0.5.163}/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:
|
|
@@ -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
|
|
|
@@ -242,6 +242,163 @@ class TestStopReason:
|
|
|
242
242
|
update_assignment_stop_reason("some-id", "") # must not raise
|
|
243
243
|
|
|
244
244
|
|
|
245
|
+
class TestDispatchedByAssignmentId:
|
|
246
|
+
"""#2417: dispatched_by_assignment_id — the calling worker's own
|
|
247
|
+
assignment id, captured from $COORD_ASSIGNMENT_ID at dispatch time, so a
|
|
248
|
+
sibling assignment a worker's own turn spawns (`coord acceptance
|
|
249
|
+
author`, `coord fix <other-id>`) is traceable back to the origin row
|
|
250
|
+
instead of only discoverable by grepping the raw worker transcript.
|
|
251
|
+
"""
|
|
252
|
+
|
|
253
|
+
def test_schema_has_dispatched_by_assignment_id_column(self, coord_db) -> None:
|
|
254
|
+
from coord.db import get_connection
|
|
255
|
+
conn = get_connection()
|
|
256
|
+
cols = {row[1] for row in conn.execute("PRAGMA table_info(assignments)").fetchall()}
|
|
257
|
+
assert "dispatched_by_assignment_id" in cols, (
|
|
258
|
+
"assignments table is missing dispatched_by_assignment_id column — "
|
|
259
|
+
"check _migrate_add_columns in coord/db.py"
|
|
260
|
+
)
|
|
261
|
+
|
|
262
|
+
def test_record_dispatched_captures_env_when_set(self, coord_db, monkeypatch) -> None:
|
|
263
|
+
"""A Proposal-based dispatch (coord fix's `_dispatch_followup`, plain
|
|
264
|
+
`coord assign`, ...) picks up the calling worker's own assignment id
|
|
265
|
+
from $COORD_ASSIGNMENT_ID — i.e. this dispatch happened FROM INSIDE
|
|
266
|
+
that worker's own turn, not typed by a human."""
|
|
267
|
+
monkeypatch.setenv("COORD_ASSIGNMENT_ID", "origin-work-001")
|
|
268
|
+
proposal = Proposal(
|
|
269
|
+
id=1, machine_name="laptop", repo_name="api", issue_number=42,
|
|
270
|
+
issue_title="Fix auth", rationale="x",
|
|
271
|
+
)
|
|
272
|
+
record_dispatched(
|
|
273
|
+
assignment_id="sibling-001", proposal=proposal, repo_github="acme/api",
|
|
274
|
+
)
|
|
275
|
+
|
|
276
|
+
from coord.db import get_connection
|
|
277
|
+
conn = get_connection()
|
|
278
|
+
row = conn.execute(
|
|
279
|
+
"SELECT dispatched_by_assignment_id FROM assignments WHERE assignment_id=?",
|
|
280
|
+
("sibling-001",),
|
|
281
|
+
).fetchone()
|
|
282
|
+
assert row[0] == "origin-work-001"
|
|
283
|
+
|
|
284
|
+
def test_record_dispatched_none_when_env_unset(self, coord_db, monkeypatch) -> None:
|
|
285
|
+
"""A human typing `coord assign`/`coord fix` in their own shell never
|
|
286
|
+
has $COORD_ASSIGNMENT_ID set — the column must stay NULL, not read as
|
|
287
|
+
a phantom dispatch-by-worker."""
|
|
288
|
+
monkeypatch.delenv("COORD_ASSIGNMENT_ID", raising=False)
|
|
289
|
+
proposal = Proposal(
|
|
290
|
+
id=1, machine_name="laptop", repo_name="api", issue_number=42,
|
|
291
|
+
issue_title="Fix auth", rationale="x",
|
|
292
|
+
)
|
|
293
|
+
record_dispatched(
|
|
294
|
+
assignment_id="sibling-002", proposal=proposal, repo_github="acme/api",
|
|
295
|
+
)
|
|
296
|
+
|
|
297
|
+
from coord.db import get_connection
|
|
298
|
+
conn = get_connection()
|
|
299
|
+
row = conn.execute(
|
|
300
|
+
"SELECT dispatched_by_assignment_id FROM assignments WHERE assignment_id=?",
|
|
301
|
+
("sibling-002",),
|
|
302
|
+
).fetchone()
|
|
303
|
+
assert row[0] is None
|
|
304
|
+
|
|
305
|
+
def test_record_dispatched_assignment_captures_env_when_set(
|
|
306
|
+
self, coord_db, monkeypatch
|
|
307
|
+
) -> None:
|
|
308
|
+
"""Mirrors the Proposal-path test above for the Assignment-based
|
|
309
|
+
dispatch path (`coord.test_author.dispatch_test_author`'s
|
|
310
|
+
`record_dispatched_assignment` call — the exact path coord-portal#119
|
|
311
|
+
went through: a work session shelling out to `coord acceptance
|
|
312
|
+
author`)."""
|
|
313
|
+
from coord.models import Assignment
|
|
314
|
+
from coord.state import record_dispatched_assignment
|
|
315
|
+
|
|
316
|
+
monkeypatch.setenv("COORD_ASSIGNMENT_ID", "b1b6f90ca426")
|
|
317
|
+
record_dispatched_assignment(
|
|
318
|
+
assignment=Assignment(
|
|
319
|
+
assignment_id="41249c1cebbd", machine_name="precision",
|
|
320
|
+
repo_name="coord-portal", issue_number=16,
|
|
321
|
+
issue_title="[test-author] ms-16 slice #10", type="test-author",
|
|
322
|
+
),
|
|
323
|
+
repo_github="acme/coord-portal",
|
|
324
|
+
)
|
|
325
|
+
|
|
326
|
+
from coord.db import get_connection
|
|
327
|
+
conn = get_connection()
|
|
328
|
+
row = conn.execute(
|
|
329
|
+
"SELECT dispatched_by_assignment_id FROM assignments WHERE assignment_id=?",
|
|
330
|
+
("41249c1cebbd",),
|
|
331
|
+
).fetchone()
|
|
332
|
+
assert row[0] == "b1b6f90ca426"
|
|
333
|
+
|
|
334
|
+
def test_explicit_value_on_the_dataclass_wins_over_env(
|
|
335
|
+
self, coord_db, monkeypatch
|
|
336
|
+
) -> None:
|
|
337
|
+
"""A caller that already set dispatched_by_assignment_id explicitly
|
|
338
|
+
(none do today, but the seam supports it) is never clobbered by the
|
|
339
|
+
env-derived default."""
|
|
340
|
+
monkeypatch.setenv("COORD_ASSIGNMENT_ID", "some-other-worker")
|
|
341
|
+
proposal = Proposal(
|
|
342
|
+
id=1, machine_name="laptop", repo_name="api", issue_number=42,
|
|
343
|
+
issue_title="Fix auth", rationale="x",
|
|
344
|
+
dispatched_by_assignment_id="explicit-parent",
|
|
345
|
+
)
|
|
346
|
+
record_dispatched(
|
|
347
|
+
assignment_id="sibling-003", proposal=proposal, repo_github="acme/api",
|
|
348
|
+
)
|
|
349
|
+
|
|
350
|
+
from coord.db import get_connection
|
|
351
|
+
conn = get_connection()
|
|
352
|
+
row = conn.execute(
|
|
353
|
+
"SELECT dispatched_by_assignment_id FROM assignments WHERE assignment_id=?",
|
|
354
|
+
("sibling-003",),
|
|
355
|
+
).fetchone()
|
|
356
|
+
assert row[0] == "explicit-parent"
|
|
357
|
+
|
|
358
|
+
def test_audit_summary_names_the_dispatching_assignment(
|
|
359
|
+
self, coord_db, monkeypatch
|
|
360
|
+
) -> None:
|
|
361
|
+
"""#2417's other half: `coord audit`'s default (non-JSON) table must
|
|
362
|
+
show the link too, not just a --json details field — this is what
|
|
363
|
+
let coord-portal#119's dispatch go unnoticed without grepping the raw
|
|
364
|
+
transcript."""
|
|
365
|
+
from coord.state import list_audit_log
|
|
366
|
+
|
|
367
|
+
monkeypatch.setenv("COORD_ASSIGNMENT_ID", "origin-work-audit")
|
|
368
|
+
proposal = Proposal(
|
|
369
|
+
id=1, machine_name="laptop", repo_name="api", issue_number=42,
|
|
370
|
+
issue_title="Fix auth", rationale="x",
|
|
371
|
+
)
|
|
372
|
+
record_dispatched(
|
|
373
|
+
assignment_id="sibling-audit-001", proposal=proposal, repo_github="acme/api",
|
|
374
|
+
)
|
|
375
|
+
|
|
376
|
+
result = list_audit_log(assignment_id="sibling-audit-001")
|
|
377
|
+
entries = result["entries"]
|
|
378
|
+
assert len(entries) == 1
|
|
379
|
+
assert "dispatched by assignment origin-work-audit" in entries[0]["summary"]
|
|
380
|
+
assert entries[0]["details"]["dispatched_by_assignment_id"] == "origin-work-audit"
|
|
381
|
+
|
|
382
|
+
def test_load_dispatched_surfaces_the_field(self, coord_db, monkeypatch) -> None:
|
|
383
|
+
"""The board-level reverse-lookup surface (`coord.state.load_dispatched`,
|
|
384
|
+
which both `coord sessions`/`coord log` and the TUI's board payload
|
|
385
|
+
read from) must carry the field so a consumer can find "which
|
|
386
|
+
assignment dispatched me" without a raw-log grep."""
|
|
387
|
+
from coord.state import load_dispatched
|
|
388
|
+
|
|
389
|
+
monkeypatch.setenv("COORD_ASSIGNMENT_ID", "origin-work-load")
|
|
390
|
+
proposal = Proposal(
|
|
391
|
+
id=1, machine_name="laptop", repo_name="api", issue_number=42,
|
|
392
|
+
issue_title="Fix auth", rationale="x",
|
|
393
|
+
)
|
|
394
|
+
record_dispatched(
|
|
395
|
+
assignment_id="sibling-load-001", proposal=proposal, repo_github="acme/api",
|
|
396
|
+
)
|
|
397
|
+
|
|
398
|
+
rows = {r["assignment_id"]: r for r in load_dispatched()}
|
|
399
|
+
assert rows["sibling-load-001"]["dispatched_by_assignment_id"] == "origin-work-load"
|
|
400
|
+
|
|
401
|
+
|
|
245
402
|
class TestRecordDispatchedAssignmentBranch:
|
|
246
403
|
"""#557: record_dispatched_assignment must persist the branch column so
|
|
247
404
|
coord reattach can find it for the remote push-back finalize."""
|
|
@@ -1333,7 +1333,7 @@ pub(crate) fn load_data() -> BoardData {
|
|
|
1333
1333
|
acceptance_total, acceptance_passed, \
|
|
1334
1334
|
test_reason, review_state, pr_url, \
|
|
1335
1335
|
audit_goals_json, audit_bottom_line, audit_run_number, \
|
|
1336
|
-
for_issue_number, driven_by \
|
|
1336
|
+
for_issue_number, driven_by, dispatched_by_assignment_id \
|
|
1337
1337
|
FROM assignments ORDER BY dispatched_at DESC",
|
|
1338
1338
|
) {
|
|
1339
1339
|
Ok(s) => s,
|
|
@@ -1423,6 +1423,11 @@ pub(crate) fn load_data() -> BoardData {
|
|
|
1423
1423
|
// #1499: durable drive provenance. unwrap_or(None) for the
|
|
1424
1424
|
// same graceful-degradation reason as the columns above.
|
|
1425
1425
|
driven_by: row.get::<_, Option<String>>(39).unwrap_or(None),
|
|
1426
|
+
// #2417: calling-worker provenance. unwrap_or(None) for the
|
|
1427
|
+
// same graceful-degradation reason as the columns above.
|
|
1428
|
+
dispatched_by_assignment_id: row
|
|
1429
|
+
.get::<_, Option<String>>(40)
|
|
1430
|
+
.unwrap_or(None),
|
|
1426
1431
|
})
|
|
1427
1432
|
}) {
|
|
1428
1433
|
Ok(r) => r,
|