code-coordinator 0.5.120__tar.gz → 0.5.124__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.120 → code_coordinator-0.5.124}/PKG-INFO +1 -1
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/code_coordinator.egg-info/SOURCES.txt +2 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/code_coordinator.egg-info/scm_file_list.json +2 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/acceptance.py +47 -1
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/agent.py +11 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/acceptance.py +10 -1
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/plan_followup.py +48 -17
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/review.py +133 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/split_work.py +13 -1
- code_coordinator-0.5.124/tests/acceptance/ms-65/board_tabs_2282.rs +852 -0
- code_coordinator-0.5.124/tests/acceptance/ms-65/manifest.yml +137 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_acceptance.py +45 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_fix_headless_review.py +102 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_operational_defaults.py +26 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_review.py +220 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/tests/acceptance.rs +1 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/.gitignore +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/CLAUDE.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/GOAL.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/LICENSE +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/MANIFEST.in +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/README.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/__init__.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/audit.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/block_log.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/board_service.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/brain.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/claim.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/cli.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/client.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/comments.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/config.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dao.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/db.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/deps.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/drive.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/events.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/filelock.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/freshness.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/gates.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/goal.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/context.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/models.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/render.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/health/units.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/hooks.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/interactive.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/models.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/network.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/notify.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/openapi.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/parentage.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/plans.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/progress.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/release_window.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/reports.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/smoke.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/state.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/test_author.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/test_report.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/usage.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/install-agent.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/pyproject.toml +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/setup.cfg +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/__init__.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/conftest.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_config.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_db.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_events.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_init.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_models.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_network.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_session.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_split.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_state.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.120 → code_coordinator-0.5.124}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -784,7 +784,9 @@ tests/acceptance/ms-51/home-active.spec.ts
|
|
|
784
784
|
tests/acceptance/ms-51/manifest.yml
|
|
785
785
|
tests/acceptance/ms-51/tsconfig.json
|
|
786
786
|
tests/acceptance/ms-51/mocks/home-active.html
|
|
787
|
+
tests/acceptance/ms-65/board_tabs_2282.rs
|
|
787
788
|
tests/acceptance/ms-65/contract.md
|
|
789
|
+
tests/acceptance/ms-65/manifest.yml
|
|
788
790
|
tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen
|
|
789
791
|
tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen
|
|
790
792
|
tests/acceptance/ms-65/mocks/board-preview-tab.screen
|
{code_coordinator-0.5.120 → code_coordinator-0.5.124}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -429,7 +429,9 @@
|
|
|
429
429
|
"tests/acceptance/ms-51/manifest.yml",
|
|
430
430
|
"tests/acceptance/ms-51/mocks/home-active.html",
|
|
431
431
|
"tests/acceptance/ms-51/tsconfig.json",
|
|
432
|
+
"tests/acceptance/ms-65/board_tabs_2282.rs",
|
|
432
433
|
"tests/acceptance/ms-65/contract.md",
|
|
434
|
+
"tests/acceptance/ms-65/manifest.yml",
|
|
433
435
|
"tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen",
|
|
434
436
|
"tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen",
|
|
435
437
|
"tests/acceptance/ms-65/mocks/board-preview-tab.screen",
|
|
@@ -361,7 +361,34 @@ def load_manifest(acceptance_root: Path) -> dict[str, int]:
|
|
|
361
361
|
return mapping
|
|
362
362
|
|
|
363
363
|
|
|
364
|
-
def
|
|
364
|
+
def _driver_kind_for_manifest_dir(ms_dir: Path) -> str | None:
|
|
365
|
+
"""Best-effort LOCAL driver-kind lookup for one ``ms-NN``/``issue-NN``
|
|
366
|
+
acceptance directory, via its ``mocks/`` file extensions
|
|
367
|
+
(:data:`MOCK_EXT_TO_DRIVER_KIND`) — the filesystem counterpart of
|
|
368
|
+
:func:`resolve_for_path`'s GitHub-backed lookup, for callers that
|
|
369
|
+
already have a local checkout and don't want a network round trip.
|
|
370
|
+
|
|
371
|
+
Returns ``None`` (unknown) rather than guessing when ``mocks/`` is
|
|
372
|
+
absent, empty, or its files imply more than one kind — callers MUST
|
|
373
|
+
treat ``None`` as "don't exclude", never as "safe to skip": this feeds
|
|
374
|
+
a hard-failure check (:func:`load_expected_red`), and silently
|
|
375
|
+
dropping a manifest because its kind couldn't be determined would hide
|
|
376
|
+
the exact class of bug that check exists to catch.
|
|
377
|
+
"""
|
|
378
|
+
mocks_dir = ms_dir / "mocks"
|
|
379
|
+
if not mocks_dir.is_dir():
|
|
380
|
+
return None
|
|
381
|
+
kinds = {
|
|
382
|
+
MOCK_EXT_TO_DRIVER_KIND[p.suffix]
|
|
383
|
+
for p in mocks_dir.iterdir()
|
|
384
|
+
if p.suffix in MOCK_EXT_TO_DRIVER_KIND
|
|
385
|
+
}
|
|
386
|
+
return next(iter(kinds)) if len(kinds) == 1 else None
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
def load_expected_red(
|
|
390
|
+
acceptance_root: Path, *, driver_kind: str | None = None
|
|
391
|
+
) -> dict[str, int]:
|
|
365
392
|
"""Merge every ``ms-NN/manifest.(yml|json)``'s ``expected_red:`` block
|
|
366
393
|
under *acceptance_root* into one ``{test_id: issue_number}`` mapping
|
|
367
394
|
(#2164) — the flat shape :func:`apply_expected_red` and the ``coord
|
|
@@ -369,9 +396,28 @@ def load_expected_red(acceptance_root: Path) -> dict[str, int]:
|
|
|
369
396
|
|
|
370
397
|
Mirrors :func:`load_manifest`'s merge/empty-dict/last-writer-wins
|
|
371
398
|
conventions exactly, just reading ``expected_red`` instead of ``tests``.
|
|
399
|
+
|
|
400
|
+
*driver_kind* (#2339): when given, a manifest whose own directory
|
|
401
|
+
resolves (via :func:`_driver_kind_for_manifest_dir`) to a DIFFERENT
|
|
402
|
+
driver kind is skipped entirely. A repo routes different milestones to
|
|
403
|
+
different drivers (``coord/**`` -> cli-pytest, ``tui/**`` ->
|
|
404
|
+
tui-tuidriver, ...), but a single ``coord acceptance run --for-path X
|
|
405
|
+
--all`` invocation only ever executes ONE of them — before this
|
|
406
|
+
parameter existed, the merged registry always spanned every driver, so
|
|
407
|
+
every milestone's ``expected_red`` ids that belonged to a DIFFERENT
|
|
408
|
+
driver than the one actually running were reported as
|
|
409
|
+
``missing_expected_red_ids`` (a hard, un-waivable CI failure) on every
|
|
410
|
+
single run, for every repo with more than one routed driver kind, the
|
|
411
|
+
moment two milestones used different drivers. A directory whose kind
|
|
412
|
+
can't be determined (see above) is always included, matching the
|
|
413
|
+
unfiltered (``driver_kind=None``) behaviour this defaults to.
|
|
372
414
|
"""
|
|
373
415
|
mapping: dict[str, int] = {}
|
|
374
416
|
for path in _manifest_paths(acceptance_root):
|
|
417
|
+
if driver_kind is not None:
|
|
418
|
+
resolved = _driver_kind_for_manifest_dir(path.parent)
|
|
419
|
+
if resolved is not None and resolved != driver_kind:
|
|
420
|
+
continue
|
|
375
421
|
try:
|
|
376
422
|
data = parse_manifest_text(path.read_text(), source=str(path))
|
|
377
423
|
except OSError as e:
|
|
@@ -3186,6 +3186,17 @@ not apply to it.
|
|
|
3186
3186
|
- If even the scoped run genuinely cannot finish in time, follow the \
|
|
3187
3187
|
background-and-poll pattern in the ONE-SHOT section above — do not invent \
|
|
3188
3188
|
a chunk-and-loop workaround.
|
|
3189
|
+
- #2192: check your own diff now — does it change user-visible behavior \
|
|
3190
|
+
AND add/modify zero test files? That exact pattern was 18.5% of this \
|
|
3191
|
+
repo's blocking reviews (#2132): the code was correct, but CLAUDE.md's \
|
|
3192
|
+
"Testing — black-box coverage is the acceptance bar" rule was skipped, so \
|
|
3193
|
+
the adversarial reviewer rejected it — costing a paid review leg plus a \
|
|
3194
|
+
fix + re-review round trip to catch something you can see for free right \
|
|
3195
|
+
now, in this same already-running session. If it fires, add the test \
|
|
3196
|
+
before declaring done. If this genuinely is a pure refactor / \
|
|
3197
|
+
internal-only change (CLAUDE.md's existing exemption), say so explicitly \
|
|
3198
|
+
in your final message instead — that already satisfies the reviewer, no \
|
|
3199
|
+
test required.
|
|
3189
3200
|
|
|
3190
3201
|
#252: before exiting, emit a SMOKE_TESTS block telling the human what to \
|
|
3191
3202
|
manually verify. You changed the code; you know what's worth poking.
|
|
@@ -301,7 +301,16 @@ def acceptance_run(
|
|
|
301
301
|
)
|
|
302
302
|
|
|
303
303
|
if ci_mode:
|
|
304
|
-
expected_red
|
|
304
|
+
# #2339: scope the expected_red registry to milestones this run's
|
|
305
|
+
# OWN driver could actually produce results for — a routed repo's
|
|
306
|
+
# `--all --ci` used to merge every milestone's expected_red
|
|
307
|
+
# regardless of which driver `--for-path` resolved, so every OTHER
|
|
308
|
+
# driver's ids always came back `missing_expected_red_ids` (a hard
|
|
309
|
+
# CI failure) the moment the repo had more than one driver kind in
|
|
310
|
+
# use. See coord.acceptance.load_expected_red's docstring.
|
|
311
|
+
expected_red = load_expected_red(
|
|
312
|
+
cwd / ACCEPTANCE_DIRNAME, driver_kind=driver_cfg.kind,
|
|
313
|
+
)
|
|
305
314
|
verdict = apply_expected_red(verdict, set(expected_red))
|
|
306
315
|
click.echo(json.dumps(verdict, indent=2))
|
|
307
316
|
hard_failure = expected_red_failure_summary(verdict)
|
|
@@ -787,8 +787,9 @@ def _fix_from_review(
|
|
|
787
787
|
@click.command(
|
|
788
788
|
help=(
|
|
789
789
|
"Dispatch a headless same-branch fix worker.\n\n"
|
|
790
|
-
"ASSIGNMENT_ID is either a WORK assignment whose test gate FAILED
|
|
791
|
-
"whose PR has red CI
|
|
790
|
+
"ASSIGNMENT_ID is either a WORK assignment whose test gate FAILED "
|
|
791
|
+
"(or whose PR has red CI, or whose oracle-loop acceptance trust "
|
|
792
|
+
"gate FAILED — #2344), or a REVIEW assignment whose verdict was "
|
|
792
793
|
"request-changes. Either way the fix lands on the ORIGINAL branch and "
|
|
793
794
|
"updates the ORIGINAL PR — no new issue-N-* branch, no orphan PR."
|
|
794
795
|
)
|
|
@@ -802,12 +803,12 @@ def _fix_from_review(
|
|
|
802
803
|
help=(
|
|
803
804
|
"Override the #555 interactive-work exclusion when fixing a review of "
|
|
804
805
|
"work that ran under claude-pty, or (#2051) dispatch a WORK-row fix "
|
|
805
|
-
"when neither the test verdict
|
|
806
|
-
"for when the caller knows the PR is red
|
|
807
|
-
"(ci_store not configured, a transient read
|
|
808
|
-
"refusal names which of those it was, so
|
|
809
|
-
"before reaching for this. Does NOT override
|
|
810
|
-
"or the #522 terminal-work guard."
|
|
806
|
+
"when neither the test verdict, a live CI read, nor the acceptance "
|
|
807
|
+
"trust gate shows a failure — for when the caller knows the PR is red "
|
|
808
|
+
"but the check missed it (ci_store not configured, a transient read "
|
|
809
|
+
"error). Since #2091 the refusal names which of those it was, so "
|
|
810
|
+
"check the `note:` line before reaching for this. Does NOT override "
|
|
811
|
+
"max_review_iterations or the #522 terminal-work guard."
|
|
811
812
|
),
|
|
812
813
|
)
|
|
813
814
|
def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> None:
|
|
@@ -837,10 +838,27 @@ def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> No
|
|
|
837
838
|
# `smoke_test=NULL` and must still be fixable.
|
|
838
839
|
test_failed = assignment.test_state == "failed" or assignment.smoke_test == "fail"
|
|
839
840
|
|
|
841
|
+
# #2344: the oracle-loop TRUST GATE (docs/ORACLE_LOOP.md, #2199) is a
|
|
842
|
+
# fourth door onto this command. `_decide_acceptance_gate`
|
|
843
|
+
# (coord/drive.py) dispatches `coord fix <work_aid>` the instant the
|
|
844
|
+
# gate's coordinator-run re-run of the sealed suite comes back red — the
|
|
845
|
+
# same shape as `_decide_test` dispatching on a failed Test verdict.
|
|
846
|
+
# Before this, nothing here recognized that door: a milestone whose
|
|
847
|
+
# trust gate failed in isolation (Test not yet run, or already passed;
|
|
848
|
+
# CI green) hit the #2051 "expected a failed test verdict" refusal on
|
|
849
|
+
# every attempt — structurally unwinnable, not a transient miss — until
|
|
850
|
+
# the drive-queue entry parked after burning its retry budget (ms-65 /
|
|
851
|
+
# #2282, observed live 2026-08-17).
|
|
852
|
+
acceptance_failed = assignment.acceptance_state == "failed"
|
|
853
|
+
|
|
840
854
|
# #1622 (part 3): red CI is the third trigger. Only consulted when the
|
|
841
855
|
# local test gate has NOT already failed, so the cheap in-DB path stays
|
|
842
|
-
# zero-I/O and the existing failure story keeps priority.
|
|
843
|
-
|
|
856
|
+
# zero-I/O and the existing failure story keeps priority. #2344: same
|
|
857
|
+
# treatment for a failed trust gate — it is definitive evidence on its
|
|
858
|
+
# own, so skip the live CI read entirely rather than let a green CI read
|
|
859
|
+
# (which says nothing about the trust gate's sealed-suite re-run) shadow
|
|
860
|
+
# it below.
|
|
861
|
+
ci_read = CiRead() if (test_failed or acceptance_failed) else _read_ci(cfg, assignment)
|
|
844
862
|
ci_story = ci_read.story
|
|
845
863
|
|
|
846
864
|
# #2091: the stored Test verdict says PASSED while the branch's live CI
|
|
@@ -876,8 +894,9 @@ def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> No
|
|
|
876
894
|
err=True,
|
|
877
895
|
)
|
|
878
896
|
|
|
879
|
-
# #2051: none of the
|
|
880
|
-
#
|
|
897
|
+
# #2051 (extended by #2344): none of the four doors (failed test
|
|
898
|
+
# verdict, red CI, a failed acceptance trust gate, or the review-id door
|
|
899
|
+
# handled above) is open. `_read_ci` is read-only and
|
|
881
900
|
# fail-quiet (see :class:`CiRead`) — a missing story means "no CI
|
|
882
901
|
# evidence of a failure", never "CI is green" — so a caller who KNOWS
|
|
883
902
|
# the PR is red (ci_store not configured for this repo, a transient
|
|
@@ -886,15 +905,16 @@ def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> No
|
|
|
886
905
|
# that caller's release valve; it is NOT a way to skip the #555 / #522 /
|
|
887
906
|
# max_review_iterations guards, which sit elsewhere.
|
|
888
907
|
forced_without_evidence = False
|
|
889
|
-
if not test_failed and ci_story is None:
|
|
908
|
+
if not test_failed and not acceptance_failed and ci_story is None:
|
|
890
909
|
if not force:
|
|
891
910
|
click.echo(
|
|
892
911
|
f"error: assignment {assignment_id} test_state is "
|
|
893
912
|
f"{assignment.test_state!r} / smoke_test is "
|
|
894
|
-
f"{assignment.smoke_test!r}
|
|
895
|
-
"
|
|
896
|
-
"
|
|
897
|
-
"
|
|
913
|
+
f"{assignment.smoke_test!r} / acceptance_state is "
|
|
914
|
+
f"{assignment.acceptance_state!r}, expected a failed test "
|
|
915
|
+
"verdict (or red CI on its PR, a failed acceptance trust "
|
|
916
|
+
"gate, or a request-changes review id). If the PR is "
|
|
917
|
+
"actually red and this check missed it, re-run with --force.",
|
|
898
918
|
err=True,
|
|
899
919
|
)
|
|
900
920
|
# #2091: say WHY there is no CI evidence. Before this, six
|
|
@@ -940,6 +960,14 @@ def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> No
|
|
|
940
960
|
test_output_file = COORD_DIR / "test_output" / f"{assignment_id}.txt"
|
|
941
961
|
if ci_story is not None:
|
|
942
962
|
test_output = ci_story
|
|
963
|
+
elif acceptance_failed and not test_failed:
|
|
964
|
+
# #2344: the trust gate's own recorded reason is the evidence for
|
|
965
|
+
# this door — `coord acceptance record` writes it to
|
|
966
|
+
# `acceptance_reason` at the same time it flips `acceptance_state`
|
|
967
|
+
# to "failed" (coord/state.py). Neither the CI-story nor the
|
|
968
|
+
# smoke/test-reason fallbacks below apply here: this door fires
|
|
969
|
+
# precisely when Test/CI are NOT what's red.
|
|
970
|
+
test_output = assignment.acceptance_reason or ""
|
|
943
971
|
elif test_output_file.exists():
|
|
944
972
|
test_output = test_output_file.read_text()
|
|
945
973
|
elif assignment.smoke_test_reason or assignment.test_reason:
|
|
@@ -965,6 +993,9 @@ def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> No
|
|
|
965
993
|
"red)"
|
|
966
994
|
)
|
|
967
995
|
_failure_heading = "Reported failure (--force, unverified)"
|
|
996
|
+
elif acceptance_failed and not test_failed and ci_story is None:
|
|
997
|
+
_what = "a failed oracle-loop acceptance trust gate (#2199)"
|
|
998
|
+
_failure_heading = "Acceptance trust-gate failure"
|
|
968
999
|
else:
|
|
969
1000
|
_what = "red CI" if ci_story is not None else "a failed smoke test"
|
|
970
1001
|
_failure_heading = "CI failure" if ci_story is not None else "Test failure"
|
|
@@ -1273,6 +1273,108 @@ def _diff_paths_outside_sealed(diff_text: str, sealed_paths: list[str]) -> list[
|
|
|
1273
1273
|
)
|
|
1274
1274
|
|
|
1275
1275
|
|
|
1276
|
+
# ── #2192: free pre-review "missing test" nudge ─────────────────────────────
|
|
1277
|
+
#
|
|
1278
|
+
# #2132 classified 27 request-changes verdicts on this repo and found 5/27
|
|
1279
|
+
# (18.5%) were "missing required black-box test only" — the code was correct,
|
|
1280
|
+
# but the diff changed user-visible behavior and shipped no test, which
|
|
1281
|
+
# CLAUDE.md's "Testing — black-box coverage is the acceptance bar" section
|
|
1282
|
+
# already requires. Each one cost a full paid review leg plus a fix +
|
|
1283
|
+
# re-review round trip to catch a pattern a static check can see for free.
|
|
1284
|
+
#
|
|
1285
|
+
# This is intentionally a coarse, path-only heuristic — no diff semantics, no
|
|
1286
|
+
# ``claude -p`` call, no LLM judgment, just the same cheap file-path
|
|
1287
|
+
# inspection ``_diff_file_paths``/``_diff_touched_sealed_paths`` already do
|
|
1288
|
+
# above. It is a NUDGE, not a gate: callers only ever log it, never act on it
|
|
1289
|
+
# to change dispatch behavior, so a false positive costs nothing (the
|
|
1290
|
+
# reviewer remains the sole authority and, per CLAUDE.md, already honors a
|
|
1291
|
+
# PR that says it's a pure refactor / internal-only change).
|
|
1292
|
+
#
|
|
1293
|
+
# The caller (``dispatch_review``) logs the result at ``log.warning``, not
|
|
1294
|
+
# ``log.info`` — this repo has no ``logging.basicConfig`` anywhere outside
|
|
1295
|
+
# tests, so the root logger stays at the default WARNING floor with no
|
|
1296
|
+
# handler attached and an INFO record never reaches anyone. WARNING clears
|
|
1297
|
+
# that floor and reaches Python's handler-of-last-resort (stderr) with zero
|
|
1298
|
+
# configuration. See the comment at the call site for the empirical check.
|
|
1299
|
+
|
|
1300
|
+
_TEST_BASENAME_PREFIXES = ("test_",)
|
|
1301
|
+
_TEST_BASENAME_SUFFIXES = (
|
|
1302
|
+
"_test.py", "_test.rs",
|
|
1303
|
+
".test.ts", ".test.tsx", ".spec.ts", ".spec.tsx",
|
|
1304
|
+
)
|
|
1305
|
+
_TEST_BASENAME_EXACT = ("conftest.py",)
|
|
1306
|
+
# Matched against the path with a leading "/" prepended, so both a
|
|
1307
|
+
# repo-root prefix ("tests/foo.py" -> "/tests/foo.py") and a nested
|
|
1308
|
+
# directory ("tui/tests/foo.rs" -> "/tui/tests/foo.rs") are caught by the
|
|
1309
|
+
# same substring check.
|
|
1310
|
+
_TEST_PATH_SEGMENTS = ("/tests/", "/test/", "/__tests__/", "/e2e/")
|
|
1311
|
+
|
|
1312
|
+
# Paths under these prefixes are internal tooling/docs, never shipped
|
|
1313
|
+
# product behavior — CLAUDE.md's "internal-only changes are exempt" carve-out,
|
|
1314
|
+
# expressed as the only thing a pure diff inspection can see: file location.
|
|
1315
|
+
_NON_USER_VISIBLE_PATH_PREFIXES = (
|
|
1316
|
+
"docs/", "scripts/", "deploy/", ".github/", ".claude/", "graphify-out/",
|
|
1317
|
+
)
|
|
1318
|
+
_USER_VISIBLE_SUFFIXES = (".py", ".rs", ".ts", ".tsx", ".js", ".jsx")
|
|
1319
|
+
|
|
1320
|
+
|
|
1321
|
+
def _is_test_path(path: str) -> bool:
|
|
1322
|
+
"""Does *path* look like a test file, by name/location alone?
|
|
1323
|
+
|
|
1324
|
+
NOTE (#2192 review follow-up): ``coord/split_work.py``'s ``_is_test_file``
|
|
1325
|
+
answers a similarly-shaped question with a narrower, Python-only rule
|
|
1326
|
+
set, for chunk-splitting rather than this module's review nudge. See
|
|
1327
|
+
that function's docstring for why the two aren't unified yet.
|
|
1328
|
+
"""
|
|
1329
|
+
lower = path.lower()
|
|
1330
|
+
base = lower.rsplit("/", 1)[-1]
|
|
1331
|
+
if base in _TEST_BASENAME_EXACT:
|
|
1332
|
+
return True
|
|
1333
|
+
if any(base.startswith(p) for p in _TEST_BASENAME_PREFIXES):
|
|
1334
|
+
return True
|
|
1335
|
+
if any(base.endswith(s) for s in _TEST_BASENAME_SUFFIXES):
|
|
1336
|
+
return True
|
|
1337
|
+
return any(seg in f"/{lower}" for seg in _TEST_PATH_SEGMENTS)
|
|
1338
|
+
|
|
1339
|
+
|
|
1340
|
+
def _is_user_visible_path(path: str) -> bool:
|
|
1341
|
+
"""Does *path* look like shipped source (not test, not internal tooling)?"""
|
|
1342
|
+
lower = path.lower()
|
|
1343
|
+
if _is_test_path(lower):
|
|
1344
|
+
return False
|
|
1345
|
+
if any(lower.startswith(p) for p in _NON_USER_VISIBLE_PATH_PREFIXES):
|
|
1346
|
+
return False
|
|
1347
|
+
return any(lower.endswith(s) for s in _USER_VISIBLE_SUFFIXES)
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
def diff_missing_test_coverage(diff_text: str | None) -> bool:
|
|
1351
|
+
"""#2192: True when *diff_text* touches user-visible source and zero
|
|
1352
|
+
test files, the pattern behind 18.5% of #2132's blocking reviews.
|
|
1353
|
+
|
|
1354
|
+
Pure, free, deterministic path inspection — reuses :func:`_diff_file_paths`.
|
|
1355
|
+
Returns False (never flags) when the diff is empty, touches no recognized
|
|
1356
|
+
source file (docs-only/internal-tooling-only diffs — CLAUDE.md's
|
|
1357
|
+
internal-only exemption), or already includes a test-file change.
|
|
1358
|
+
|
|
1359
|
+
The CLAUDE.md exemption is honored only at the granularity a path-only
|
|
1360
|
+
heuristic can see: whole file *types/locations* (``docs/``, ``scripts/``,
|
|
1361
|
+
non-source suffixes, ...), not genuine behavior-preserving refactors of
|
|
1362
|
+
shipped source. A true pure refactor of a ``.py``/``.rs``/``.ts`` file
|
|
1363
|
+
(e.g. renaming a local variable) with no test changes still flags —
|
|
1364
|
+
harmless today since the caller only ever logs this, never gates on it,
|
|
1365
|
+
but worth knowing if a caller ever starts acting on the result: at that
|
|
1366
|
+
point this function would honor a narrower exemption than CLAUDE.md's
|
|
1367
|
+
own text, which is about intent ("pure refactor / internal-only"), not
|
|
1368
|
+
file location.
|
|
1369
|
+
"""
|
|
1370
|
+
if not diff_text or not diff_text.strip():
|
|
1371
|
+
return False
|
|
1372
|
+
paths = _diff_file_paths(diff_text)
|
|
1373
|
+
if not any(_is_user_visible_path(p) for p in paths):
|
|
1374
|
+
return False
|
|
1375
|
+
return not any(_is_test_path(p) for p in paths)
|
|
1376
|
+
|
|
1377
|
+
|
|
1276
1378
|
def build_review_briefing(
|
|
1277
1379
|
*,
|
|
1278
1380
|
pr_number: int | None,
|
|
@@ -2063,6 +2165,30 @@ def dispatch_review(
|
|
|
2063
2165
|
fetch_body = issue_body_fetcher or _fetch_issue_body
|
|
2064
2166
|
issue_body = fetch_body(repo.github, completed.issue_number)
|
|
2065
2167
|
|
|
2168
|
+
# #2192: free pre-review nudge (see diff_missing_test_coverage docstring).
|
|
2169
|
+
# Logged only, ahead of the paid reviewer dispatch below — never gates,
|
|
2170
|
+
# never denies, never mutates `completed`. A false positive here must
|
|
2171
|
+
# never cost a round trip, so nothing downstream reads this.
|
|
2172
|
+
#
|
|
2173
|
+
# Deliberately `log.warning`, not `log.info` (#2192 review follow-up):
|
|
2174
|
+
# this repo has zero `logging.basicConfig`/`setLevel`/`addHandler` calls
|
|
2175
|
+
# outside tests (see coord/interactive.py:888-898's #865 note on the same
|
|
2176
|
+
# trap), so the root logger sits at Python's default WARNING floor with
|
|
2177
|
+
# no handler attached — an `INFO` record is filtered before it reaches
|
|
2178
|
+
# anywhere and is a silent no-op under every real entry point (`coord
|
|
2179
|
+
# serve`, `coord notify`, `reconcile()`). `WARNING` clears that floor and
|
|
2180
|
+
# is picked up by `logging`'s handler-of-last-resort, which prints
|
|
2181
|
+
# straight to stderr with zero configuration — confirmed empirically:
|
|
2182
|
+
# `logging.getLogger("coord.review").warning(...)` in a bare subprocess
|
|
2183
|
+
# writes to stderr; `.info(...)` writes nothing.
|
|
2184
|
+
if diff_missing_test_coverage(full_diff_text):
|
|
2185
|
+
log.warning(
|
|
2186
|
+
"[review] %s: diff touches user-visible source with zero test "
|
|
2187
|
+
"files changed — matches #2132's 'missing test only' pattern "
|
|
2188
|
+
"(free static check, non-blocking; dispatching review as normal)",
|
|
2189
|
+
completed.assignment_id,
|
|
2190
|
+
)
|
|
2191
|
+
|
|
2066
2192
|
# #1811: does the resolved review provider share the worker's model
|
|
2067
2193
|
# family? ``completed.provider_name`` is the *resolved* name recorded at
|
|
2068
2194
|
# work-dispatch time (spec > repo > providers.default); ``None`` means a
|
|
@@ -2834,6 +2960,13 @@ def dispatch_scoped_review(
|
|
|
2834
2960
|
not the prior reviewer) so the scoped review stays independent of the
|
|
2835
2961
|
code it's judging, mirroring :func:`dispatch_review`'s
|
|
2836
2962
|
``completed.machine_name`` contract.
|
|
2963
|
+
|
|
2964
|
+
Does NOT run the #2192 "missing test coverage" nudge that
|
|
2965
|
+
:func:`dispatch_review` does ahead of its dispatch — intentional, not an
|
|
2966
|
+
oversight: this path only fires after a conflict-fix rebase where a full
|
|
2967
|
+
review (nudge included) already happened against the whole PR, and the
|
|
2968
|
+
delta reviewed here is scoped to just the rebase's own resolution, not
|
|
2969
|
+
the PR's original feature diff.
|
|
2837
2970
|
"""
|
|
2838
2971
|
if not config.reviews.enabled or not config.reviews.auto_dispatch:
|
|
2839
2972
|
return None
|
|
@@ -30,7 +30,19 @@ class WorkChunk:
|
|
|
30
30
|
# ---------------------------------------------------------------------------
|
|
31
31
|
|
|
32
32
|
def _is_test_file(f: str) -> bool:
|
|
33
|
-
"""Return True if the file is a test file.
|
|
33
|
+
"""Return True if the file is a test file.
|
|
34
|
+
|
|
35
|
+
NOTE (#2192 review follow-up): ``coord/review.py``'s ``_is_test_path``
|
|
36
|
+
answers a similarly-shaped question (Rust/TS/JS suffixes, nested
|
|
37
|
+
``tests/`` dirs, ``conftest.py``, ``__tests__/``/``e2e/``) but for a
|
|
38
|
+
different downstream consumer — that one gates a free pre-review nudge,
|
|
39
|
+
this one drives chunk assignment for large-diff splitting. Deliberately
|
|
40
|
+
NOT unified yet: broadening this classifier to match the other one would
|
|
41
|
+
change which files get treated as "test files" during chunk splitting,
|
|
42
|
+
a behavior change out of scope for #2192. Flagged per the repo's "one
|
|
43
|
+
question, one answer" rule (epic #2096) as worth consolidating into one
|
|
44
|
+
shared helper if the two questions ever turn out to be the same one.
|
|
45
|
+
"""
|
|
34
46
|
p = Path(f)
|
|
35
47
|
return (
|
|
36
48
|
len(p.parts) > 0 and p.parts[0] in ("tests", "test")
|