code-coordinator 0.5.124__tar.gz → 0.5.125__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.124 → code_coordinator-0.5.125}/PKG-INFO +1 -1
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/ci_store.py +27 -4
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/drive_queue.py +35 -12
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/db.py +10 -1
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/drive.py +22 -2
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/drive_queue.py +71 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/drive_state.py +8 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/merge_queue.py +179 -8
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/coord-test-runner.sh +13 -2
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_ci_store.py +12 -2
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_drive_queue.py +46 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_drive.py +93 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_drive_queue.py +127 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_merge_queue.py +224 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/tests/fixtures/board_sample.json +1 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.gitignore +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/CLAUDE.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/GOAL.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/LICENSE +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/MANIFEST.in +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/README.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/__init__.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/agent.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/audit.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/block_log.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/board_service.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/brain.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/claim.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/cli.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/client.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/comments.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/config.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dao.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deps.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/events.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/filelock.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/freshness.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/gates.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/goal.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/context.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/models.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/render.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/units.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/hooks.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/interactive.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/models.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/network.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notify.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/openapi.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/parentage.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/plans.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/progress.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/release_window.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/reports.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/review.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/smoke.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/split_work.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/state.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/test_author.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/test_report.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/usage.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/install-agent.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/pyproject.toml +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/setup.cfg +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/__init__.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/conftest.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_config.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_db.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_events.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_init.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_models.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_network.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_session.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_split.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_state.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/tests/cli.rs +0 -0
|
@@ -324,7 +324,7 @@ CI_RERUN_POLL_INTERVAL_SECONDS = 10.0
|
|
|
324
324
|
CI_RERUN_MAX_WAIT_SECONDS = 360.0
|
|
325
325
|
|
|
326
326
|
|
|
327
|
-
def
|
|
327
|
+
def is_unreadable_check(check) -> bool:
|
|
328
328
|
"""True for the #1525 synthetic "could not read CI status" / "gh too
|
|
329
329
|
old" stand-ins (``coord.ci_github._unreadable_check`` /
|
|
330
330
|
``_gh_too_old_check``) — the read itself failed, so this says nothing
|
|
@@ -332,10 +332,33 @@ def _is_unreadable_check(check) -> bool:
|
|
|
332
332
|
importing ``coord.ci_github`` — this module must stay backend-agnostic,
|
|
333
333
|
and every stub/fake ``CheckRun``-alike in the test suite already has
|
|
334
334
|
both attributes.
|
|
335
|
+
|
|
336
|
+
Public (#2347) — :mod:`coord.merge_queue` reuses this directly to
|
|
337
|
+
classify a ``checks_failed`` block whose failures are ALL this stand-in
|
|
338
|
+
as a bare check-list *fetch* failure (``CI_UNREADABLE_PREFIX``), distinct
|
|
339
|
+
from both a real "still running" and a real "ran and failed" verdict; see
|
|
340
|
+
that module's docstring for the classification this feeds.
|
|
341
|
+
|
|
342
|
+
Deliberately narrower than "any ``coord: ``-named synthetic check with
|
|
343
|
+
``conclusion == "unknown"``": :class:`coord.gate_snapshot.GateSnapshot`
|
|
344
|
+
(the board *read* path's ``CiStore`` — :mod:`coord.merge_queue`'s
|
|
345
|
+
``_entry_gate_status`` can be, and in production is, called with one —
|
|
346
|
+
see ``coord.serve_app``'s ``/board`` handler) emits its OWN such
|
|
347
|
+
stand-in, ``_stale_check`` (``"coord: gate snapshot stale (...)"``), for
|
|
348
|
+
a completely different local condition — the daemon's own refresh loop
|
|
349
|
+
fell behind, not a GitHub read failure — and #2347's classification must
|
|
350
|
+
not relabel that as "GitHub unreachable". Both `coord.ci_github` stand-ins
|
|
351
|
+
share the phrase "read CI status" in their name; `_stale_check` does not,
|
|
352
|
+
so requiring it is what keeps the two apart without this module having
|
|
353
|
+
to import `coord.gate_snapshot` (which itself imports `coord.ci_store` —
|
|
354
|
+
the reverse import would cycle) or duck-type on anything less stable
|
|
355
|
+
than the prose these three call sites already commit to.
|
|
335
356
|
"""
|
|
357
|
+
name = str(getattr(check, "name", ""))
|
|
336
358
|
return (
|
|
337
359
|
getattr(check, "conclusion", None) == "unknown"
|
|
338
|
-
and
|
|
360
|
+
and name.startswith("coord: ")
|
|
361
|
+
and "read CI status" in name
|
|
339
362
|
)
|
|
340
363
|
|
|
341
364
|
|
|
@@ -381,7 +404,7 @@ def wait_for_ci_settle(
|
|
|
381
404
|
|
|
382
405
|
A "registering" read — no checks at all yet, or every check present is
|
|
383
406
|
one of the #1525 synthetic unreadable stand-ins (see
|
|
384
|
-
:func:`
|
|
407
|
+
:func:`is_unreadable_check`) — never counts as settled, however many
|
|
385
408
|
times it's observed; only real, resolved checks do. Genuinely in-flight
|
|
386
409
|
real checks (a run that registered and is now actually executing) also
|
|
387
410
|
keep polling — that's the ordinary "wait for CI to finish" case this
|
|
@@ -409,7 +432,7 @@ def wait_for_ci_settle(
|
|
|
409
432
|
except Exception: # noqa: BLE001 — best-effort cache-bust only
|
|
410
433
|
pass
|
|
411
434
|
checks = ci_store.list_checks_for_pr(repo, number)
|
|
412
|
-
registering = not checks or all(
|
|
435
|
+
registering = not checks or all(is_unreadable_check(c) for c in checks)
|
|
413
436
|
if not registering and not in_flight_checks(checks):
|
|
414
437
|
return CiSettleResult(
|
|
415
438
|
settled=True, checks=checks, waited_seconds=clock() - start,
|
|
@@ -1837,11 +1837,21 @@ def _fetch_gate_a_pending(entries: list) -> dict[str, bool]:
|
|
|
1837
1837
|
|
|
1838
1838
|
def _fetch_live_ci_gate(
|
|
1839
1839
|
entries: list, config_path: Path | None
|
|
1840
|
-
) -> dict[str, bool]:
|
|
1841
|
-
"""``{entry_key: still_blocked}`` for every
|
|
1842
|
-
park reason is CI-shaped
|
|
1843
|
-
re-derivation of the SAME
|
|
1844
|
-
live, right now, this tick
|
|
1840
|
+
) -> tuple[dict[str, bool], dict[str, str]]:
|
|
1841
|
+
"""``({entry_key: still_blocked}, {entry_key: reason})`` for every
|
|
1842
|
+
``parked`` entry whose OWN park reason is CI-shaped
|
|
1843
|
+
(#1891/#1892/#2347) — a FRESH, single-entry re-derivation of the SAME
|
|
1844
|
+
gate ``coord merge --plan`` computes, taken live, right now, this tick
|
|
1845
|
+
(#2182).
|
|
1846
|
+
|
|
1847
|
+
The second dict (#2347) carries the reason text
|
|
1848
|
+
:func:`coord.merge_queue.entry_gate_status` returned alongside each
|
|
1849
|
+
still-blocked verdict — used ONLY to let :func:`coord.drive_queue.
|
|
1850
|
+
plan_tick` rewrite a still-``parked`` entry's ``last_reason`` when the
|
|
1851
|
+
fresh reading is specifically "GitHub unreachable"
|
|
1852
|
+
(``is_ci_unreadable_reason``) and differs from what is currently stored;
|
|
1853
|
+
see that function's ``live_ci_gate_reason`` parameter. Never consulted
|
|
1854
|
+
to decide whether to resume — that remains the first dict's job alone.
|
|
1845
1855
|
|
|
1846
1856
|
THE GAP THIS CLOSES. On the daemon host — the only machine that ever
|
|
1847
1857
|
runs this tick (``docs/AGENT_OPERATIONS.md``) — ``_fetch_board_view``
|
|
@@ -1887,7 +1897,11 @@ def _fetch_live_ci_gate(
|
|
|
1887
1897
|
have nothing to add — worse, ``coord.state.load_board()`` guards against
|
|
1888
1898
|
being called from a thin client at all (#615).
|
|
1889
1899
|
"""
|
|
1890
|
-
from coord.merge_queue import
|
|
1900
|
+
from coord.merge_queue import ( # noqa: PLC0415
|
|
1901
|
+
is_ci_infra_reason,
|
|
1902
|
+
is_ci_pending_reason,
|
|
1903
|
+
is_ci_unreadable_reason,
|
|
1904
|
+
)
|
|
1891
1905
|
|
|
1892
1906
|
targets = [
|
|
1893
1907
|
e for e in entries
|
|
@@ -1895,15 +1909,16 @@ def _fetch_live_ci_gate(
|
|
|
1895
1909
|
and (
|
|
1896
1910
|
is_ci_pending_reason(getattr(e, "last_reason", "") or "")
|
|
1897
1911
|
or is_ci_infra_reason(getattr(e, "last_reason", "") or "")
|
|
1912
|
+
or is_ci_unreadable_reason(getattr(e, "last_reason", "") or "")
|
|
1898
1913
|
)
|
|
1899
1914
|
]
|
|
1900
1915
|
if not targets:
|
|
1901
|
-
return {}
|
|
1916
|
+
return {}, {}
|
|
1902
1917
|
|
|
1903
1918
|
from coord.board_service import resolve as resolve_board_service # noqa: PLC0415
|
|
1904
1919
|
|
|
1905
1920
|
if resolve_board_service() is not None:
|
|
1906
|
-
return {}
|
|
1921
|
+
return {}, {}
|
|
1907
1922
|
|
|
1908
1923
|
try:
|
|
1909
1924
|
from coord import github_ops as _gh_ops # noqa: PLC0415
|
|
@@ -1919,19 +1934,22 @@ def _fetch_live_ci_gate(
|
|
|
1919
1934
|
entry_key(q.repo_name, q.issue_number): q for q in _mq.load_queue()
|
|
1920
1935
|
}
|
|
1921
1936
|
except Exception: # noqa: BLE001 — see the fail-soft note above
|
|
1922
|
-
return {}
|
|
1937
|
+
return {}, {}
|
|
1923
1938
|
|
|
1924
1939
|
overrides: dict[str, bool] = {}
|
|
1940
|
+
reasons: dict[str, str] = {}
|
|
1925
1941
|
for e in targets:
|
|
1926
1942
|
q = queue_by_key.get(e.key)
|
|
1927
1943
|
if q is None or not q.pr_number:
|
|
1928
1944
|
continue
|
|
1929
1945
|
try:
|
|
1930
|
-
status,
|
|
1946
|
+
status, reason = _mq.entry_gate_status(q, board, cfg, ci_store, _gh_ops)
|
|
1931
1947
|
except Exception: # noqa: BLE001 — leave this one entry to the ceiling
|
|
1932
1948
|
continue
|
|
1933
1949
|
overrides[e.key] = status != _mq.PLAN_READY
|
|
1934
|
-
|
|
1950
|
+
if reason:
|
|
1951
|
+
reasons[e.key] = reason
|
|
1952
|
+
return overrides, reasons
|
|
1935
1953
|
|
|
1936
1954
|
|
|
1937
1955
|
def _fetch_live_blocked_gate(
|
|
@@ -2337,7 +2355,11 @@ def drive_queue_tick(
|
|
|
2337
2355
|
# on the daemon-host tick could previously be released only by the
|
|
2338
2356
|
# #2158 45-minute ceiling, never by CI actually reporting, because
|
|
2339
2357
|
# this tick's board read never computes a live `merge_plan`).
|
|
2340
|
-
|
|
2358
|
+
# #2347: the reason half — lets a still-parked entry's `last_reason`
|
|
2359
|
+
# be rewritten when the real cause is "GitHub unreachable" rather
|
|
2360
|
+
# than whatever it originally parked on; see `plan_tick`'s
|
|
2361
|
+
# `live_ci_gate_reason` parameter.
|
|
2362
|
+
live_ci_gate, live_ci_gate_reason = _fetch_live_ci_gate(entries, config_path)
|
|
2341
2363
|
|
|
2342
2364
|
# #2230: the same live re-derivation, for RE-EVALUABLE `blocked`
|
|
2343
2365
|
# entries — see `_fetch_live_blocked_gate`'s docstring for the gap
|
|
@@ -2384,6 +2406,7 @@ def drive_queue_tick(
|
|
|
2384
2406
|
gate_a_pending=gate_a_pending,
|
|
2385
2407
|
cordons=cordons,
|
|
2386
2408
|
live_ci_gate=live_ci_gate,
|
|
2409
|
+
live_ci_gate_reason=live_ci_gate_reason,
|
|
2387
2410
|
live_blocked_gate=live_blocked_gate,
|
|
2388
2411
|
editable_drift=editable_drift,
|
|
2389
2412
|
)
|
|
@@ -191,7 +191,8 @@ def _ensure_schema(conn: sqlite3.Connection) -> None:
|
|
|
191
191
|
ci_infra_reruns INTEGER NOT NULL DEFAULT 0,
|
|
192
192
|
ci_stale_reruns INTEGER NOT NULL DEFAULT 0,
|
|
193
193
|
ci_flaky_reruns INTEGER NOT NULL DEFAULT 0,
|
|
194
|
-
ci_flaky_pending TEXT NOT NULL DEFAULT ''
|
|
194
|
+
ci_flaky_pending TEXT NOT NULL DEFAULT '',
|
|
195
|
+
ci_unreadable_reruns INTEGER NOT NULL DEFAULT 0
|
|
195
196
|
);
|
|
196
197
|
|
|
197
198
|
CREATE TABLE IF NOT EXISTS plans (
|
|
@@ -909,6 +910,14 @@ def _migrate_add_columns(conn: sqlite3.Connection) -> None:
|
|
|
909
910
|
# row predating this migration and for a non-stream-json / PTY
|
|
910
911
|
# worker whose log carries no such field.
|
|
911
912
|
"ALTER TABLE assignments ADD COLUMN stop_reason TEXT",
|
|
913
|
+
# #2347: count of automatic checks `merge_queue.process()` has made
|
|
914
|
+
# against this entry's CURRENT streak of bare check-list FETCH
|
|
915
|
+
# failures (GitHub unreachable, not a real CI verdict) — see
|
|
916
|
+
# `coord.merge_queue.MAX_CI_UNREADABLE_RERUNS` and
|
|
917
|
+
# `QueuedMerge.ci_unreadable_reruns`'s docstring. 0 for every row
|
|
918
|
+
# predating this column, same as the column's own default for a
|
|
919
|
+
# freshly-enqueued entry.
|
|
920
|
+
"ALTER TABLE merge_queue ADD COLUMN ci_unreadable_reruns INTEGER NOT NULL DEFAULT 0",
|
|
912
921
|
]
|
|
913
922
|
for sql in migrations:
|
|
914
923
|
try:
|
|
@@ -133,6 +133,7 @@ from coord.merge_queue import (
|
|
|
133
133
|
is_ci_flaky_reason,
|
|
134
134
|
is_ci_infra_reason,
|
|
135
135
|
is_ci_pending_reason,
|
|
136
|
+
is_ci_unreadable_reason,
|
|
136
137
|
is_stale_smoke_reason as _mq_is_stale_smoke_reason,
|
|
137
138
|
)
|
|
138
139
|
|
|
@@ -2539,8 +2540,8 @@ def _effective_merge_gate_reason(
|
|
|
2539
2540
|
own resolution path (#1474/#241's conflict-fix dispatch, reached
|
|
2540
2541
|
through the bounded retry below). A re-test does not rebase a branch,
|
|
2541
2542
|
and diverting to one is the same stall this issue is about, inverted.
|
|
2542
|
-
- a CI reason (#1891/#1892/#2252) — `merge_reason` already carries
|
|
2543
|
-
live, recognised signal whose only resolution is more real time.
|
|
2543
|
+
- a CI reason (#1891/#1892/#2252/#2347) — `merge_reason` already carries
|
|
2544
|
+
a live, recognised signal whose only resolution is more real time.
|
|
2544
2545
|
These bare waits sit right after the divergence check and must keep
|
|
2545
2546
|
winning.
|
|
2546
2547
|
|
|
@@ -2559,6 +2560,7 @@ def _effective_merge_gate_reason(
|
|
|
2559
2560
|
is_ci_pending_reason(state.merge_reason)
|
|
2560
2561
|
or is_ci_infra_reason(state.merge_reason)
|
|
2561
2562
|
or is_ci_flaky_reason(state.merge_reason)
|
|
2563
|
+
or is_ci_unreadable_reason(state.merge_reason)
|
|
2562
2564
|
):
|
|
2563
2565
|
return state.merge_reason, False
|
|
2564
2566
|
fallback = _extract_gate_refusal_reason(counters.last_merge_diagnostic)
|
|
@@ -2864,6 +2866,24 @@ def _decide_merge(
|
|
|
2864
2866
|
)
|
|
2865
2867
|
)
|
|
2866
2868
|
|
|
2869
|
+
# #2347: the sibling case checked right after #1891 — the check-list
|
|
2870
|
+
# FETCH itself failed (GitHub unreachable: a transient `gh pr checks`
|
|
2871
|
+
# HTTP 5xx, an auth blip), so there is no CI verdict of ANY shape yet,
|
|
2872
|
+
# not even a real "still running" one. `coord merge`'s own live attempt
|
|
2873
|
+
# already tracks a bounded count of consecutive fetch failures for this
|
|
2874
|
+
# (`coord.merge_queue.MAX_CI_UNREADABLE_RERUNS`) and keeps waiting
|
|
2875
|
+
# either way — there is no CI to rerun and no gate to re-test, only more
|
|
2876
|
+
# real time (GitHub answering again). Retrying `coord merge` here would
|
|
2877
|
+
# just re-observe the identical transport failure and spend an attempt
|
|
2878
|
+
# for nothing.
|
|
2879
|
+
if is_ci_unreadable_reason(state.merge_reason):
|
|
2880
|
+
return _wait(
|
|
2881
|
+
label=(
|
|
2882
|
+
"MERGE: GitHub could not be reached to read CI status — "
|
|
2883
|
+
f"waiting, not retrying (#2347): {state.merge_reason}"
|
|
2884
|
+
)
|
|
2885
|
+
)
|
|
2886
|
+
|
|
2867
2887
|
# #1892: the sibling case — a CI verdict DID arrive, but every failing
|
|
2868
2888
|
# check said nothing about the code (never assigned a runner, or died
|
|
2869
2889
|
# before checkout). `coord merge`'s own live attempt is already
|
|
@@ -96,6 +96,7 @@ from coord.merge_queue import (
|
|
|
96
96
|
is_ci_flaky_reason,
|
|
97
97
|
is_ci_infra_reason,
|
|
98
98
|
is_ci_pending_reason,
|
|
99
|
+
is_ci_unreadable_reason,
|
|
99
100
|
)
|
|
100
101
|
from coord.models import is_policy_refusal_reason
|
|
101
102
|
|
|
@@ -154,6 +155,15 @@ STATE_FAILED = "failed"
|
|
|
154
155
|
# today) on the very next tick. Same reasoning as #1892 for why this parks
|
|
155
156
|
# rather than spends: relaunching right now would just observe the same
|
|
156
157
|
# re-run-in-progress and wait again.
|
|
158
|
+
#
|
|
159
|
+
# #2347 extends the SAME state to a FOURTH trigger:
|
|
160
|
+
# `coord.merge_queue.is_ci_unreadable_reason` — the check-list FETCH itself
|
|
161
|
+
# failed (GitHub unreachable: a transient `gh pr checks` HTTP 5xx, an auth
|
|
162
|
+
# blip), not a CI verdict of any shape. The "more real time" that un-parks
|
|
163
|
+
# the entry is simply GitHub answering again on a later read — there is no
|
|
164
|
+
# in-flight rerun to wait on, unlike #1892/#2252, only another attempt to
|
|
165
|
+
# read. Same queue-level treatment as the other three: relaunching right now
|
|
166
|
+
# would just observe the identical transport failure and wait again.
|
|
157
167
|
STATE_PARKED = "parked"
|
|
158
168
|
|
|
159
169
|
TERMINAL_QUEUE_STATES: frozenset[str] = frozenset(
|
|
@@ -959,10 +969,18 @@ def build_board_view(
|
|
|
959
969
|
elif is_ci_flaky_reason(raw_reason) and not is_ci_flaky_reason(plan_reason):
|
|
960
970
|
reason = raw_reason
|
|
961
971
|
reason_is_live = False
|
|
972
|
+
# #2347: NO raw-row recovery needed here, unlike #1892/#2252 above —
|
|
973
|
+
# `coord.merge_queue._ci_unreadable_reason` needs no extra `CiStore`
|
|
974
|
+
# call (see that function's docstring), so `_entry_gate_status`
|
|
975
|
+
# computes the CI_UNREADABLE_PREFIX classification directly at
|
|
976
|
+
# board-build time. `plan_reason` already carries it whenever it
|
|
977
|
+
# applies; the live plan reading and a live `coord merge` attempt's
|
|
978
|
+
# raw reading can never disagree about this one.
|
|
962
979
|
if not (
|
|
963
980
|
is_ci_pending_reason(reason)
|
|
964
981
|
or is_ci_infra_reason(reason)
|
|
965
982
|
or is_ci_flaky_reason(reason)
|
|
983
|
+
or is_ci_unreadable_reason(reason)
|
|
966
984
|
):
|
|
967
985
|
continue
|
|
968
986
|
# #2158: the same plan row that came back with NO reason of its own
|
|
@@ -1059,6 +1077,13 @@ class Reconcile:
|
|
|
1059
1077
|
every tick by the pre-pass in :func:`plan_tick`, which flips it back
|
|
1060
1078
|
to ``waiting`` — no human, no escalation — the moment the board shows
|
|
1061
1079
|
the gate has cleared.
|
|
1080
|
+
* ``reparked`` — #2347: an ALREADY-``parked`` entry, still CONFIRMED
|
|
1081
|
+
blocked by this tick's own fresh re-check — but that fresh check found
|
|
1082
|
+
the real cause has become "GitHub could not be reached", distinct from
|
|
1083
|
+
whatever reason the entry originally parked on. State does not change
|
|
1084
|
+
(stays :data:`STATE_PARKED`), no attempt spent — only ``last_reason``
|
|
1085
|
+
is rewritten, so an operator reading ``coord drive-queue list``/
|
|
1086
|
+
``status`` sees the true cause instead of a frozen, misleading one.
|
|
1062
1087
|
* ``retry`` — genuinely dead: no session, no active work, and past the
|
|
1063
1088
|
startup grace window. Costs one attempt.
|
|
1064
1089
|
* ``exhausted`` — as ``retry``, but out of attempts; pairs with a
|
|
@@ -2528,6 +2553,7 @@ def plan_tick(
|
|
|
2528
2553
|
gate_a_pending: Mapping[str, bool] | None = None,
|
|
2529
2554
|
cordons: Mapping[str, str] | None = None,
|
|
2530
2555
|
live_ci_gate: Mapping[str, bool] | None = None,
|
|
2556
|
+
live_ci_gate_reason: Mapping[str, str] | None = None,
|
|
2531
2557
|
live_blocked_gate: Mapping[str, bool] | None = None,
|
|
2532
2558
|
editable_drift: tuple[str, str] | None = None,
|
|
2533
2559
|
) -> TickPlan:
|
|
@@ -2635,6 +2661,21 @@ def plan_tick(
|
|
|
2635
2661
|
side, which computes this ONLY for the bounded set of entries currently
|
|
2636
2662
|
`parked` on a CI reason, never the whole queue.
|
|
2637
2663
|
|
|
2664
|
+
*live_ci_gate_reason* (#2347) is *live_ci_gate*'s companion: the reason
|
|
2665
|
+
text the SAME fresh `entry_gate_status` call returned, for entries whose
|
|
2666
|
+
reading is STILL blocked. Never used to decide whether to resume (that
|
|
2667
|
+
remains `live_ci_gate`'s job) — only to rewrite a still-parked entry's
|
|
2668
|
+
`last_reason` when the fresh reading is `CI_UNREADABLE_PREFIX`-shaped and
|
|
2669
|
+
differs from what is currently stored, so `coord drive-queue list`/
|
|
2670
|
+
`status` shows "GitHub could not be reached" the moment that becomes the
|
|
2671
|
+
real cause, instead of silently keeping whatever reason the entry
|
|
2672
|
+
happened to park on originally (which #1891/#1892/#2252's "still shut ⇒
|
|
2673
|
+
no reconcile, no write" rule would otherwise leave frozen indefinitely —
|
|
2674
|
+
see the issue for the observed incident: a stale "CI running: ..."
|
|
2675
|
+
reason surviving a run of transient GitHub API 503s for most of
|
|
2676
|
+
`PARK_STALE_SECONDS` with no operator-visible signal of the real cause).
|
|
2677
|
+
A key ABSENT here changes nothing — same as an absent `live_ci_gate` key.
|
|
2678
|
+
|
|
2638
2679
|
*live_blocked_gate* is #2230's counterpart, for `blocked` instead of
|
|
2639
2680
|
`parked`: maps a RE-EVALUABLE `blocked` entry's key (never one
|
|
2640
2681
|
:func:`is_permanent_block_reason` recognises — the shell never even
|
|
@@ -2882,6 +2923,36 @@ def plan_tick(
|
|
|
2882
2923
|
live_override = (live_ci_gate or {}).get(entry.key)
|
|
2883
2924
|
if live_override is not None:
|
|
2884
2925
|
if live_override:
|
|
2926
|
+
# #2347: CONFIRMED still blocked — but if the FRESH reading
|
|
2927
|
+
# taken THIS tick says the real cause is "GitHub could not
|
|
2928
|
+
# be reached" (not a real CI verdict) and that differs from
|
|
2929
|
+
# whatever reason is currently stored, rewrite `last_reason`
|
|
2930
|
+
# so `coord drive-queue list`/`status` says so — rather than
|
|
2931
|
+
# silently re-confirming whatever reason this entry
|
|
2932
|
+
# happened to park on originally, unboundedly, the way
|
|
2933
|
+
# #1891/#1892/#2252's "still shut ⇒ no reconcile, no write"
|
|
2934
|
+
# rule does for every other still-blocked reading. State
|
|
2935
|
+
# stays `parked`, no attempt spent — this changes only what
|
|
2936
|
+
# the operator is told, never the decision.
|
|
2937
|
+
live_reason = (live_ci_gate_reason or {}).get(entry.key)
|
|
2938
|
+
if (
|
|
2939
|
+
live_reason
|
|
2940
|
+
and is_ci_unreadable_reason(live_reason)
|
|
2941
|
+
and live_reason != entry.last_reason
|
|
2942
|
+
):
|
|
2943
|
+
reason = (
|
|
2944
|
+
f"{live_reason} — still parked; the live re-check "
|
|
2945
|
+
"this tick could not reach GitHub either (#2347)"
|
|
2946
|
+
)
|
|
2947
|
+
reconciles.append(
|
|
2948
|
+
Reconcile(
|
|
2949
|
+
entry.key,
|
|
2950
|
+
"reparked",
|
|
2951
|
+
reason,
|
|
2952
|
+
occupies=False,
|
|
2953
|
+
updates={"last_reason": reason},
|
|
2954
|
+
)
|
|
2955
|
+
)
|
|
2885
2956
|
continue
|
|
2886
2957
|
reason = (
|
|
2887
2958
|
f"live re-check of {entry.key}'s gate this tick reads READY "
|
|
@@ -597,6 +597,14 @@ def _merge_entry(
|
|
|
597
597
|
# branch can ever legitimately fire for a given raw_reason.
|
|
598
598
|
elif is_ci_flaky_reason(raw_reason) and not is_ci_flaky_reason(reason):
|
|
599
599
|
reason = raw_reason
|
|
600
|
+
# #2347: deliberately NO third `elif` here for
|
|
601
|
+
# `is_ci_unreadable_reason` — unlike CI_INFRA_PREFIX/CI_FLAKY_PREFIX
|
|
602
|
+
# above, that classification needs no extra `CiStore` I/O (see
|
|
603
|
+
# `coord.merge_queue._ci_unreadable_reason`'s docstring), so
|
|
604
|
+
# `_entry_gate_status` already computes it directly at board-build
|
|
605
|
+
# time. `plan_entry["reason"]` (i.e. `reason` here) already carries
|
|
606
|
+
# it whenever it applies — there is nothing for the raw row to
|
|
607
|
+
# recover that the fresh plan reading doesn't already have.
|
|
600
608
|
|
|
601
609
|
return {
|
|
602
610
|
"status": status,
|