code-coordinator 0.5.57__tar.gz → 0.5.59__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.57/code_coordinator.egg-info → code_coordinator-0.5.59}/PKG-INFO +1 -1
- {code_coordinator-0.5.57 → code_coordinator-0.5.59/code_coordinator.egg-info}/PKG-INFO +1 -1
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/acceptance.py +19 -4
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/db.py +8 -1
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/drive.py +276 -1
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/drive_state.py +30 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/merge_queue.py +159 -9
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_merge.py +20 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_db.py +73 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_drive.py +366 -1
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_drive_state.py +45 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_merge_queue.py +198 -23
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/tests/fixtures/board_sample.json +1 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/.gitignore +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/CLAUDE.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/GOAL.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/LICENSE +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/MANIFEST.in +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/README.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/__init__.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/agent.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/audit.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/board_service.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/brain.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/claim.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/cli.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/client.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/comments.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/config.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dao.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/dist/assets/Gallery-da3qNiIw.js +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/dist/assets/Terminal-skVFCxPU.js +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/dist/assets/index-DltfZR5f.js +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/deps.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/events.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/filelock.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/freshness.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/gates.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/goal.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/context.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/models.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/render.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/health/units.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/hooks.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/interactive.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/models.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/network.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/notify.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/openapi.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/parentage.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/plans.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/progress.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/release_window.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/reports.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/review.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/smoke.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/split_work.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/state.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/test_author.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/test_report.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/usage.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/install-agent.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/pyproject.toml +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/setup.cfg +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/__init__.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/conftest.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_config.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_events.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_init.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_models.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_network.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_review.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_session.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_split.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_state.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.57 → code_coordinator-0.5.59}/tui/tests/cli.rs +0 -0
|
@@ -574,6 +574,16 @@ def expected_red_failure_summary(verdict: dict[str, Any]) -> str:
|
|
|
574
574
|
can't mistake this for "a test failed" — it is the opposite signal, and
|
|
575
575
|
the fix is editorial (clear the manifest entry, or realize the
|
|
576
576
|
assertion never exercised the bug), not code.
|
|
577
|
+
|
|
578
|
+
#2199: the guidance below used to send the operator to `coord
|
|
579
|
+
acceptance record`, on the claim that a green trust-gate run clears the
|
|
580
|
+
entry automatically. PR #2173 deliberately moved clearing OUT of
|
|
581
|
+
`record` and into the post-merge hook (`coord.merge_queue.
|
|
582
|
+
_maybe_clear_expected_red` / `coord.acceptance.
|
|
583
|
+
clear_expected_red_via_pr`, right after the fix's own PR actually
|
|
584
|
+
merges — see that function's docstring for the ordering bug this
|
|
585
|
+
fixed). Re-running `record` today clears nothing; an operator who
|
|
586
|
+
followed the old wording would watch it not work with no clue why.
|
|
577
587
|
"""
|
|
578
588
|
ids = verdict.get("unexpected_green") or []
|
|
579
589
|
if not ids:
|
|
@@ -583,10 +593,15 @@ def expected_red_failure_summary(verdict: dict[str, Any]) -> str:
|
|
|
583
593
|
f"HARD FAILURE: {len(ids)} test(s) listed in `expected_red` now PASS:\n"
|
|
584
594
|
f"{listed}\n"
|
|
585
595
|
"An expected-red test that passes means either the fix already "
|
|
586
|
-
"landed silently
|
|
587
|
-
"
|
|
588
|
-
"
|
|
589
|
-
"
|
|
596
|
+
"landed silently — it clears automatically once ITS OWN PR actually "
|
|
597
|
+
"merges (the post-merge hook, not `coord acceptance record`; see "
|
|
598
|
+
"docs/ORACLE_LOOP.md). Still listed after that merge? Check `coord "
|
|
599
|
+
"merge`'s own output for an `expected_red_clear_skipped*` event "
|
|
600
|
+
"naming why (no work assignment found, no passing trust-gate "
|
|
601
|
+
"verdict recorded, or a stale acceptance SHA), or run `coord "
|
|
602
|
+
"acceptance expected-red <repo>` to see current state — or the "
|
|
603
|
+
"assertion never exercised the bug in the first place (#1965). "
|
|
604
|
+
"This is NOT an ordinary test failure — it is the opposite signal."
|
|
590
605
|
)
|
|
591
606
|
|
|
592
607
|
|
|
@@ -188,7 +188,8 @@ def _ensure_schema(conn: sqlite3.Connection) -> None:
|
|
|
188
188
|
enqueued_at REAL,
|
|
189
189
|
assignment_type TEXT DEFAULT 'work',
|
|
190
190
|
required_gates TEXT,
|
|
191
|
-
ci_infra_reruns INTEGER NOT NULL DEFAULT 0
|
|
191
|
+
ci_infra_reruns INTEGER NOT NULL DEFAULT 0,
|
|
192
|
+
ci_stale_reruns INTEGER NOT NULL DEFAULT 0
|
|
192
193
|
);
|
|
193
194
|
|
|
194
195
|
CREATE TABLE IF NOT EXISTS plans (
|
|
@@ -697,6 +698,12 @@ def _migrate_add_columns(conn: sqlite3.Connection) -> None:
|
|
|
697
698
|
# predating this column (no auto-reruns spent yet), same as the
|
|
698
699
|
# column's own default for freshly-enqueued entries.
|
|
699
700
|
"ALTER TABLE merge_queue ADD COLUMN ci_infra_reruns INTEGER NOT NULL DEFAULT 0",
|
|
701
|
+
# #2197: the CI-staleness auto-rerun's OWN counter — see
|
|
702
|
+
# `coord.merge_queue.MAX_CI_STALE_RERUNS` and
|
|
703
|
+
# `QueuedMerge.ci_stale_reruns`'s docstring for why it is kept
|
|
704
|
+
# separate from `ci_infra_reruns` rather than sharing it. 0 for
|
|
705
|
+
# every row predating this column, same as a freshly-enqueued entry.
|
|
706
|
+
"ALTER TABLE merge_queue ADD COLUMN ci_stale_reruns INTEGER NOT NULL DEFAULT 0",
|
|
700
707
|
# #1956: verdict provenance — WHO recorded `review_verdict` and HOW
|
|
701
708
|
# (see coord.models.Assignment.verdict_source for the three values
|
|
702
709
|
# and why conflating them was the second half of #1956). NULL for
|
|
@@ -288,6 +288,35 @@ class DriveCounters:
|
|
|
288
288
|
# capture deserves its own full budget of cheap waits before the next
|
|
289
289
|
# forced retry.
|
|
290
290
|
gate_wait_rounds: int = 0
|
|
291
|
+
# #2199: bounded retry for the trust gate's OWN dispatch — distinct from
|
|
292
|
+
# `fix_rounds` (which bounds "the work needs another round" once a
|
|
293
|
+
# verdict, passed or failed, actually landed on the board). This counts
|
|
294
|
+
# attempts where `coord acceptance record` itself never got that far —
|
|
295
|
+
# a missing local checkout, a driver crash, GitHub unreachable — so a
|
|
296
|
+
# persistently broken environment reaches a named `_die()` instead of
|
|
297
|
+
# `coord drive` re-running a full git-worktree + suite invocation every
|
|
298
|
+
# poll forever. Bounded by `opts.max_work_retries`, the same "how many
|
|
299
|
+
# times do we retry a flaky infra thing" budget `work_retries` uses.
|
|
300
|
+
#
|
|
301
|
+
# #2199 review (blocking finding 1): scoped to ONE sha via
|
|
302
|
+
# `acceptance_gate_attempts_sha` below — NOT a lifetime total. A fresh
|
|
303
|
+
# SHA (a fix round pushing a new commit) legitimately needs its own
|
|
304
|
+
# dispatch, and that dispatch is the entire point of the "same shape as
|
|
305
|
+
# `_decide_test`'s fix loop" design a few lines up in
|
|
306
|
+
# `_decide_acceptance_gate`; sharing one un-reset counter across every
|
|
307
|
+
# SHA a drive ever sees meant the SECOND round after the FIRST fix round
|
|
308
|
+
# already exhausted the default `max_work_retries=1` budget and died
|
|
309
|
+
# with a false "environment broken" diagnosis — even though the trust
|
|
310
|
+
# gate was working exactly as designed (quadraui#542's actual shape:
|
|
311
|
+
# one fix round, then this).
|
|
312
|
+
acceptance_gate_attempts: int = 0
|
|
313
|
+
# #2199 review: the SHA `acceptance_gate_attempts` above is counting
|
|
314
|
+
# dispatch attempts FOR. `_decide_acceptance_gate` resets the counter to
|
|
315
|
+
# 0 whenever it sees a SHA that doesn't match this — a fresh commit (a
|
|
316
|
+
# fix round, a rebase) always gets its own full attempt budget, and only
|
|
317
|
+
# repeated failures to produce ANY verdict for the SAME commit reach
|
|
318
|
+
# `_die()`.
|
|
319
|
+
acceptance_gate_attempts_sha: str = ""
|
|
291
320
|
# #2079: a SECOND, independent budget of exactly the same shape, spent
|
|
292
321
|
# only on landing the oracle-mode JIT acceptance slice
|
|
293
322
|
# (`_decide_acceptance_landing`). Separate rather than shared because the
|
|
@@ -375,6 +404,14 @@ class AcceptanceGateChecker(Protocol):
|
|
|
375
404
|
|
|
376
405
|
def resolve_for_path(self, repo_name: str, milestone_number: int) -> str | None: ...
|
|
377
406
|
|
|
407
|
+
def is_issue_exempt(
|
|
408
|
+
self,
|
|
409
|
+
repo_name: str,
|
|
410
|
+
milestone_number: int,
|
|
411
|
+
issue_number: int,
|
|
412
|
+
issue_labels: tuple[str, ...],
|
|
413
|
+
) -> bool: ...
|
|
414
|
+
|
|
378
415
|
|
|
379
416
|
@dataclass
|
|
380
417
|
class GitHubAcceptanceGateChecker:
|
|
@@ -412,6 +449,34 @@ class GitHubAcceptanceGateChecker:
|
|
|
412
449
|
return None
|
|
413
450
|
return resolve_for_path(self.config, repo_cfg, milestone_number)
|
|
414
451
|
|
|
452
|
+
def is_issue_exempt(
|
|
453
|
+
self,
|
|
454
|
+
repo_name: str,
|
|
455
|
+
milestone_number: int,
|
|
456
|
+
issue_number: int,
|
|
457
|
+
issue_labels: tuple[str, ...],
|
|
458
|
+
) -> bool:
|
|
459
|
+
"""#2199: does *issue_number* opt out of the sealed suite — the
|
|
460
|
+
SAME ``manifest.exempt`` list / ``oracle:exempt`` label the #1138
|
|
461
|
+
hard gate (:func:`coord.milestone_dispatch.issue_oracle_ready`)
|
|
462
|
+
already reads. Reused rather than re-derived so the JIT-authoring
|
|
463
|
+
gate and the #2199 trust gate can never disagree about which
|
|
464
|
+
issues the oracle loop covers — see that function's own docstring
|
|
465
|
+
for why ``exempt`` says "doesn't consume the sealed suite" and
|
|
466
|
+
nothing about Gate A sign-off (already established True by the
|
|
467
|
+
time :func:`resolve_oracle_decision` calls this).
|
|
468
|
+
"""
|
|
469
|
+
from coord.milestone_dispatch import issue_oracle_ready # noqa: PLC0415
|
|
470
|
+
|
|
471
|
+
repo_cfg = self.config.repo(repo_name)
|
|
472
|
+
if repo_cfg is None:
|
|
473
|
+
return False
|
|
474
|
+
readiness = issue_oracle_ready(
|
|
475
|
+
repo_cfg, self.config, milestone_number, issue_number,
|
|
476
|
+
issue_labels=issue_labels,
|
|
477
|
+
)
|
|
478
|
+
return readiness.exempt
|
|
479
|
+
|
|
415
480
|
|
|
416
481
|
@dataclass(frozen=True)
|
|
417
482
|
class OracleDecision:
|
|
@@ -424,11 +489,23 @@ class OracleDecision:
|
|
|
424
489
|
to guess which mode a run is in. ``tracking_issue`` is set iff ``active``
|
|
425
490
|
— the argument :func:`_decide_acceptance_author` needs to build ``coord
|
|
426
491
|
acceptance author <repo> <tracking_issue> --issue <N>``.
|
|
492
|
+
|
|
493
|
+
#2199: ``issue_exempt`` — resolved alongside ``active`` (same one-shot
|
|
494
|
+
GitHub fetch budget: ``AcceptanceGateChecker.is_issue_exempt`` reuses the
|
|
495
|
+
#1138 hard gate's own manifest read) — is *this issue*'s
|
|
496
|
+
``manifest.exempt``/``oracle:exempt`` opt-out from the sealed suite.
|
|
497
|
+
:func:`_decide_acceptance_gate` (the trust gate) skips entirely when
|
|
498
|
+
this is ``True``: an exempt issue has no authored slice for `coord
|
|
499
|
+
acceptance record` to re-run, so treating its absence as a red verdict
|
|
500
|
+
would be exactly the "acquire a new blocking gate it never opted into"
|
|
501
|
+
regression #2199's acceptance criteria rule out. Always ``False`` when
|
|
502
|
+
``active`` is ``False`` — meaningless outside the oracle loop.
|
|
427
503
|
"""
|
|
428
504
|
|
|
429
505
|
active: bool
|
|
430
506
|
reason: str
|
|
431
507
|
tracking_issue: int | None = None
|
|
508
|
+
issue_exempt: bool = False
|
|
432
509
|
|
|
433
510
|
|
|
434
511
|
def resolve_oracle_decision(
|
|
@@ -488,6 +565,13 @@ def resolve_oracle_decision(
|
|
|
488
565
|
f"acceptance mock {state.repo} {state.milestone_tracking_issue}` "
|
|
489
566
|
"first for the oracle loop, docs/ORACLE_LOOP.md)",
|
|
490
567
|
)
|
|
568
|
+
# #2199: resolved here, alongside everything else `resolve_oracle_decision`
|
|
569
|
+
# already settles once per run — see `OracleDecision.issue_exempt`'s
|
|
570
|
+
# docstring for why the trust gate needs this and why it must reuse
|
|
571
|
+
# (not re-derive) the #1138 hard gate's own exemption check.
|
|
572
|
+
issue_exempt = gate_checker.is_issue_exempt(
|
|
573
|
+
state.repo, state.milestone_number, state.issue, state.issue_labels,
|
|
574
|
+
)
|
|
491
575
|
return OracleDecision(
|
|
492
576
|
True,
|
|
493
577
|
f"ORACLE DRIVE — ms-{state.milestone_number}'s Gate-A contract is "
|
|
@@ -496,6 +580,7 @@ def resolve_oracle_decision(
|
|
|
496
580
|
f"{state.milestone_tracking_issue} --issue {state.issue}`) before "
|
|
497
581
|
"dispatching work",
|
|
498
582
|
tracking_issue=state.milestone_tracking_issue,
|
|
583
|
+
issue_exempt=issue_exempt,
|
|
499
584
|
)
|
|
500
585
|
|
|
501
586
|
|
|
@@ -851,12 +936,14 @@ def _acceptance_message(message: str, state: IssueState) -> str:
|
|
|
851
936
|
|
|
852
937
|
|
|
853
938
|
class MergeVerifier(Protocol):
|
|
854
|
-
"""The
|
|
939
|
+
"""The git/GitHub questions the state machine cannot answer itself."""
|
|
855
940
|
|
|
856
941
|
def branch_has_commits(self, state: IssueState) -> bool: ...
|
|
857
942
|
|
|
858
943
|
def verify_merged(self, state: IssueState) -> bool: ...
|
|
859
944
|
|
|
945
|
+
def branch_head_sha(self, state: IssueState) -> str | None: ...
|
|
946
|
+
|
|
860
947
|
|
|
861
948
|
@dataclass
|
|
862
949
|
class GitMergeVerifier:
|
|
@@ -965,6 +1052,23 @@ class GitMergeVerifier:
|
|
|
965
1052
|
finally:
|
|
966
1053
|
self._git(base, "update-ref", "-d", vref)
|
|
967
1054
|
|
|
1055
|
+
def branch_head_sha(self, state: IssueState) -> str | None:
|
|
1056
|
+
"""The exact commit `coord acceptance record --sha` (#2199) must be
|
|
1057
|
+
pointed at — the trust gate re-runs the sealed suite against a
|
|
1058
|
+
precise SHA, never a branch name that could move under a slow
|
|
1059
|
+
drive loop. GitHub API, not a local checkout: same reasoning as
|
|
1060
|
+
:meth:`verify_merged`'s primary path — authoritative for every
|
|
1061
|
+
machine this driver might run on, no ``~/src/<repo>`` clone
|
|
1062
|
+
required. Returns ``None`` (never raises) when the branch is gone
|
|
1063
|
+
or GitHub is unreachable; callers treat that as "try again next
|
|
1064
|
+
poll", never as a verdict.
|
|
1065
|
+
"""
|
|
1066
|
+
if not state.work_branch or not state.repo_github:
|
|
1067
|
+
return None
|
|
1068
|
+
from coord import github_ops # noqa: PLC0415
|
|
1069
|
+
|
|
1070
|
+
return github_ops.get_branch_sha(state.repo_github, state.work_branch)
|
|
1071
|
+
|
|
968
1072
|
|
|
969
1073
|
# ── preflight (pure) ─────────────────────────────────────────────────────────
|
|
970
1074
|
|
|
@@ -1326,6 +1430,22 @@ def decide(
|
|
|
1326
1430
|
_escalate_dead_end(state, dead_end), warnings=warnings
|
|
1327
1431
|
)
|
|
1328
1432
|
|
|
1433
|
+
# #2199: the oracle loop's TRUST GATE — docs/ORACLE_LOOP.md Phase-1 step
|
|
1434
|
+
# 6, right here between the dead-end predicate and the Test gate,
|
|
1435
|
+
# because this is the first point `coord drive` has observed the work
|
|
1436
|
+
# assignment's branch head AFTER push. Before this, nothing ever called
|
|
1437
|
+
# `coord acceptance record`: an issue driven end-to-end by `coord drive`
|
|
1438
|
+
# completed with `acceptance_state = None` forever, so the sealed suite
|
|
1439
|
+
# was never re-run externally and `_maybe_clear_expected_red` could
|
|
1440
|
+
# never clear (quadraui#542).
|
|
1441
|
+
acceptance_gate = _decide_acceptance_gate(
|
|
1442
|
+
state, opts, counters, machine, oracle, verifier, gate_checker
|
|
1443
|
+
)
|
|
1444
|
+
if acceptance_gate is not None:
|
|
1445
|
+
return replace(
|
|
1446
|
+
acceptance_gate, warnings=warnings + acceptance_gate.warnings
|
|
1447
|
+
)
|
|
1448
|
+
|
|
1329
1449
|
test = _decide_test(state, opts, counters, machine)
|
|
1330
1450
|
if test is not None:
|
|
1331
1451
|
return replace(test, warnings=warnings + test.warnings)
|
|
@@ -1467,6 +1587,161 @@ def _decide_advisory(
|
|
|
1467
1587
|
)
|
|
1468
1588
|
|
|
1469
1589
|
|
|
1590
|
+
def _decide_acceptance_gate(
|
|
1591
|
+
state: IssueState,
|
|
1592
|
+
opts: DriveOptions,
|
|
1593
|
+
counters: DriveCounters,
|
|
1594
|
+
machine: str,
|
|
1595
|
+
oracle: OracleDecision | None,
|
|
1596
|
+
verifier: MergeVerifier,
|
|
1597
|
+
gate_checker: AcceptanceGateChecker | None,
|
|
1598
|
+
) -> Action | None:
|
|
1599
|
+
"""The #2199 oracle-loop TRUST GATE — ``coord acceptance record --repo
|
|
1600
|
+
R --issue N --sha <pushed sha>``, run by the COORDINATOR (this process,
|
|
1601
|
+
never inside the worker's own session) against the exact commit the
|
|
1602
|
+
work assignment pushed. docs/ORACLE_LOOP.md's Phase-1 step 6, and the
|
|
1603
|
+
reason it exists: a headless worker's in-session "green" claim
|
|
1604
|
+
(``coord acceptance run``, Phase-1 step 5) can lie; it cannot fake the
|
|
1605
|
+
coordinator re-running the sealed suite itself. ``None`` means "not
|
|
1606
|
+
applicable, or already resolved for this SHA — fall through to Test".
|
|
1607
|
+
|
|
1608
|
+
Before #2199 NOTHING ever called this — an issue driven end-to-end by
|
|
1609
|
+
``coord drive`` completed with ``acceptance_state = None`` forever, so
|
|
1610
|
+
``coord.merge_queue._maybe_clear_expected_red`` could never clear an
|
|
1611
|
+
``expected_red`` entry either (quadraui#542, quadraui#492).
|
|
1612
|
+
|
|
1613
|
+
Only fires when ``oracle.active`` (a driver-configured repo, an issue
|
|
1614
|
+
in a milestone whose Gate-A contract is merged — the same condition
|
|
1615
|
+
that gated JIT-slice authoring) AND this issue is not
|
|
1616
|
+
``oracle.issue_exempt`` (``manifest.exempt`` / the ``oracle:exempt``
|
|
1617
|
+
label — an issue that never consumed the sealed suite has nothing for
|
|
1618
|
+
``record`` to re-run, so gating on its absence would be a NEW blocking
|
|
1619
|
+
gate an exempt issue never opted into, exactly what #2199's acceptance
|
|
1620
|
+
criteria rule out). Every other issue — no driver, no milestone,
|
|
1621
|
+
``--no-acceptance`` — passes straight through unchanged.
|
|
1622
|
+
|
|
1623
|
+
*gate_checker* (#2199 review, blocking finding 3): resolves
|
|
1624
|
+
``--for-path`` for a ROUTED repo (``acceptance.drivers.<repo>.routes``)
|
|
1625
|
+
exactly like :func:`_decide_acceptance_author` already does — without
|
|
1626
|
+
it, ``coord commands/acceptance.py``'s ``_resolve_driver`` hard-refuses
|
|
1627
|
+
every dispatch on a routed repo with "no route matched", so the trust
|
|
1628
|
+
gate silently never functioned there at all.
|
|
1629
|
+
"""
|
|
1630
|
+
if oracle is None or not oracle.active or oracle.issue_exempt:
|
|
1631
|
+
return None
|
|
1632
|
+
assert gate_checker is not None, (
|
|
1633
|
+
"oracle.active implies resolve_oracle_decision ran with a real "
|
|
1634
|
+
"gate_checker; decide() always threads one through"
|
|
1635
|
+
)
|
|
1636
|
+
|
|
1637
|
+
sha = verifier.branch_head_sha(state)
|
|
1638
|
+
if sha is None:
|
|
1639
|
+
# GitHub unreachable or the branch vanished between polls — don't
|
|
1640
|
+
# let a transient lookup block a whole drive run; retry next poll.
|
|
1641
|
+
return _wait(label="ACCEPTANCE: waiting to resolve the pushed SHA")
|
|
1642
|
+
|
|
1643
|
+
if state.work_acceptance_sha == sha:
|
|
1644
|
+
if state.work_acceptance_state == "passed":
|
|
1645
|
+
return None # trust gate already green for this exact commit
|
|
1646
|
+
if state.work_acceptance_state == "failed":
|
|
1647
|
+
# Same shape as a failed Test verdict (#2199 acceptance: "a
|
|
1648
|
+
# failed trust gate must block, not warn ... at the same place
|
|
1649
|
+
# a failed Test verdict does") — a bounded fix-round retry,
|
|
1650
|
+
# sharing the ONE fix budget `_decide_test` also spends from
|
|
1651
|
+
# (#1692: a failed test and a failed trust gate are two shapes
|
|
1652
|
+
# of the same "the work needs another round" loop).
|
|
1653
|
+
if counters.fix_rounds >= opts.max_fix_rounds:
|
|
1654
|
+
return _die(
|
|
1655
|
+
f"acceptance trust gate still failing after "
|
|
1656
|
+
f"{counters.fix_rounds} fix round(s) at {sha} — "
|
|
1657
|
+
"stopping.\n"
|
|
1658
|
+
f" Reason: {state.work_acceptance_reason or 'none recorded'}\n"
|
|
1659
|
+
f" Inspect: coord log {state.work_aid} --machine "
|
|
1660
|
+
f"{state.work_machine or machine}"
|
|
1661
|
+
)
|
|
1662
|
+
counters.fix_rounds += 1
|
|
1663
|
+
return Action(
|
|
1664
|
+
kind=RUN,
|
|
1665
|
+
label=(
|
|
1666
|
+
"ACCEPTANCE: trust gate failed → fix round "
|
|
1667
|
+
f"{counters.fix_rounds}/{opts.max_fix_rounds} "
|
|
1668
|
+
f"(coord fix {state.work_aid})"
|
|
1669
|
+
),
|
|
1670
|
+
command=("fix", state.work_aid),
|
|
1671
|
+
error_message=(
|
|
1672
|
+
f"coord fix {state.work_aid} failed to dispatch after a "
|
|
1673
|
+
"failed acceptance trust gate."
|
|
1674
|
+
),
|
|
1675
|
+
)
|
|
1676
|
+
|
|
1677
|
+
# No verdict recorded yet for this exact SHA — never run, or run
|
|
1678
|
+
# against a now-stale one (a fix round, a rebase). Dispatch it.
|
|
1679
|
+
#
|
|
1680
|
+
# #2199 review (blocking finding 1): `acceptance_gate_attempts` is
|
|
1681
|
+
# scoped to THIS sha, not a lifetime total — a fresh SHA (this branch
|
|
1682
|
+
# runs again after a fix round pushed a new commit) gets its own full
|
|
1683
|
+
# attempt budget. Without this reset, the legitimate re-dispatch for
|
|
1684
|
+
# SHA2 inherited SHA1's already-spent count and died immediately with a
|
|
1685
|
+
# false "environment broken" diagnosis on exactly the second round the
|
|
1686
|
+
# docstring above says this mirrors `_decide_test` for.
|
|
1687
|
+
if counters.acceptance_gate_attempts_sha != sha:
|
|
1688
|
+
counters.acceptance_gate_attempts = 0
|
|
1689
|
+
counters.acceptance_gate_attempts_sha = sha
|
|
1690
|
+
|
|
1691
|
+
# `on_error="warn"` is deliberate: `coord acceptance record` exits
|
|
1692
|
+
# non-zero BOTH when it successfully records a red verdict (the board
|
|
1693
|
+
# write already happened before it exits — the next poll's
|
|
1694
|
+
# `work_acceptance_state == "failed"` branch above is what actually
|
|
1695
|
+
# bounces to Fix) and when it errors out before ever reaching a verdict
|
|
1696
|
+
# (no local checkout, a driver crash, a git fetch failure). Raising
|
|
1697
|
+
# `DriveError` here on either would turn a routine red trust-gate round
|
|
1698
|
+
# into a terminal drive failure — exactly the "must block [via Fix],
|
|
1699
|
+
# not warn" the acceptance criteria ask for, achieved one poll later by
|
|
1700
|
+
# observation rather than by inspecting this exit code directly.
|
|
1701
|
+
if counters.acceptance_gate_attempts >= opts.max_work_retries:
|
|
1702
|
+
return _die(
|
|
1703
|
+
f"acceptance trust gate never produced a verdict for {sha} "
|
|
1704
|
+
f"after {counters.acceptance_gate_attempts} attempt(s) — "
|
|
1705
|
+
"`coord acceptance record` keeps failing before recording "
|
|
1706
|
+
"anything (checkout/driver/environment problem, not a red "
|
|
1707
|
+
"suite).\n"
|
|
1708
|
+
f" Inspect: coord acceptance record --repo {state.repo} "
|
|
1709
|
+
f"--issue {state.issue} --sha {sha}"
|
|
1710
|
+
)
|
|
1711
|
+
counters.acceptance_gate_attempts += 1
|
|
1712
|
+
|
|
1713
|
+
# #2199 review (blocking finding 3): resolve `--for-path` exactly like
|
|
1714
|
+
# `_decide_acceptance_author` does — a routed repo's `_resolve_driver`
|
|
1715
|
+
# (coord/commands/acceptance.py) hard-refuses with "no route matched"
|
|
1716
|
+
# when it's omitted, which made the trust gate structurally unable to
|
|
1717
|
+
# ever record a verdict for such a repo.
|
|
1718
|
+
from coord.acceptance import ForPathResolutionError # noqa: PLC0415
|
|
1719
|
+
|
|
1720
|
+
try:
|
|
1721
|
+
for_path = gate_checker.resolve_for_path(state.repo, state.milestone_number)
|
|
1722
|
+
except ForPathResolutionError as exc:
|
|
1723
|
+
return _die(
|
|
1724
|
+
f"could not resolve --for-path for {state.repo}'s acceptance "
|
|
1725
|
+
f"trust gate on #{state.issue}: {exc}"
|
|
1726
|
+
)
|
|
1727
|
+
command = [
|
|
1728
|
+
"acceptance", "record", "--repo", state.repo, "--issue",
|
|
1729
|
+
str(state.issue), "--sha", sha,
|
|
1730
|
+
]
|
|
1731
|
+
if for_path:
|
|
1732
|
+
command += ["--for-path", for_path]
|
|
1733
|
+
|
|
1734
|
+
return Action(
|
|
1735
|
+
kind=RUN,
|
|
1736
|
+
label=(
|
|
1737
|
+
"ACCEPTANCE: trust gate → coord acceptance record --sha "
|
|
1738
|
+
f"{sha[:12]}" + (f" --for-path {for_path}" if for_path else "")
|
|
1739
|
+
),
|
|
1740
|
+
command=tuple(command),
|
|
1741
|
+
on_error="warn",
|
|
1742
|
+
)
|
|
1743
|
+
|
|
1744
|
+
|
|
1470
1745
|
def _decide_test(
|
|
1471
1746
|
state: IssueState,
|
|
1472
1747
|
opts: DriveOptions,
|
|
@@ -84,6 +84,20 @@ class IssueState:
|
|
|
84
84
|
work_review_iter: int = 0
|
|
85
85
|
work_exit_code: int | None = None
|
|
86
86
|
work_failure_reason: str = ""
|
|
87
|
+
# #2199: the trust-gate verdict `coord acceptance record --issue N --sha
|
|
88
|
+
# <sha>` writes onto THIS issue's own `work` row (see `coord.state.
|
|
89
|
+
# record_acceptance_verdict` — the same field `coord.merge_queue.
|
|
90
|
+
# _maybe_clear_expected_red` already reads via `getattr(work,
|
|
91
|
+
# "acceptance_state", None)`). "" | "passed" | "failed" — "" means no
|
|
92
|
+
# verdict has ever been recorded for this work row, which is exactly
|
|
93
|
+
# the ambiguity #2199 exists to resolve: nothing used to write this at
|
|
94
|
+
# all, so it was indistinguishable from "the gate ran and lied clean".
|
|
95
|
+
# `work_acceptance_sha` is the commit the last verdict was recorded
|
|
96
|
+
# against — a fresh push (fix round, rebase) invalidates it the same
|
|
97
|
+
# way `review_head_sha` invalidates a stale review approval.
|
|
98
|
+
work_acceptance_state: str = ""
|
|
99
|
+
work_acceptance_reason: str = ""
|
|
100
|
+
work_acceptance_sha: str = ""
|
|
87
101
|
|
|
88
102
|
review_aid: str = ""
|
|
89
103
|
review_status: str = ""
|
|
@@ -141,6 +155,12 @@ class IssueState:
|
|
|
141
155
|
# member of any tracked work order — the "normal drive" case.
|
|
142
156
|
milestone_number: int | None = None
|
|
143
157
|
milestone_tracking_issue: int | None = None
|
|
158
|
+
# #2199: this issue's own GitHub labels — resolved from the same
|
|
159
|
+
# `/board` `issues` row `milestone_number` is (no extra I/O). Threaded
|
|
160
|
+
# through so `resolve_oracle_decision` can resolve per-issue
|
|
161
|
+
# `oracle:exempt`/`manifest.exempt` opt-out for the trust gate
|
|
162
|
+
# (`AcceptanceGateChecker.is_issue_exempt`) without a second board scan.
|
|
163
|
+
issue_labels: tuple[str, ...] = ()
|
|
144
164
|
|
|
145
165
|
# The JIT slice's own `type="test-author"` assignment (#1171: keyed on
|
|
146
166
|
# `for_issue_number == issue`, NOT `issue_number` — that field is the
|
|
@@ -224,6 +244,12 @@ class IssueState:
|
|
|
224
244
|
self.work_aid,
|
|
225
245
|
self.work_status,
|
|
226
246
|
self.work_test_state,
|
|
247
|
+
# #2199: the trust gate's own verdict is a real transition
|
|
248
|
+
# the same way work_test_state is — see the docstring above
|
|
249
|
+
# for why omitting an analogous field mutes the `state:`
|
|
250
|
+
# log line and fools the stall detector.
|
|
251
|
+
self.work_acceptance_state,
|
|
252
|
+
self.work_acceptance_sha,
|
|
227
253
|
self.work_review_state,
|
|
228
254
|
self.work_review_iter,
|
|
229
255
|
self.review_status,
|
|
@@ -402,6 +428,9 @@ def project(payload: dict, repo: str, issue: int, config: Any) -> IssueState:
|
|
|
402
428
|
work_review_iter=int(g(work, "review_iteration", 0) or 0),
|
|
403
429
|
work_exit_code=None if exit_code is None else int(exit_code),
|
|
404
430
|
work_failure_reason=g(work, "failure_reason"),
|
|
431
|
+
work_acceptance_state=g(work, "acceptance_state"),
|
|
432
|
+
work_acceptance_reason=g(work, "acceptance_reason"),
|
|
433
|
+
work_acceptance_sha=g(work, "acceptance_sha"),
|
|
405
434
|
review_aid=g(review, "assignment_id"),
|
|
406
435
|
review_status=g(review, "status"),
|
|
407
436
|
review_verdict=g(review, "review_verdict"),
|
|
@@ -421,6 +450,7 @@ def project(payload: dict, repo: str, issue: int, config: Any) -> IssueState:
|
|
|
421
450
|
picked_machine_no_capable=_machine_pick.no_capable_machine,
|
|
422
451
|
milestone_number=milestone_number,
|
|
423
452
|
milestone_tracking_issue=milestone_tracking_issue,
|
|
453
|
+
issue_labels=tuple(issue_labels),
|
|
424
454
|
# #2024: the per-issue Test-stage policy, off the labels already read
|
|
425
455
|
# above (no extra I/O). `test_mode_from_labels` is the same function
|
|
426
456
|
# `coord.state._get_issue_test_mode_local` uses, so the driver and the
|