code-coordinator 0.5.172__tar.gz → 0.5.173__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.172 → code_coordinator-0.5.173}/PKG-INFO +1 -1
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/drive.py +120 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/OPERATING_GOTCHAS.md +17 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_drive.py +72 -1
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.github/workflows/acceptance-web.yml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/.gitignore +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/CLAUDE.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/GOAL.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/LICENSE +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/MANIFEST.in +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/README.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/__init__.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/agent.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/audit.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/block_log.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/board_service.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/brain.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/claim.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/cli.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/client.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/comments.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/config.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dao.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/db.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/deps.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/events.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/filelock.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/freshness.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/gates.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/goal.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/context.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/models.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/render.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/health/units.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/hooks.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/interactive.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/models.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/network.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/notify.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/openapi.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/parentage.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/plans.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/progress.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/release_window.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/reports.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/review.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/self_health.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/smoke.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/split_work.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/state.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/test_author.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/test_report.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/usage.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/install-agent.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/pyproject.toml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/setup.cfg +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/__init__.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/conftest.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_diagnose_self.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_config.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_db.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_events.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_init.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_models.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_network.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_review.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_self_health.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_session.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_split.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_state.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.172 → code_coordinator-0.5.173}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -114,6 +114,7 @@ from coord.failure_class import (
|
|
|
114
114
|
plan_usage_limit_resume,
|
|
115
115
|
)
|
|
116
116
|
from coord.models import DELIVERABLE_ANALYSIS_LABEL, POLICY_REFUSAL_MARKER
|
|
117
|
+
from coord.self_health import self_freshness
|
|
117
118
|
from coord.usage_limits import PlanLimits, evaluate_usage_gate, get_plan_limits
|
|
118
119
|
# Lost in the #1584-onto-#1590 rebase: _decide_review() calls this, but the
|
|
119
120
|
# import lived in a hunk #1590 rewrote, so the merge came out textually clean
|
|
@@ -181,6 +182,20 @@ EXIT_DISPATCH_REFUSED = 5
|
|
|
181
182
|
# vimcode#635 for the two live incidents (140 minutes and ~25 minutes of a
|
|
182
183
|
# held queue slot, respectively, producing nothing).
|
|
183
184
|
EXIT_DEAD_END = 6
|
|
185
|
+
# #2443: a deliberate SELF-HEAL exit, not a failure — the drive loop noticed
|
|
186
|
+
# it was stuck repeating the identical WAIT reason (see `_SELF_HEAL_WAIT_
|
|
187
|
+
# STREAK`) while its OWN on-disk `coord` install had moved since this
|
|
188
|
+
# session started. Python never reloads an already-imported module, so a
|
|
189
|
+
# fix landing mid-run is otherwise invisible to a live session for as long
|
|
190
|
+
# as `--deadline` allows — the claude-coordinator#2286 incident this closes
|
|
191
|
+
# polled one unfetchable path every ~60s for 2+ hours after the fix was
|
|
192
|
+
# already on disk. Distinct from EXIT_DISPATCH_REFUSED/EXIT_DEAD_END on
|
|
193
|
+
# purpose: this condition is NOT permanent — relaunching is exactly the fix
|
|
194
|
+
# — so it must fall through `coord.drive_queue._reconcile_running`'s
|
|
195
|
+
# ordinary `retry` branch rather than either of those two `blocked`
|
|
196
|
+
# branches, which is why nothing in drive_queue.py needs to special-case
|
|
197
|
+
# this code at all.
|
|
198
|
+
EXIT_SELF_STALE = 7
|
|
184
199
|
|
|
185
200
|
|
|
186
201
|
class DriveError(Exception):
|
|
@@ -218,6 +233,31 @@ _CAPTURED_OUTPUT_LIMIT = 4000
|
|
|
218
233
|
# never *tightened* for the environmental case.
|
|
219
234
|
_ENVIRONMENTAL_WORK_RETRY_BUDGET = 5
|
|
220
235
|
|
|
236
|
+
# #2443: how many CONSECUTIVE polls of the IDENTICAL `Action.label` to
|
|
237
|
+
# tolerate before `Driver._loop` checks whether its own on-disk `coord`
|
|
238
|
+
# install has moved since this session started. Below this, a same-label
|
|
239
|
+
# repeat is indistinguishable from an ordinary slow-but-progressing wait (a
|
|
240
|
+
# 10-20 minute test, a slow CI check) and checking would just be wasted
|
|
241
|
+
# subprocess calls; at/above it, the check itself is a single local `git
|
|
242
|
+
# rev-parse HEAD` (no network — see `coord.self_health.self_freshness
|
|
243
|
+
# (fetch=False)`), cheap enough to run on every remaining poll of the
|
|
244
|
+
# streak. At the default `--poll` of 60s this is ~10 minutes — fast enough
|
|
245
|
+
# to matter against a multi-hour `--deadline`, slow enough that a routine
|
|
246
|
+
# wait is never mistaken for the stuck case this exists to catch.
|
|
247
|
+
_SELF_HEAL_WAIT_STREAK = 10
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
def _current_self_head() -> str | None:
|
|
251
|
+
"""Real default for `Driver.self_head_probe` (#2443): THIS process's own
|
|
252
|
+
on-disk `coord` install's current HEAD, or ``None`` when it can't be
|
|
253
|
+
determined (not a git checkout, unreadable HEAD — see
|
|
254
|
+
:func:`coord.self_health.self_freshness`). ``fetch=False``: this only
|
|
255
|
+
needs to notice code that has ALREADY landed locally (e.g. a prior `git
|
|
256
|
+
pull`), never reaches the network, and therefore never blocks the poll
|
|
257
|
+
loop on a slow/unreachable origin.
|
|
258
|
+
"""
|
|
259
|
+
return self_freshness(fetch=False).head_sha
|
|
260
|
+
|
|
221
261
|
|
|
222
262
|
def _bounded_tail(text: str, limit: int = _CAPTURED_OUTPUT_LIMIT) -> str:
|
|
223
263
|
"""*text*, or its last *limit* characters if longer — the tail, because
|
|
@@ -3685,8 +3725,19 @@ class Driver:
|
|
|
3685
3725
|
# real `claude -p "/usage"` subprocess — mirrors *verifier*/*oracle_gate*
|
|
3686
3726
|
# above. Defaults to the real (cached, ~60s) probe.
|
|
3687
3727
|
usage_prober: Callable[[], PlanLimits] = get_plan_limits
|
|
3728
|
+
# #2443: injected so tests can script a fake on-disk HEAD sequence
|
|
3729
|
+
# without a real git checkout — same shape as *usage_prober* above.
|
|
3730
|
+
# Defaults to the real, local-only (`fetch=False`) probe.
|
|
3731
|
+
self_head_probe: Callable[[], str | None] = _current_self_head
|
|
3688
3732
|
|
|
3689
3733
|
_run_log: Path | None = field(default=None, init=False, repr=False)
|
|
3734
|
+
# #2443: this session's own on-disk `coord` HEAD, captured once by
|
|
3735
|
+
# `_loop()` right as the poll loop begins — the baseline every later
|
|
3736
|
+
# `_self_heal_drift_message` check compares against. `None` when it
|
|
3737
|
+
# could not be determined (not a git checkout, unreadable HEAD), which
|
|
3738
|
+
# keeps the self-heal check permanently a no-op for this run rather than
|
|
3739
|
+
# ever comparing against a placeholder.
|
|
3740
|
+
_start_head_sha: str | None = field(default=None, init=False, repr=False)
|
|
3690
3741
|
# #1499: the terminating Action's own message, captured by `_loop()` right
|
|
3691
3742
|
# before it returns — `run()` folds this into the `drive_exited` audit
|
|
3692
3743
|
# summary/details so a non-exceptional terminal exit (e.g. `decide()`
|
|
@@ -3818,6 +3869,36 @@ class Driver:
|
|
|
3818
3869
|
finally:
|
|
3819
3870
|
lock.release()
|
|
3820
3871
|
|
|
3872
|
+
# ── self-heal (#2443) ──────────────────────────────────────────────
|
|
3873
|
+
def _self_heal_drift_message(self, label: str, streak: int) -> str | None:
|
|
3874
|
+
"""Has THIS process's own on-disk ``coord`` install moved since this
|
|
3875
|
+
drive session started? ``None`` when it hasn't — or when freshness
|
|
3876
|
+
can't be determined at all, which must never be misread as drift —
|
|
3877
|
+
the overwhelmingly common case, so the caller just keeps waiting
|
|
3878
|
+
exactly as before.
|
|
3879
|
+
|
|
3880
|
+
Only ever consulted once *label* (a WAIT ``Action``'s own reason)
|
|
3881
|
+
has repeated *streak* times in a row (``_loop``'s
|
|
3882
|
+
``_SELF_HEAL_WAIT_STREAK`` gate) — this is specifically the #2286
|
|
3883
|
+
shape: ``_decide_acceptance_author``'s "could not verify commits
|
|
3884
|
+
(git fetch failed), retrying" arm returned the IDENTICAL label every
|
|
3885
|
+
~60s for 2+ hours after the fix that would have resolved it had
|
|
3886
|
+
already landed on disk, because Python never reloads an
|
|
3887
|
+
already-imported module. A stale in-memory `coord/drive.py` has no
|
|
3888
|
+
way to notice that on its own — this is the bounded check that lets
|
|
3889
|
+
it notice anyway.
|
|
3890
|
+
"""
|
|
3891
|
+
current = self.self_head_probe()
|
|
3892
|
+
if not current or not self._start_head_sha or current == self._start_head_sha:
|
|
3893
|
+
return None
|
|
3894
|
+
return (
|
|
3895
|
+
"code changed underneath this session — on-disk coord moved "
|
|
3896
|
+
f"from {self._start_head_sha[:8]} to {current[:8]} while stuck "
|
|
3897
|
+
f"repeating the same wait {streak}x: {label!r}. Exiting "
|
|
3898
|
+
"(EXIT_SELF_STALE) so coord drive-queue relaunches with "
|
|
3899
|
+
f"current code instead of continuing to wait on stale logic (#2443)."
|
|
3900
|
+
)
|
|
3901
|
+
|
|
3821
3902
|
def _post_escalation_comment(self, state: IssueState, message: str) -> None:
|
|
3822
3903
|
"""#1526: durably surface an escalation's reason onto the issue
|
|
3823
3904
|
itself, not just this run's tmux pane and the ``coord escalate``
|
|
@@ -4061,6 +4142,15 @@ class Driver:
|
|
|
4061
4142
|
# nudge) while guaranteeing a stalled stage is never more than one
|
|
4062
4143
|
# `stall_secs` window away from a fresh check.
|
|
4063
4144
|
last_nudge: float | None = None
|
|
4145
|
+
# #2443: this session's own on-disk `coord` HEAD, captured once,
|
|
4146
|
+
# right as the poll loop begins — see `_self_heal_drift_message`.
|
|
4147
|
+
self._start_head_sha = self.self_head_probe()
|
|
4148
|
+
# A distinct object (never equal to any real `Action.label`, empty
|
|
4149
|
+
# string included) so the very first WAIT of the run always starts
|
|
4150
|
+
# its streak at 1 rather than accidentally matching an unset
|
|
4151
|
+
# sentinel.
|
|
4152
|
+
last_wait_label: object = object()
|
|
4153
|
+
same_wait_streak = 0
|
|
4064
4154
|
|
|
4065
4155
|
while True:
|
|
4066
4156
|
now = self.clock()
|
|
@@ -4155,6 +4245,36 @@ class Driver:
|
|
|
4155
4245
|
for warning in action.warnings:
|
|
4156
4246
|
self.warn(warning)
|
|
4157
4247
|
|
|
4248
|
+
# #2443: self-heal — see `_self_heal_drift_message`. Tracked off
|
|
4249
|
+
# the Action's own `label`, NOT `fingerprint` above: a WAIT can
|
|
4250
|
+
# (and, in the #2286 shape, does) repeat the identical reason
|
|
4251
|
+
# poll after poll while the board fingerprint itself is static
|
|
4252
|
+
# for the same underlying reason, so this is really the same
|
|
4253
|
+
# signal — but keying directly on what the loop is ABOUT TO DO
|
|
4254
|
+
# keeps this correct even for a WAIT arm whose label happens to
|
|
4255
|
+
# be static text unrelated to fingerprint (e.g. "TEST: in
|
|
4256
|
+
# progress on a capability-matched machine") without needing to
|
|
4257
|
+
# reason about the two staying in lockstep. A non-WAIT action
|
|
4258
|
+
# (RUN or EXIT) always resets the streak: dispatching something
|
|
4259
|
+
# is progress by definition.
|
|
4260
|
+
if action.kind == WAIT:
|
|
4261
|
+
if action.label == last_wait_label:
|
|
4262
|
+
same_wait_streak += 1
|
|
4263
|
+
else:
|
|
4264
|
+
last_wait_label = action.label
|
|
4265
|
+
same_wait_streak = 1
|
|
4266
|
+
if same_wait_streak >= _SELF_HEAL_WAIT_STREAK:
|
|
4267
|
+
drift = self._self_heal_drift_message(
|
|
4268
|
+
action.label, same_wait_streak
|
|
4269
|
+
)
|
|
4270
|
+
if drift:
|
|
4271
|
+
self._last_exit_message = drift
|
|
4272
|
+
self.warn(drift)
|
|
4273
|
+
return EXIT_SELF_STALE
|
|
4274
|
+
else:
|
|
4275
|
+
last_wait_label = object()
|
|
4276
|
+
same_wait_streak = 0
|
|
4277
|
+
|
|
4158
4278
|
if action.is_exit:
|
|
4159
4279
|
# #1499: capture the exit reason for the audit boundary before
|
|
4160
4280
|
# anything below can fail — the escalation write is explicitly
|
|
@@ -44,6 +44,23 @@ doc's guess) and reports STALE with a commit count when it hasn't been pulled
|
|
|
44
44
|
since a `coord/**` fix merged — the checkable gate for this row, the same way
|
|
45
45
|
`coord diagnose --graph` is the checkable gate for graphify freshness.
|
|
46
46
|
|
|
47
|
+
**#2443: a LIVE `coord drive` session now self-heals mid-run too.** #2436
|
|
48
|
+
above only helps *before* a new launch — it says nothing about a session
|
|
49
|
+
that was already running, with the OLD code loaded into memory, when the fix
|
|
50
|
+
landed. Python never reloads an already-imported module, so a stale live
|
|
51
|
+
session has no way to notice a fix on its own. `coord/drive.py`'s poll loop
|
|
52
|
+
now watches its own `WAIT` actions: once the identical wait reason repeats
|
|
53
|
+
`_SELF_HEAL_WAIT_STREAK` (10) polls in a row, it compares its own on-disk
|
|
54
|
+
`coord` HEAD (captured once, at session start) against the current one
|
|
55
|
+
(`coord.self_health.self_freshness(fetch=False)` — a local `git rev-parse
|
|
56
|
+
HEAD`, no network). If the checkout moved underneath it, the session exits
|
|
57
|
+
`EXIT_SELF_STALE` — a clean, non-permanent exit `coord drive-queue`'s
|
|
58
|
+
ordinary retry/relaunch path picks straight back up under the current code —
|
|
59
|
+
instead of continuing to poll dead logic for the rest of `--deadline`. This
|
|
60
|
+
is the actual fix for the incident #2436 diagnosed after the fact: a live
|
|
61
|
+
session on dellserver polled one unfetchable path every ~60s for 2+ hours
|
|
62
|
+
after the #2319/#2320 fix that would have resolved it was already on disk.
|
|
63
|
+
|
|
47
64
|
Not academic. #1394 (worker strands uncommitted work, then cleanup destroys it)
|
|
48
65
|
sat merged-but-undeployed, and the very next dispatch — #1402 — hit the
|
|
49
66
|
identical bug: **$3.44 and 10 minutes lost to something already fixed on
|
|
@@ -39,6 +39,7 @@ from coord.drive import (
|
|
|
39
39
|
EXIT_DISPATCH_REFUSED,
|
|
40
40
|
EXIT_ESCALATED,
|
|
41
41
|
EXIT_OK,
|
|
42
|
+
EXIT_SELF_STALE,
|
|
42
43
|
EXIT_TERMINAL_FAILURE,
|
|
43
44
|
EXIT_USAGE,
|
|
44
45
|
RUN,
|
|
@@ -4664,7 +4665,7 @@ def driver_factory(tmp_path, monkeypatch, capsys):
|
|
|
4664
4665
|
|
|
4665
4666
|
def make(
|
|
4666
4667
|
payloads, *, opts=None, verifier=None, config=None, oracle_gate=None,
|
|
4667
|
-
usage_prober=None, ticks=200,
|
|
4668
|
+
usage_prober=None, self_head_probe=None, ticks=200,
|
|
4668
4669
|
):
|
|
4669
4670
|
clock = {"t": 0.0}
|
|
4670
4671
|
recorded: list[list[str]] = []
|
|
@@ -4688,6 +4689,16 @@ def driver_factory(tmp_path, monkeypatch, capsys):
|
|
|
4688
4689
|
# probe at all), which the gate always treats as "proceed,
|
|
4689
4690
|
# silently". Tests exercising the gate itself pass their own.
|
|
4690
4691
|
usage_prober=usage_prober or (lambda: PlanLimits(status="unknown")),
|
|
4692
|
+
# #2443: default to a stub reporting a constant, never-moving
|
|
4693
|
+
# HEAD — same "opt in only the test that needs it" posture as
|
|
4694
|
+
# *usage_prober* above. Without this, every driver test would
|
|
4695
|
+
# exercise the REAL probe (a handful of local `git` reads
|
|
4696
|
+
# against this actual checkout, routed through `fake_run` above
|
|
4697
|
+
# since `coord.self_health` imports the same `subprocess`
|
|
4698
|
+
# module object) — harmless, but tying every other test's
|
|
4699
|
+
# behaviour to this repo's own git state is exactly the kind of
|
|
4700
|
+
# incidental coupling worth avoiding.
|
|
4701
|
+
self_head_probe=self_head_probe or (lambda: "unchanging-sha"),
|
|
4691
4702
|
sleeper=lambda secs: clock.__setitem__("t", clock["t"] + secs),
|
|
4692
4703
|
clock=lambda: clock["t"],
|
|
4693
4704
|
)
|
|
@@ -5322,6 +5333,66 @@ def test_driver_returns_the_deadline_code_when_time_runs_out(driver_factory, cap
|
|
|
5322
5333
|
assert "deadline" in capsys.readouterr().err
|
|
5323
5334
|
|
|
5324
5335
|
|
|
5336
|
+
def test_driver_self_heals_when_code_moves_underneath_a_stuck_wait(
|
|
5337
|
+
driver_factory, capsys,
|
|
5338
|
+
):
|
|
5339
|
+
"""#2443: the claude-coordinator#2286 shape end to end. `_decide_
|
|
5340
|
+
advisory`'s "could not verify branch commits (git fetch failed),
|
|
5341
|
+
retrying" WAIT (#2426) repeats byte-for-byte every poll as long as
|
|
5342
|
+
nothing about the underlying condition changes — exactly what a stuck
|
|
5343
|
+
`git fetch` looks like, and exactly what a session running STALE
|
|
5344
|
+
in-memory `coord/drive.py` code can never resolve on its own (Python
|
|
5345
|
+
never reloads an already-imported module). If this session's own
|
|
5346
|
+
on-disk checkout moves while it is stuck in that loop, it must self-exit
|
|
5347
|
+
(`EXIT_SELF_STALE`) instead of polling the same dead logic to
|
|
5348
|
+
`--deadline` — the recovery is `coord drive-queue` relaunching fresh,
|
|
5349
|
+
not this process outliving its own bug fix."""
|
|
5350
|
+
calls = {"n": 0}
|
|
5351
|
+
|
|
5352
|
+
def probe():
|
|
5353
|
+
calls["n"] += 1
|
|
5354
|
+
# Call 1 is `_loop`'s own start-of-run baseline capture. Every call
|
|
5355
|
+
# after that is a self-heal re-check, made only once the WAIT
|
|
5356
|
+
# streak crosses the threshold — return a DIFFERENT sha from the
|
|
5357
|
+
# second call onward to simulate a fix landing mid-run.
|
|
5358
|
+
return "aaaaaaaaaaaa" if calls["n"] == 1 else "bbbbbbbbbbbb"
|
|
5359
|
+
|
|
5360
|
+
driver = driver_factory(
|
|
5361
|
+
[board(status="advisory", branch="issue-1392-x")],
|
|
5362
|
+
opts=DriveOptions(machine="precision", poll=1.0, deadline_mins=60.0),
|
|
5363
|
+
verifier=FakeVerifier(has_commits=None),
|
|
5364
|
+
self_head_probe=probe,
|
|
5365
|
+
)
|
|
5366
|
+
assert driver.run() == EXIT_SELF_STALE
|
|
5367
|
+
err = capsys.readouterr().err
|
|
5368
|
+
assert "code changed underneath this session" in err
|
|
5369
|
+
assert "aaaaaaaa" in err # the recorded start sha, truncated to 8 chars
|
|
5370
|
+
assert "bbbbbbbb" in err # the recorded moved-to sha, truncated
|
|
5371
|
+
# It genuinely waited out the streak threshold instead of firing on the
|
|
5372
|
+
# very first repeat of the label — the start capture plus AT LEAST one
|
|
5373
|
+
# re-check, never on call 1 alone.
|
|
5374
|
+
assert calls["n"] >= 2
|
|
5375
|
+
|
|
5376
|
+
|
|
5377
|
+
def test_driver_keeps_waiting_when_the_same_wait_repeats_but_code_has_not_moved(
|
|
5378
|
+
driver_factory, capsys,
|
|
5379
|
+
):
|
|
5380
|
+
"""The other half of #2443: an identical WAIT label repeating is not, on
|
|
5381
|
+
its own, grounds to self-exit — only a MOVED on-disk HEAD is. The
|
|
5382
|
+
ordinary, overwhelmingly common case (the underlying condition just
|
|
5383
|
+
genuinely has not resolved yet) must keep polling exactly as before,
|
|
5384
|
+
all the way to `--deadline` — this must never fire for a
|
|
5385
|
+
slow-but-progressing wait."""
|
|
5386
|
+
driver = driver_factory(
|
|
5387
|
+
[board(status="advisory", branch="issue-1392-x")],
|
|
5388
|
+
opts=DriveOptions(machine="precision", poll=1.0, deadline_mins=0.2),
|
|
5389
|
+
verifier=FakeVerifier(has_commits=None),
|
|
5390
|
+
self_head_probe=lambda: "unchanging-sha",
|
|
5391
|
+
)
|
|
5392
|
+
assert driver.run() == EXIT_DEADLINE
|
|
5393
|
+
assert "deadline" in capsys.readouterr().err
|
|
5394
|
+
|
|
5395
|
+
|
|
5325
5396
|
def test_driver_tolerates_a_transport_blip_mid_loop_and_retries(driver_factory, capsys):
|
|
5326
5397
|
"""A daemon blip must be a retry next poll, never a traceback."""
|
|
5327
5398
|
driver = driver_factory([board(status="merged")])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_coordinator-0.5.172 → code_coordinator-0.5.173}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.172 → code_coordinator-0.5.173}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.172 → code_coordinator-0.5.173}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.172 → code_coordinator-0.5.173}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
File without changes
|
{code_coordinator-0.5.172 → code_coordinator-0.5.173}/code_coordinator.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/components.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/icons/icon-192.png
RENAMED
|
File without changes
|
{code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/icons/icon-512.png
RENAMED
|
File without changes
|
{code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/icons/icon.svg
RENAMED
|
File without changes
|
{code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/dist/index.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/e2e/deep-link.spec.ts
RENAMED
|
File without changes
|
{code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/e2e/fixtureServer.ts
RENAMED
|
File without changes
|
|
File without changes
|
{code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/e2e/realtime.spec.ts
RENAMED
|
File without changes
|
{code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/e2e/shell.spec.ts
RENAMED
|
File without changes
|
{code_coordinator-0.5.172 → code_coordinator-0.5.173}/coord/dashboard/webapp/e2e/smoke.spec.ts
RENAMED
|
File without changes
|