code-coordinator 0.5.165__tar.gz → 0.5.167__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.165 → code_coordinator-0.5.167}/PKG-INFO +1 -1
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/drive.py +111 -39
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_drive.py +125 -5
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/pipeline.rs +18 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/tests.rs +57 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/types.rs +3 -5
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.github/workflows/acceptance-web.yml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/.gitignore +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/CLAUDE.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/GOAL.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/LICENSE +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/MANIFEST.in +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/README.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/__init__.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/agent.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/audit.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/block_log.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/board_service.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/brain.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/claim.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/cli.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/client.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/comments.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/config.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dao.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/db.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/deps.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/events.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/filelock.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/freshness.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/gates.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/goal.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/context.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/models.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/render.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/health/units.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/hooks.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/interactive.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/models.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/network.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/notify.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/openapi.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/parentage.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/plans.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/progress.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/release_window.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/reports.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/review.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/smoke.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/split_work.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/state.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/test_author.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/test_report.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/usage.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/install-agent.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/pyproject.toml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/setup.cfg +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/__init__.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/conftest.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_skills_self_heal.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_config.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_db.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_events.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_init.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_models.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_network.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_review.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_session.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_split.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_state.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.165 → code_coordinator-0.5.167}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -890,7 +890,20 @@ def _decide_acceptance_author(
|
|
|
890
890
|
# pass-through.
|
|
891
891
|
branch = state.acceptance_author_branch
|
|
892
892
|
probe = replace(state, work_branch=branch) if branch else state
|
|
893
|
-
|
|
893
|
+
commits = verifier.branch_has_commits(probe) if branch else False
|
|
894
|
+
if commits is None:
|
|
895
|
+
# #2426: `None` means the check could not be completed (e.g. a
|
|
896
|
+
# transient `git fetch` failure) — NOT evidence the branch is
|
|
897
|
+
# empty. Wait for the next poll to retry rather than
|
|
898
|
+
# misdiagnosing a verification failure as the terminal
|
|
899
|
+
# zero-commit dead end below.
|
|
900
|
+
return _wait(
|
|
901
|
+
label=(
|
|
902
|
+
f"ACCEPTANCE: JIT slice {aid} branch {branch!r} — could "
|
|
903
|
+
"not verify commits (git fetch failed), retrying"
|
|
904
|
+
)
|
|
905
|
+
)
|
|
906
|
+
if not commits:
|
|
894
907
|
# #2061: a commit-less ADVISORY row IS what an earlier-landed
|
|
895
908
|
# slice's stale/retried author row looks like — check the
|
|
896
909
|
# manifest before declaring failure.
|
|
@@ -936,7 +949,20 @@ def _decide_acceptance_author(
|
|
|
936
949
|
# `advisory` branch's probe exactly.
|
|
937
950
|
branch = state.acceptance_author_branch
|
|
938
951
|
probe = replace(state, work_branch=branch) if branch else state
|
|
939
|
-
|
|
952
|
+
commits = verifier.branch_has_commits(probe) if branch else False
|
|
953
|
+
if commits is None:
|
|
954
|
+
# #2426: same distinction as the ADVISORY branch above — a
|
|
955
|
+
# verification failure is not proof of an empty branch. This is
|
|
956
|
+
# exactly the claude-coordinator#2286 incident: a real pushed
|
|
957
|
+
# commit sat on the remote while a transient `git fetch` failure
|
|
958
|
+
# made this arm declare the branch commit-less and terminal.
|
|
959
|
+
return _wait(
|
|
960
|
+
label=(
|
|
961
|
+
f"ACCEPTANCE: JIT slice {aid} branch {branch!r} — could "
|
|
962
|
+
"not verify commits (git fetch failed), retrying"
|
|
963
|
+
)
|
|
964
|
+
)
|
|
965
|
+
if not commits:
|
|
940
966
|
# #2061 (coord-portal#13): a re-dispatched author that lands in
|
|
941
967
|
# a world where the slice is ALREADY on the default branch
|
|
942
968
|
# correctly does nothing — DONE with zero commits — and that is
|
|
@@ -1221,7 +1247,7 @@ def _acceptance_message(message: str, state: IssueState) -> str:
|
|
|
1221
1247
|
class MergeVerifier(Protocol):
|
|
1222
1248
|
"""The git/GitHub questions the state machine cannot answer itself."""
|
|
1223
1249
|
|
|
1224
|
-
def branch_has_commits(self, state: IssueState) -> bool: ...
|
|
1250
|
+
def branch_has_commits(self, state: IssueState) -> bool | None: ...
|
|
1225
1251
|
|
|
1226
1252
|
def verify_merged(self, state: IssueState) -> bool: ...
|
|
1227
1253
|
|
|
@@ -1254,9 +1280,23 @@ class GitMergeVerifier:
|
|
|
1254
1280
|
check=False,
|
|
1255
1281
|
)
|
|
1256
1282
|
|
|
1257
|
-
def branch_has_commits(self, state: IssueState) -> bool:
|
|
1258
|
-
"""True when *branch*
|
|
1259
|
-
default branch
|
|
1283
|
+
def branch_has_commits(self, state: IssueState) -> bool | None:
|
|
1284
|
+
"""``True``/``False`` when *branch* was actually checked against the
|
|
1285
|
+
default branch; ``None`` when the check could not be completed.
|
|
1286
|
+
|
|
1287
|
+
``False`` means VERIFIED empty: the fetches and the ``rev-list``
|
|
1288
|
+
count all succeeded, and the count was exactly 0. ``None`` means no
|
|
1289
|
+
such evidence exists — a transient ``git fetch`` failure (network
|
|
1290
|
+
blip, GitHub hiccup, SSH auth glitch — see ``is_ci_unreadable_reason``
|
|
1291
|
+
for the CI-side equivalent of this exact distinction), a missing
|
|
1292
|
+
local checkout, or an unparsable ``rev-list`` count. Before #2426
|
|
1293
|
+
every one of those collapsed into ``False``, indistinguishable from a
|
|
1294
|
+
genuinely empty branch — and callers treated ``False`` as proof of a
|
|
1295
|
+
TERMINAL dead end, misdiagnosing a fetch hiccup as "nothing was ever
|
|
1296
|
+
authored" (claude-coordinator#2286: a real, pushed commit sat on the
|
|
1297
|
+
remote while `coord drive` declared the branch commit-less and burned
|
|
1298
|
+
11 retry cycles re-authoring from scratch). ``None`` must never be
|
|
1299
|
+
treated as "no commits" — callers wait and let the next poll retry.
|
|
1260
1300
|
|
|
1261
1301
|
Used to tell a REAL zero-commit advisory apart from the #1357 false
|
|
1262
1302
|
positive, where the agent downgrades a good DONE over an artifact glob
|
|
@@ -1267,19 +1307,19 @@ class GitMergeVerifier:
|
|
|
1267
1307
|
return False
|
|
1268
1308
|
base = self._base(state)
|
|
1269
1309
|
if base is None:
|
|
1270
|
-
return
|
|
1310
|
+
return None
|
|
1271
1311
|
target = state.repo_default_branch or "main"
|
|
1272
1312
|
if self._git(base, "fetch", "--quiet", "origin", target).returncode != 0:
|
|
1273
|
-
return
|
|
1313
|
+
return None
|
|
1274
1314
|
if self._git(base, "fetch", "--quiet", "origin", branch).returncode != 0:
|
|
1275
|
-
return
|
|
1315
|
+
return None
|
|
1276
1316
|
proc = self._git(base, "rev-list", "--count", f"origin/{target}..FETCH_HEAD")
|
|
1277
1317
|
if proc.returncode != 0:
|
|
1278
|
-
return
|
|
1318
|
+
return None
|
|
1279
1319
|
try:
|
|
1280
1320
|
return int((proc.stdout or "0").strip() or 0) > 0
|
|
1281
1321
|
except ValueError:
|
|
1282
|
-
return
|
|
1322
|
+
return None
|
|
1283
1323
|
|
|
1284
1324
|
def verify_merged(self, state: IssueState) -> bool:
|
|
1285
1325
|
"""Confirm the branch actually landed on the target.
|
|
@@ -1699,16 +1739,22 @@ def decide(
|
|
|
1699
1739
|
pass
|
|
1700
1740
|
elif state.work_status == "advisory":
|
|
1701
1741
|
advisory = _decide_advisory(state, opts, counters, machine, verifier)
|
|
1702
|
-
# #2416: `_decide_advisory`
|
|
1703
|
-
#
|
|
1704
|
-
#
|
|
1742
|
+
# #2416: `_decide_advisory` returns a RUN action (a bounded `coord
|
|
1743
|
+
# retry` dispatch) for the zero-commit case, not only an EXIT —
|
|
1744
|
+
# `is_exit` alone would let a RUN action fall through to the
|
|
1705
1745
|
# Test/Review/Merge logic below as though the row were validated
|
|
1706
|
-
# work.
|
|
1707
|
-
#
|
|
1708
|
-
#
|
|
1709
|
-
|
|
1746
|
+
# work. #2426: it returns an explicit WAIT for the "could not verify
|
|
1747
|
+
# — fetch failed" case, which must ALSO be this poll's whole answer,
|
|
1748
|
+
# not folded into the fall-through below (that fall-through means
|
|
1749
|
+
# "commits confirmed present, proceed as normal work", which a
|
|
1750
|
+
# verification failure has not established either way). Only `None`
|
|
1751
|
+
# — "proceeding under --accept-advisory", commits confirmed present
|
|
1752
|
+
# — falls through, carrying its warning.
|
|
1753
|
+
if advisory is not None:
|
|
1710
1754
|
return advisory
|
|
1711
|
-
warnings =
|
|
1755
|
+
warnings = (
|
|
1756
|
+
"ADVISORY with commits present — proceeding per --accept-advisory (#1357)",
|
|
1757
|
+
)
|
|
1712
1758
|
elif state.work_status == "refused_policy":
|
|
1713
1759
|
# #2234: the worker exited cleanly, pushed 0 commits, and its own
|
|
1714
1760
|
# final message cited a standing repo-rule prohibition (`coord.agent.
|
|
@@ -1762,18 +1808,25 @@ def decide(
|
|
|
1762
1808
|
# applies when there is nothing to test, review, or merge. A labelled
|
|
1763
1809
|
# issue whose worker DID push commits (the label describes the common
|
|
1764
1810
|
# case, not a hard rule) falls through unchanged — `branch_has_commits`
|
|
1765
|
-
# is False only for the genuine 0-commit shape
|
|
1766
|
-
|
|
1767
|
-
|
|
1768
|
-
|
|
1769
|
-
|
|
1770
|
-
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
|
|
1776
|
-
|
|
1811
|
+
# is False only for the genuine 0-commit shape; `None` (#2426 — the
|
|
1812
|
+
# check could not be completed, e.g. a `git fetch` failure) is neither
|
|
1813
|
+
# "done" nor "push commits", so it waits below instead of guessing.
|
|
1814
|
+
if state.work_status == "done" and DELIVERABLE_ANALYSIS_LABEL in state.issue_labels:
|
|
1815
|
+
commits = verifier.branch_has_commits(state) if state.work_branch else False
|
|
1816
|
+
if commits is None:
|
|
1817
|
+
return _wait(
|
|
1818
|
+
label=(
|
|
1819
|
+
f"ANALYSIS: {state.work_aid} — could not verify branch "
|
|
1820
|
+
"commits (git fetch failed), retrying"
|
|
1821
|
+
)
|
|
1822
|
+
)
|
|
1823
|
+
if not commits:
|
|
1824
|
+
return _succeed(
|
|
1825
|
+
f"✓ ANALYSIS DELIVERABLE — {state.work_aid} completed with 0 "
|
|
1826
|
+
f"commits (issue labelled `{DELIVERABLE_ANALYSIS_LABEL}`); the "
|
|
1827
|
+
"worker's final message is the deliverable and was posted to "
|
|
1828
|
+
"the issue automatically — nothing to test, review, or merge."
|
|
1829
|
+
)
|
|
1777
1830
|
|
|
1778
1831
|
# A 'done' row with no branch never pushed anything either.
|
|
1779
1832
|
if not state.work_branch:
|
|
@@ -1930,7 +1983,7 @@ def _decide_advisory(
|
|
|
1930
1983
|
counters: DriveCounters,
|
|
1931
1984
|
machine: str,
|
|
1932
1985
|
verifier: MergeVerifier,
|
|
1933
|
-
) -> Action:
|
|
1986
|
+
) -> Action | None:
|
|
1934
1987
|
"""The #448 downgrade: the agent flagged a zero-commit / stash-miss exit.
|
|
1935
1988
|
|
|
1936
1989
|
#1357 makes this a FALSE POSITIVE for every Python-only headless assignment
|
|
@@ -1952,8 +2005,30 @@ def _decide_advisory(
|
|
|
1952
2005
|
advisory_retries`) before finally giving up, so a row whose correct
|
|
1953
2006
|
resolution really is "dispatch something else" still reaches a terminal
|
|
1954
2007
|
`_die()` naming `coord retry` for a human — never an unbounded loop.
|
|
2008
|
+
|
|
2009
|
+
Returns ``None`` only for the "commits confirmed present, proceed under
|
|
2010
|
+
--accept-advisory" case — the caller (`decide`) reads ``None`` as "fall
|
|
2011
|
+
through to the normal Test/Review/Merge machinery", the same "nothing to
|
|
2012
|
+
report, proceed" convention `_decide_test`/`_decide_review`/
|
|
2013
|
+
`_decide_acceptance_gate` already use. Every other outcome, including the
|
|
2014
|
+
#2426 "could not verify" case below, returns a real ``Action`` that IS
|
|
2015
|
+
this poll's whole answer.
|
|
1955
2016
|
"""
|
|
1956
|
-
|
|
2017
|
+
branch = state.work_branch
|
|
2018
|
+
commits = verifier.branch_has_commits(state) if branch else False
|
|
2019
|
+
if commits is None:
|
|
2020
|
+
# #2426: `git fetch` failing does not mean the branch is empty — it
|
|
2021
|
+
# means nothing was learned. Wait for the next poll to retry the
|
|
2022
|
+
# check itself; do NOT spend an `advisory_retries` budget attempt (or
|
|
2023
|
+
# worse, `_die()`) on a verification failure that says nothing about
|
|
2024
|
+
# what the branch actually contains.
|
|
2025
|
+
return _wait(
|
|
2026
|
+
label=(
|
|
2027
|
+
f"WORK: {state.work_aid} ADVISORY — could not verify branch "
|
|
2028
|
+
"commits (git fetch failed), retrying"
|
|
2029
|
+
)
|
|
2030
|
+
)
|
|
2031
|
+
if not commits:
|
|
1957
2032
|
budget = opts.max_work_retries
|
|
1958
2033
|
if counters.advisory_retries >= budget:
|
|
1959
2034
|
return _die(
|
|
@@ -1992,12 +2067,9 @@ def _decide_advisory(
|
|
|
1992
2067
|
" Proceed anyway with --accept-advisory (and fix #1357 to stop "
|
|
1993
2068
|
"needing it)."
|
|
1994
2069
|
)
|
|
1995
|
-
|
|
1996
|
-
|
|
1997
|
-
|
|
1998
|
-
"ADVISORY with commits present — proceeding per --accept-advisory (#1357)",
|
|
1999
|
-
),
|
|
2000
|
-
)
|
|
2070
|
+
# Commits confirmed present, --accept-advisory set: fall through to the
|
|
2071
|
+
# normal Test/Review/Merge machinery (the caller attaches the warning).
|
|
2072
|
+
return None
|
|
2001
2073
|
|
|
2002
2074
|
|
|
2003
2075
|
def _decide_acceptance_gate(
|
|
@@ -87,7 +87,7 @@ class FakeVerifier:
|
|
|
87
87
|
def __init__(
|
|
88
88
|
self,
|
|
89
89
|
*,
|
|
90
|
-
has_commits: bool = True,
|
|
90
|
+
has_commits: bool | None = True,
|
|
91
91
|
merged: bool = True,
|
|
92
92
|
head_sha: str | None = "deadbeef" * 5,
|
|
93
93
|
) -> None:
|
|
@@ -98,7 +98,7 @@ class FakeVerifier:
|
|
|
98
98
|
self.merged_calls = 0
|
|
99
99
|
self.head_sha_calls = 0
|
|
100
100
|
|
|
101
|
-
def branch_has_commits(self, s: IssueState) -> bool:
|
|
101
|
+
def branch_has_commits(self, s: IssueState) -> bool | None:
|
|
102
102
|
self.commits_calls += 1
|
|
103
103
|
return self._has_commits
|
|
104
104
|
|
|
@@ -1019,6 +1019,29 @@ def test_oracle_active_advisory_with_no_commits_is_not_terminal_when_the_slice_a
|
|
|
1019
1019
|
)
|
|
1020
1020
|
|
|
1021
1021
|
|
|
1022
|
+
def test_oracle_active_advisory_with_unverifiable_branch_waits():
|
|
1023
|
+
"""#2426: `branch_has_commits` returning `None` (e.g. a `git fetch`
|
|
1024
|
+
failure) must NOT be treated as "no commits" — that misdiagnoses a
|
|
1025
|
+
transient verification failure as the terminal "nothing was authored"
|
|
1026
|
+
dead end (claude-coordinator#2286: a real, pushed commit sat on the
|
|
1027
|
+
remote while this exact path declared the branch commit-less). It must
|
|
1028
|
+
wait and let the next poll retry the check instead."""
|
|
1029
|
+
oracle = OracleDecision(True, "ORACLE DRIVE", tracking_issue=1120)
|
|
1030
|
+
verifier = FakeVerifier(has_commits=None)
|
|
1031
|
+
action = step(
|
|
1032
|
+
oracle_state(
|
|
1033
|
+
acceptance_author_aid="ta1",
|
|
1034
|
+
acceptance_author_status="advisory",
|
|
1035
|
+
acceptance_author_branch="test-author-ms-65-slice-2286",
|
|
1036
|
+
),
|
|
1037
|
+
oracle=oracle,
|
|
1038
|
+
verifier=verifier,
|
|
1039
|
+
)
|
|
1040
|
+
assert action.kind == WAIT
|
|
1041
|
+
assert not action.is_exit
|
|
1042
|
+
assert "no commits" not in (action.message or "")
|
|
1043
|
+
|
|
1044
|
+
|
|
1022
1045
|
def test_oracle_active_advisory_with_commits_requires_accept_advisory():
|
|
1023
1046
|
"""The #1357 false-positive shape — real commits, downgraded to
|
|
1024
1047
|
advisory anyway — must not be treated as "still landing"; it needs the
|
|
@@ -1148,6 +1171,29 @@ def test_oracle_active_done_with_no_branch_is_terminal():
|
|
|
1148
1171
|
assert "no commits" in action.message
|
|
1149
1172
|
|
|
1150
1173
|
|
|
1174
|
+
def test_oracle_active_done_with_unverifiable_branch_waits():
|
|
1175
|
+
"""#2426: the exact incident this issue documents — a terminal
|
|
1176
|
+
`test-author` DONE row whose branch really did carry a commit
|
|
1177
|
+
(claude-coordinator#2286's `test-author-ms-65-slice-2286`, commit
|
|
1178
|
+
`250b4df8`), observed through a `git fetch` failure. Must wait and
|
|
1179
|
+
retry, not declare DONE terminal-with-no-commits and burn a re-author
|
|
1180
|
+
cycle."""
|
|
1181
|
+
oracle = OracleDecision(True, "ORACLE DRIVE", tracking_issue=1120)
|
|
1182
|
+
verifier = FakeVerifier(has_commits=None)
|
|
1183
|
+
action = step(
|
|
1184
|
+
oracle_state(
|
|
1185
|
+
acceptance_author_aid="ta1",
|
|
1186
|
+
acceptance_author_status="done",
|
|
1187
|
+
acceptance_author_branch="test-author-ms-65-slice-2286",
|
|
1188
|
+
),
|
|
1189
|
+
oracle=oracle,
|
|
1190
|
+
verifier=verifier,
|
|
1191
|
+
)
|
|
1192
|
+
assert action.kind == WAIT
|
|
1193
|
+
assert not action.is_exit
|
|
1194
|
+
assert "no commits" not in (action.message or "")
|
|
1195
|
+
|
|
1196
|
+
|
|
1151
1197
|
def test_oracle_active_done_with_commits_lands_the_slice():
|
|
1152
1198
|
"""#2079: a DONE slice whose branch carries commits is MERGED by this
|
|
1153
1199
|
driver, not waited on.
|
|
@@ -1752,6 +1798,23 @@ def test_advisory_with_no_commits_retries_via_coord_retry_then_stops_at_the_cap(
|
|
|
1752
1798
|
assert verifier.commits_calls == 2
|
|
1753
1799
|
|
|
1754
1800
|
|
|
1801
|
+
def test_advisory_with_unverifiable_branch_waits_without_spending_a_retry():
|
|
1802
|
+
"""#2426: a `git fetch` failure while checking the branch is not proof
|
|
1803
|
+
it's empty. Must wait for the next poll rather than either spending an
|
|
1804
|
+
`advisory_retries` budget attempt or (once the budget is spent) dying
|
|
1805
|
+
with the terminal "no commits" message on evidence that never
|
|
1806
|
+
materialized."""
|
|
1807
|
+
verifier = FakeVerifier(has_commits=None)
|
|
1808
|
+
counters = DriveCounters()
|
|
1809
|
+
opts = DriveOptions(machine="precision", max_work_retries=1)
|
|
1810
|
+
s = state(work_aid="w1", work_status="advisory", work_branch="b")
|
|
1811
|
+
|
|
1812
|
+
action = step(s, opts, verifier=verifier, counters=counters)
|
|
1813
|
+
assert action.kind == WAIT
|
|
1814
|
+
assert not action.is_exit
|
|
1815
|
+
assert counters.advisory_retries == 0
|
|
1816
|
+
|
|
1817
|
+
|
|
1755
1818
|
def test_advisory_with_no_commits_retry_is_unaffected_by_accept_advisory():
|
|
1756
1819
|
"""#1606: `--accept-advisory` exists to unblock the #1357 false-positive
|
|
1757
1820
|
(real commits, downgraded status) — it must NOT adopt a genuine
|
|
@@ -1850,6 +1913,23 @@ def test_analysis_deliverable_done_with_no_commits_succeeds():
|
|
|
1850
1913
|
assert "deliverable:analysis" in action.message
|
|
1851
1914
|
|
|
1852
1915
|
|
|
1916
|
+
def test_analysis_deliverable_done_with_unverifiable_branch_waits():
|
|
1917
|
+
"""#2426: a `git fetch` failure while checking an analysis-labelled
|
|
1918
|
+
branch is neither "0-commit success" nor "commits pushed, fall
|
|
1919
|
+
through" — it's no evidence at all. Must wait for the next poll."""
|
|
1920
|
+
action = step(
|
|
1921
|
+
state(
|
|
1922
|
+
work_aid="w1",
|
|
1923
|
+
work_status="done",
|
|
1924
|
+
work_branch="issue-2132-diagnose",
|
|
1925
|
+
issue_labels=("deliverable:analysis",),
|
|
1926
|
+
),
|
|
1927
|
+
verifier=FakeVerifier(has_commits=None),
|
|
1928
|
+
)
|
|
1929
|
+
assert action.kind == WAIT
|
|
1930
|
+
assert not action.is_exit
|
|
1931
|
+
|
|
1932
|
+
|
|
1853
1933
|
def test_analysis_deliverable_done_with_no_branch_at_all_succeeds():
|
|
1854
1934
|
"""Same as above when the reap never captured a branch name at all
|
|
1855
1935
|
(e.g. the worktree was already gone) — `not state.work_branch` alone
|
|
@@ -4290,20 +4370,60 @@ def test_branch_has_commits_is_false_for_zero(recorded_git, tmp_path):
|
|
|
4290
4370
|
assert GitMergeVerifier(repo_path=str(tmp_path)).branch_has_commits(s) is False
|
|
4291
4371
|
|
|
4292
4372
|
|
|
4293
|
-
def
|
|
4373
|
+
def test_branch_has_commits_is_none_when_rev_list_fails(recorded_git, tmp_path):
|
|
4374
|
+
"""#2426: both fetches succeeded but `rev-list` itself failed — still no
|
|
4375
|
+
completed count, so still `None`, not `False`."""
|
|
4376
|
+
_calls, scripted = recorded_git
|
|
4377
|
+
(tmp_path / ".git").mkdir()
|
|
4378
|
+
scripted[("rev-list",)] = (128, "")
|
|
4379
|
+
s = state(work_branch="b")
|
|
4380
|
+
assert GitMergeVerifier(repo_path=str(tmp_path)).branch_has_commits(s) is None
|
|
4381
|
+
|
|
4382
|
+
|
|
4383
|
+
def test_branch_has_commits_is_none_when_rev_list_output_is_unparsable(
|
|
4294
4384
|
recorded_git, tmp_path
|
|
4295
4385
|
):
|
|
4386
|
+
"""#2426: a malformed count is the same "learned nothing" shape as a
|
|
4387
|
+
failed command — `None`, not `False`."""
|
|
4388
|
+
_calls, scripted = recorded_git
|
|
4389
|
+
(tmp_path / ".git").mkdir()
|
|
4390
|
+
scripted[("rev-list",)] = (0, "not-a-number\n")
|
|
4391
|
+
s = state(work_branch="b")
|
|
4392
|
+
assert GitMergeVerifier(repo_path=str(tmp_path)).branch_has_commits(s) is None
|
|
4393
|
+
|
|
4394
|
+
|
|
4395
|
+
def test_branch_has_commits_is_none_when_a_fetch_fails(recorded_git, tmp_path):
|
|
4396
|
+
"""#2426: a `git fetch` failure (returncode 128 here covers both "branch
|
|
4397
|
+
genuinely doesn't exist on the remote" and "transient network/auth
|
|
4398
|
+
blip" — the two are indistinguishable from the exit code alone) must NOT
|
|
4399
|
+
collapse into `False`. `False` is reserved for a check that actually
|
|
4400
|
+
completed and counted zero commits; a failed fetch produced no such
|
|
4401
|
+
count, so it is `None` — "couldn't verify" — not "verified empty"."""
|
|
4296
4402
|
_calls, scripted = recorded_git
|
|
4297
4403
|
(tmp_path / ".git").mkdir()
|
|
4298
4404
|
scripted[("fetch", "b")] = (128, "")
|
|
4299
4405
|
s = state(work_branch="b")
|
|
4300
|
-
assert GitMergeVerifier(repo_path=str(tmp_path)).branch_has_commits(s) is
|
|
4406
|
+
assert GitMergeVerifier(repo_path=str(tmp_path)).branch_has_commits(s) is None
|
|
4407
|
+
|
|
4408
|
+
|
|
4409
|
+
def test_branch_has_commits_is_none_when_the_target_fetch_fails(
|
|
4410
|
+
recorded_git, tmp_path
|
|
4411
|
+
):
|
|
4412
|
+
"""Same #2426 distinction, for the OTHER fetch (`origin/<target>`)."""
|
|
4413
|
+
_calls, scripted = recorded_git
|
|
4414
|
+
(tmp_path / ".git").mkdir()
|
|
4415
|
+
scripted[("fetch", "main")] = (128, "")
|
|
4416
|
+
s = state(work_branch="b", repo_default_branch="main")
|
|
4417
|
+
assert GitMergeVerifier(repo_path=str(tmp_path)).branch_has_commits(s) is None
|
|
4301
4418
|
|
|
4302
4419
|
|
|
4303
4420
|
def test_the_verifiers_are_inert_without_a_local_checkout(tmp_path):
|
|
4421
|
+
"""#2426: no local checkout means no evidence either way — `None`, not
|
|
4422
|
+
`False`. `verify_merged` is untouched by #2426 (GitHub is its primary
|
|
4423
|
+
source of truth, not this local checkout) and keeps its `False`."""
|
|
4304
4424
|
verifier = GitMergeVerifier(repo_path=str(tmp_path / "nope"))
|
|
4305
4425
|
s = state(work_branch="b", repo_github="")
|
|
4306
|
-
assert verifier.branch_has_commits(s) is
|
|
4426
|
+
assert verifier.branch_has_commits(s) is None
|
|
4307
4427
|
assert verifier.verify_merged(s) is False
|
|
4308
4428
|
|
|
4309
4429
|
|
|
@@ -6084,6 +6084,24 @@ impl CoordApp {
|
|
|
6084
6084
|
label = format!("{}\n{}", label, reason);
|
|
6085
6085
|
}
|
|
6086
6086
|
}
|
|
6087
|
+
// #2427: annotate the box a dead-end `coord escalate record`
|
|
6088
|
+
// actually named — e.g. `coord drive` died with "review came
|
|
6089
|
+
// back request-changes and no loop dispatches a fix for this
|
|
6090
|
+
// row" (`coord.dead_end`'s terminal-and-unactionable shapes,
|
|
6091
|
+
// or `coord.drive._escalate_merge`) — but until now that
|
|
6092
|
+
// board record only surfaced as a sidebar-row "[stuck]"
|
|
6093
|
+
// badge (`escalation_badge_span`, a different splice point:
|
|
6094
|
+
// the Pipeline list, not this per-issue Overview strip) or
|
|
6095
|
+
// an operator-pulled `coord escalate list`. Matched on
|
|
6096
|
+
// `esc.stage == name` so only the box the driver actually
|
|
6097
|
+
// blamed gets the marker, not every stage on the row.
|
|
6098
|
+
if let Some(repo) = issue.coord_repo.as_deref() {
|
|
6099
|
+
if let Some(esc) = self.escalation_for(repo, issue.number) {
|
|
6100
|
+
if esc.stage == *name {
|
|
6101
|
+
label = format!("{}\n⚠ blocked — see Log", label);
|
|
6102
|
+
}
|
|
6103
|
+
}
|
|
6104
|
+
}
|
|
6087
6105
|
// Skipped counts as "settled" for prior_all_done: a closed-issue
|
|
6088
6106
|
// stage that never ran is logically done.
|
|
6089
6107
|
let prior_all_done = statuses[..i]
|
|
@@ -12365,6 +12365,63 @@
|
|
|
12365
12365
|
assert!(label.contains("needs a person"), "got: {label}");
|
|
12366
12366
|
}
|
|
12367
12367
|
|
|
12368
|
+
/// #2427: a dead-end `coord escalate record` naming this issue's Review
|
|
12369
|
+
/// stage — the shape `coord.dead_end`/`coord.drive._escalate_dead_end`
|
|
12370
|
+
/// writes when a `request-changes` verdict has nothing left to dispatch
|
|
12371
|
+
/// a fix for — must annotate the Review box on the Overview strip, not
|
|
12372
|
+
/// just the sidebar-row "[stuck]" badge (`escalation_badge_span`) or an
|
|
12373
|
+
/// operator-pulled `coord escalate list`.
|
|
12374
|
+
#[test]
|
|
12375
|
+
fn build_pipeline_widget_annotates_stage_named_by_open_escalation() {
|
|
12376
|
+
let mut app = make_pipeline_app();
|
|
12377
|
+
app.data.assignments.push(_stage_assignment("w1", "work", 1.0, "done"));
|
|
12378
|
+
app.data.assignments.push(_stage_assignment("r1", "review", 3.0, "done"));
|
|
12379
|
+
app.data.escalations.push(EscalationEntry {
|
|
12380
|
+
id: 1,
|
|
12381
|
+
repo_name: "api".to_string(),
|
|
12382
|
+
issue_number: 42,
|
|
12383
|
+
stage: "review".to_string(),
|
|
12384
|
+
assignment_id: Some("r1".to_string()),
|
|
12385
|
+
reason: "review_terminal_no_verdict: review r1 reached status=done \
|
|
12386
|
+
carrying NO verdict"
|
|
12387
|
+
.to_string(),
|
|
12388
|
+
gate_readings: "review_status=done | review_verdict=(none)".to_string(),
|
|
12389
|
+
proposed_command: "coord report-result --assignment r1 ...".to_string(),
|
|
12390
|
+
created_at: Some(1.0),
|
|
12391
|
+
});
|
|
12392
|
+
|
|
12393
|
+
let view = app.build_pipeline_widget().unwrap();
|
|
12394
|
+
let review_label = &view.stages[1].label;
|
|
12395
|
+
assert!(
|
|
12396
|
+
review_label.contains("blocked"),
|
|
12397
|
+
"an open escalation naming the Review stage must annotate its box: got {review_label:?}"
|
|
12398
|
+
);
|
|
12399
|
+
assert!(
|
|
12400
|
+
review_label.contains("see Log"),
|
|
12401
|
+
"the annotation must point the operator at the Log tab: got {review_label:?}"
|
|
12402
|
+
);
|
|
12403
|
+
// The Merge box's own escalation-record check must not fire for a
|
|
12404
|
+
// record whose `stage` is "review" — only the named box gets marked.
|
|
12405
|
+
let merge_label = &view.stages[2].label;
|
|
12406
|
+
assert!(
|
|
12407
|
+
!merge_label.contains("blocked"),
|
|
12408
|
+
"an escalation record scoped to Review must not also mark Merge: got {merge_label:?}"
|
|
12409
|
+
);
|
|
12410
|
+
}
|
|
12411
|
+
|
|
12412
|
+
/// A per-issue Overview box must stay unannotated when there is no open
|
|
12413
|
+
/// escalation for this (repo, issue) at all — the common case, and a
|
|
12414
|
+
/// regression guard against the #2427 annotation firing unconditionally.
|
|
12415
|
+
#[test]
|
|
12416
|
+
fn build_pipeline_widget_no_escalation_annotation_when_none_open() {
|
|
12417
|
+
let mut app = make_pipeline_app();
|
|
12418
|
+
app.data.assignments.push(_stage_assignment("w1", "work", 1.0, "done"));
|
|
12419
|
+
app.data.assignments.push(_stage_assignment("r1", "review", 3.0, "done"));
|
|
12420
|
+
|
|
12421
|
+
let view = app.build_pipeline_widget().unwrap();
|
|
12422
|
+
assert_eq!(view.stages[1].label, "Review");
|
|
12423
|
+
}
|
|
12424
|
+
|
|
12368
12425
|
/// A `merged` row in merge_queue makes the Merge stage Done.
|
|
12369
12426
|
#[test]
|
|
12370
12427
|
fn merge_stage_status_done_from_merge_queue() {
|
|
@@ -814,10 +814,8 @@ pub(crate) struct EscalationEntry {
|
|
|
814
814
|
pub(crate) id: i64,
|
|
815
815
|
pub(crate) repo_name: String,
|
|
816
816
|
pub(crate) issue_number: i64,
|
|
817
|
-
//
|
|
818
|
-
//
|
|
819
|
-
// row/menu, which only needs `reason` + `proposed_command` today.
|
|
820
|
-
#[allow(dead_code)]
|
|
817
|
+
// #2427: which stage box on the Overview strip gets the "blocked" mark
|
|
818
|
+
// — see `CoordApp::build_pipeline_widget`'s `esc.stage == name` check.
|
|
821
819
|
#[serde(default)]
|
|
822
820
|
pub(crate) stage: String,
|
|
823
821
|
#[allow(dead_code)]
|
|
@@ -827,7 +825,7 @@ pub(crate) struct EscalationEntry {
|
|
|
827
825
|
/// Human-readable "key=value | key=value" summary of the gate readings
|
|
828
826
|
/// the driver observed — deliberately NOT JSON (see `coord/db.py`): this
|
|
829
827
|
/// record exists to be read by a human, not machine-parsed.
|
|
830
|
-
#[allow(dead_code)] //
|
|
828
|
+
#[allow(dead_code)] // not yet surfaced in the TUI (unlike `stage`, #2427)
|
|
831
829
|
#[serde(default)]
|
|
832
830
|
pub(crate) gate_readings: String,
|
|
833
831
|
pub(crate) proposed_command: String,
|
|
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.165 → code_coordinator-0.5.167}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.165 → code_coordinator-0.5.167}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.165 → code_coordinator-0.5.167}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.165 → code_coordinator-0.5.167}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
File without changes
|
{code_coordinator-0.5.165 → code_coordinator-0.5.167}/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
|