code-coordinator 0.5.141__tar.gz → 0.5.143__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.141 → code_coordinator-0.5.143}/PKG-INFO +1 -1
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/merge_queue.py +119 -15
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/reconcile.py +22 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_drive_queue.py +56 -6
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_merge_queue.py +140 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_reconcile.py +58 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/.gitignore +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/CLAUDE.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/GOAL.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/LICENSE +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/MANIFEST.in +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/README.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/__init__.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/agent.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/audit.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/block_log.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/board_service.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/brain.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/claim.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/cli.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/client.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/comments.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/config.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dao.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/db.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/deps.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/drive.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/events.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/filelock.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/freshness.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/gates.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/goal.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/context.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/models.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/render.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/health/units.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/hooks.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/interactive.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/models.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/network.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/notify.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/openapi.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/parentage.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/plans.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/progress.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/release_window.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/reports.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/review.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/smoke.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/split_work.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/state.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/test_author.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/test_report.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/usage.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/install-agent.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/pyproject.toml +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/setup.cfg +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/__init__.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/conftest.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_config.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_db.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_events.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_init.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_models.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_network.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_review.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_session.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_split.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_state.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.141 → code_coordinator-0.5.143}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -1588,6 +1588,43 @@ def _ci_unreadable_reason(failed: "list[CheckRun]") -> str | None:
|
|
|
1588
1588
|
)
|
|
1589
1589
|
|
|
1590
1590
|
|
|
1591
|
+
# #2380: a bare check-list FETCH failure (`_ci_unreadable_reason`, above) has
|
|
1592
|
+
# TWO readings, exactly like `checks == []` already does (#1877): "GitHub is
|
|
1593
|
+
# genuinely unreachable right now" (real, self-healing — keep retrying), and
|
|
1594
|
+
# "this PR is DIRTY/CONFLICTING against its base, so GitHub can never build a
|
|
1595
|
+
# merge ref for it and `gh pr checks` has nothing to read" (definitive,
|
|
1596
|
+
# self-*never*-healing — no amount of retrying a CI read produces CI that
|
|
1597
|
+
# will never run). The two are indistinguishable from the check list alone;
|
|
1598
|
+
# GitHub's own `mergeable` field is the one thing that tells them apart, and
|
|
1599
|
+
# — unlike CI — it is always computable, conflict or not.
|
|
1600
|
+
def _pr_reports_conflicting(gh_ops, repo: str | None, number: int | None) -> bool:
|
|
1601
|
+
"""True only when GitHub's live ``mergeable`` field reads ``CONFLICTING``
|
|
1602
|
+
for PR *number* — definitive, readable evidence a CI-unreadable park can
|
|
1603
|
+
never resolve on its own (#2380).
|
|
1604
|
+
|
|
1605
|
+
Duck-typed the same way the sibling #1877 checks-absent conflict probe
|
|
1606
|
+
(a few lines above each of this function's call sites) already is:
|
|
1607
|
+
``gh_ops`` on the board/plan read path may be a :class:`~coord.gate_
|
|
1608
|
+
snapshot.GateSnapshot` with no ``check_pr_mergeable`` at all (#1336
|
|
1609
|
+
Invariant 1 — no third-party I/O there), and any of "no probe available",
|
|
1610
|
+
"the probe raised", or a ``True``/``None`` verdict (cleanly mergeable, or
|
|
1611
|
+
GitHub still computing it) must read as "not confirmed conflicting" —
|
|
1612
|
+
never as false evidence of one. This is intentionally narrower than the
|
|
1613
|
+
design's "``mergeable == CONFLICTING`` or ``mergeStateStatus == DIRTY``"
|
|
1614
|
+
framing: :func:`coord.github_ops.check_pr_mergeable` already reads GitHub's
|
|
1615
|
+
``mergeable`` field, which is exactly ``CONFLICTING`` whenever
|
|
1616
|
+
``mergeStateStatus`` would read ``DIRTY`` — one probe, one `gh` call,
|
|
1617
|
+
same readable-and-definitive signal either way.
|
|
1618
|
+
"""
|
|
1619
|
+
probe = getattr(gh_ops, "check_pr_mergeable", None)
|
|
1620
|
+
if probe is None or not repo or number is None:
|
|
1621
|
+
return False
|
|
1622
|
+
try:
|
|
1623
|
+
return probe(repo, number) is False
|
|
1624
|
+
except Exception: # noqa: BLE001 — inconclusive, not a confirmed conflict
|
|
1625
|
+
return False
|
|
1626
|
+
|
|
1627
|
+
|
|
1591
1628
|
def _ci_infra_reason(
|
|
1592
1629
|
ci: "CiStore", repo: str, number: int, failed: "list[CheckRun]"
|
|
1593
1630
|
) -> str | None:
|
|
@@ -3820,21 +3857,36 @@ def _entry_gate_status(
|
|
|
3820
3857
|
# `process()`'s own live reading.
|
|
3821
3858
|
unreadable_reason = _ci_unreadable_reason(failed)
|
|
3822
3859
|
if unreadable_reason is not None:
|
|
3823
|
-
|
|
3824
|
-
|
|
3825
|
-
|
|
3826
|
-
|
|
3827
|
-
|
|
3828
|
-
|
|
3829
|
-
|
|
3830
|
-
|
|
3831
|
-
|
|
3832
|
-
|
|
3833
|
-
|
|
3834
|
-
|
|
3835
|
-
|
|
3836
|
-
|
|
3837
|
-
|
|
3860
|
+
# #2380: a fetch failure this uniform (EVERY failing check is
|
|
3861
|
+
# the synthetic unreadable stand-in) is ALSO exactly what a
|
|
3862
|
+
# DIRTY/CONFLICTING PR produces — see
|
|
3863
|
+
# :func:`_pr_reports_conflicting`'s docstring. Same "don't
|
|
3864
|
+
# block, mirror `process()`, let the real conflict surface"
|
|
3865
|
+
# response as the #1877 checks-absent case immediately above
|
|
3866
|
+
# — deliberately NOT falling into the `pending`/staleness
|
|
3867
|
+
# checks below, which assume (per `_ci_checks_are_stale`'s
|
|
3868
|
+
# own docstring) a *non-empty, no-failed-entries* check list;
|
|
3869
|
+
# this one is neither.
|
|
3870
|
+
if not _pr_reports_conflicting(
|
|
3871
|
+
gh_ops, entry.repo_github, entry.pr_number
|
|
3872
|
+
):
|
|
3873
|
+
return PLAN_BLOCKED, unreadable_reason
|
|
3874
|
+
else:
|
|
3875
|
+
summary = ", ".join(f"{c.name} ({c.conclusion})" for c in failed)
|
|
3876
|
+
return PLAN_BLOCKED, f"CI failed: {summary}"
|
|
3877
|
+
else:
|
|
3878
|
+
pending = in_flight_checks(checks)
|
|
3879
|
+
if pending:
|
|
3880
|
+
summary = ", ".join(c.name for c in pending)
|
|
3881
|
+
return PLAN_BLOCKED, f"{CI_PENDING_PREFIX} {summary}"
|
|
3882
|
+
if checks and _ci_checks_are_stale(
|
|
3883
|
+
checks, gh_ops, entry.repo_github, entry.target_branch, smoke
|
|
3884
|
+
):
|
|
3885
|
+
return (
|
|
3886
|
+
PLAN_BLOCKED,
|
|
3887
|
+
f"{CI_STALE_PREFIX} checks predate the current base — "
|
|
3888
|
+
"re-run CI (`coord merge --revalidate`) before merging",
|
|
3889
|
+
)
|
|
3838
3890
|
if gh_ops is not None and entry.pr_number:
|
|
3839
3891
|
try:
|
|
3840
3892
|
commit_messages = gh_ops.get_pr_commit_messages(
|
|
@@ -5176,6 +5228,25 @@ def process(
|
|
|
5176
5228
|
# checked first, mirroring the live path's
|
|
5177
5229
|
# ordering — see `_ci_unreadable_reason`.
|
|
5178
5230
|
unreadable_reason = _ci_unreadable_reason(failed)
|
|
5231
|
+
# #2380: mirror the real path's straight-to-
|
|
5232
|
+
# conflict routing — see the identical check a
|
|
5233
|
+
# few lines above (#1877) and the live path's own
|
|
5234
|
+
# `_pr_reports_conflicting` branch. Preview-only:
|
|
5235
|
+
# never mutates `entry.state`, same as every
|
|
5236
|
+
# other branch in this dry-run block.
|
|
5237
|
+
if unreadable_reason is not None and _pr_reports_conflicting(
|
|
5238
|
+
gh_ops, entry.repo_github, entry.pr_number
|
|
5239
|
+
):
|
|
5240
|
+
events.append(MergeEvent(
|
|
5241
|
+
entry, "conflict",
|
|
5242
|
+
f"(dry run) {entry.branch} conflicts "
|
|
5243
|
+
f"with {entry.target_branch} and its CI "
|
|
5244
|
+
"check-list fetch fails for the same "
|
|
5245
|
+
"reason — a real run would route to the "
|
|
5246
|
+
"#241 conflict-fix path rather than park "
|
|
5247
|
+
"on an unreadable CI retry (#2380)",
|
|
5248
|
+
))
|
|
5249
|
+
continue
|
|
5179
5250
|
infra_reason = None if unreadable_reason else _ci_infra_reason(
|
|
5180
5251
|
ci, entry.repo_github, entry.pr_number, failed
|
|
5181
5252
|
)
|
|
@@ -5528,6 +5599,39 @@ def process(
|
|
|
5528
5599
|
# to evaluate unconditionally, every time.
|
|
5529
5600
|
unreadable_reason = _ci_unreadable_reason(failed)
|
|
5530
5601
|
if unreadable_reason is not None:
|
|
5602
|
+
# #2380: a check-list fetch failure this uniform
|
|
5603
|
+
# (EVERY failing check is the synthetic unreadable
|
|
5604
|
+
# stand-in) is ALSO exactly what GitHub reports for a
|
|
5605
|
+
# DIRTY/CONFLICTING PR — it can never build a merge
|
|
5606
|
+
# ref, so `gh pr checks` has nothing to read either.
|
|
5607
|
+
# `_pr_reports_conflicting` tells the two apart the
|
|
5608
|
+
# same way the #1877 checks-absent branch above does:
|
|
5609
|
+
# GitHub's own `mergeable` field, definitive and
|
|
5610
|
+
# always computable, conflict or not. When it reads
|
|
5611
|
+
# CONFLICTING, retrying the CI read can never
|
|
5612
|
+
# succeed — route STRAIGHT to the same `conflict`
|
|
5613
|
+
# event / `_dispatch_conflict_fixes` path a readable
|
|
5614
|
+
# CONFLICT merge-queue status already triggers
|
|
5615
|
+
# (#1474/#241), instead of parking behind a read that
|
|
5616
|
+
# will never resolve.
|
|
5617
|
+
if _pr_reports_conflicting(
|
|
5618
|
+
gh_ops, entry.repo_github, entry.pr_number
|
|
5619
|
+
):
|
|
5620
|
+
msg = (
|
|
5621
|
+
f"merge conflict: GitHub reports PR "
|
|
5622
|
+
f"#{entry.pr_number} ({entry.branch}) as "
|
|
5623
|
+
f"CONFLICTING against {entry.target_branch} "
|
|
5624
|
+
"— no CI ever ran because GitHub cannot "
|
|
5625
|
+
"build a merge ref for a conflicting PR, so "
|
|
5626
|
+
"the check-list fetch failure was never a "
|
|
5627
|
+
"transient GitHub outage (#2380). Rebase "
|
|
5628
|
+
f"the branch onto {entry.target_branch} and "
|
|
5629
|
+
"resolve."
|
|
5630
|
+
)
|
|
5631
|
+
entry.state = CONFLICT
|
|
5632
|
+
entry.error = msg
|
|
5633
|
+
events.append(MergeEvent(entry, "conflict", msg))
|
|
5634
|
+
continue # #292: skip, don't halt the group
|
|
5531
5635
|
if entry.ci_unreadable_reruns < MAX_CI_UNREADABLE_RERUNS:
|
|
5532
5636
|
entry.ci_unreadable_reruns += 1
|
|
5533
5637
|
_log.info(
|
|
@@ -1242,6 +1242,28 @@ def _reassign(
|
|
|
1242
1242
|
repo_path = machine.repo_path(failed.repo_name)
|
|
1243
1243
|
|
|
1244
1244
|
retry_model = model if model is not None else failed.model
|
|
1245
|
+
# #2383: `failed.model` can name a model an operator has since REMOVED
|
|
1246
|
+
# from `models.escalation` (e.g. a run auto-escalated onto it before the
|
|
1247
|
+
# ladder was edited) — inheriting it here forever, on every subsequent
|
|
1248
|
+
# auto-reassign of the same lineage, would silently keep dispatching a
|
|
1249
|
+
# model the current config no longer sanctions. Only the inherited
|
|
1250
|
+
# (`model is None`) path needs this: an explicit caller-supplied `model`
|
|
1251
|
+
# is a deliberate choice and passes through unclamped. And only a
|
|
1252
|
+
# CLAUDE-family retry needs it — `models.escalation` is a claude-only
|
|
1253
|
+
# concept (#2323's "the claude escalation ladder means nothing to
|
|
1254
|
+
# another provider"), so an opencode/other-provider model like
|
|
1255
|
+
# `opencode/glm-5.2` must never be walked onto the claude ladder just
|
|
1256
|
+
# because it doesn't happen to appear on it.
|
|
1257
|
+
if (
|
|
1258
|
+
model is None
|
|
1259
|
+
and resolved_provider_name == "claude"
|
|
1260
|
+
and retry_model not in (*config.models.escalation, config.models.default)
|
|
1261
|
+
):
|
|
1262
|
+
retry_model = (
|
|
1263
|
+
config.models.escalation[-1]
|
|
1264
|
+
if config.models.escalation
|
|
1265
|
+
else config.models.default
|
|
1266
|
+
)
|
|
1245
1267
|
# The Assignment keeps the alias for legibility; the wire payload is
|
|
1246
1268
|
# resolved through models.versions when an exact id is pinned.
|
|
1247
1269
|
retry_model_wire = config.models.resolve(retry_model)
|
|
@@ -1724,17 +1724,29 @@ def live_ci_backend(monkeypatch):
|
|
|
1724
1724
|
"""Fake the live `ci_store`/`github_ops` seam #2182's re-check calls.
|
|
1725
1725
|
|
|
1726
1726
|
Patches `coord.ci_store.build_ci_store` (what constructs the live
|
|
1727
|
-
backend) and the
|
|
1727
|
+
backend) and the three `coord.github_ops` functions the CI gate reaches
|
|
1728
1728
|
for once the checks themselves resolve (`get_branch_commit_timestamp`
|
|
1729
1729
|
for the #1851 staleness check, `get_pr_commit_messages` for the #1318
|
|
1730
|
-
epic-closing-keyword gate
|
|
1731
|
-
|
|
1732
|
-
`
|
|
1730
|
+
epic-closing-keyword gate, and `check_pr_mergeable` for the #1877 /
|
|
1731
|
+
#2380 "is this PR actually CONFLICTING?" disambiguation) — the same
|
|
1732
|
+
seams `tests/test_board_read_path.py` fakes for the equivalent
|
|
1733
|
+
`/board`-side gate. Returns a setter, `live_ci_backend(checks,
|
|
1734
|
+
mergeable=...)`.
|
|
1735
|
+
|
|
1736
|
+
`mergeable` defaults to `None` — GitHub's own "still computing /
|
|
1737
|
+
unknown" verdict, which every gate treats as inconclusive, so the
|
|
1738
|
+
default leaves the pre-#2380 reading of every scenario here untouched.
|
|
1739
|
+
Pass `mergeable=False` for the #2380 case (a DIRTY/CONFLICTING PR,
|
|
1740
|
+
whose `gh pr checks` fetch fails because GitHub can never build a merge
|
|
1741
|
+
ref for it). Faking it matters beyond convenience: `launches`
|
|
1742
|
+
monkeypatches `subprocess.run` process-wide, so an unfaked probe would
|
|
1743
|
+
(a) really shell out to `gh` from a unit test and (b) land in
|
|
1744
|
+
`launches` as a phantom extra "launch".
|
|
1733
1745
|
"""
|
|
1734
1746
|
import coord.ci_store as ci_store_module
|
|
1735
1747
|
import coord.github_ops as github_ops
|
|
1736
1748
|
|
|
1737
|
-
state: dict = {"checks": []}
|
|
1749
|
+
state: dict = {"checks": [], "mergeable": None}
|
|
1738
1750
|
monkeypatch.setattr(
|
|
1739
1751
|
ci_store_module, "build_ci_store", lambda t: _FakeLiveCi(state)
|
|
1740
1752
|
)
|
|
@@ -1744,9 +1756,13 @@ def live_ci_backend(monkeypatch):
|
|
|
1744
1756
|
github_ops, "get_branch_commit_timestamp", lambda repo, branch: 1.0
|
|
1745
1757
|
)
|
|
1746
1758
|
monkeypatch.setattr(github_ops, "get_pr_commit_messages", lambda repo, n: [])
|
|
1759
|
+
monkeypatch.setattr(
|
|
1760
|
+
github_ops, "check_pr_mergeable", lambda repo, n: state["mergeable"]
|
|
1761
|
+
)
|
|
1747
1762
|
|
|
1748
|
-
def _set(checks: list) -> None:
|
|
1763
|
+
def _set(checks: list, *, mergeable: bool | None = None) -> None:
|
|
1749
1764
|
state["checks"] = checks
|
|
1765
|
+
state["mergeable"] = mergeable
|
|
1750
1766
|
|
|
1751
1767
|
return _set
|
|
1752
1768
|
|
|
@@ -1885,6 +1901,40 @@ def test_a_parked_entrys_reason_is_corrected_when_github_is_unreachable(
|
|
|
1885
1901
|
assert queued(2159)["state"] == "running"
|
|
1886
1902
|
|
|
1887
1903
|
|
|
1904
|
+
def test_a_parked_entry_whose_pr_is_confirmed_conflicting_stops_waiting_on_ci(
|
|
1905
|
+
cli_no_gates, seed, launches, coord_db, live_ci_backend,
|
|
1906
|
+
):
|
|
1907
|
+
"""#2380 at the drive-queue tick: the SAME unreadable check list as the
|
|
1908
|
+
#2347 test above, but GitHub's `mergeable` field reads CONFLICTING.
|
|
1909
|
+
|
|
1910
|
+
That combination is not a transient outage and never becomes readable
|
|
1911
|
+
on its own — GitHub cannot build a merge ref for a conflicting PR, so
|
|
1912
|
+
`gh pr checks` has nothing to read, forever. Parking on "retry the CI
|
|
1913
|
+
read" therefore wedges the entry until the 45-minute ceiling, every
|
|
1914
|
+
ceiling, with zero forward progress (the live incident: claude-
|
|
1915
|
+
coordinator#2375 / PR #2379 parked 6x). The live re-check must stop
|
|
1916
|
+
treating it as still-blocked-on-CI and let the entry move again, so the
|
|
1917
|
+
merge path can route it to the #241 conflict-fix dispatch.
|
|
1918
|
+
"""
|
|
1919
|
+
_park_with_pr(cli_no_gates, seed, coord_db)
|
|
1920
|
+
assert queued(2159)["state"] == "parked"
|
|
1921
|
+
assert len(launches) == 1, launches
|
|
1922
|
+
|
|
1923
|
+
from coord.ci_github import _unreadable_check
|
|
1924
|
+
live_ci_backend(
|
|
1925
|
+
[_unreadable_check(REPO, 2159, "HTTP 503: No server is currently available")],
|
|
1926
|
+
mergeable=False,
|
|
1927
|
+
)
|
|
1928
|
+
|
|
1929
|
+
result = cli_no_gates("tick")
|
|
1930
|
+
assert result.exit_code == 0, result.output
|
|
1931
|
+
entry = queued(2159)
|
|
1932
|
+
assert entry["state"] != "parked", entry # no longer wedged on a dead read
|
|
1933
|
+
from coord.merge_queue import is_ci_unreadable_reason
|
|
1934
|
+
assert not is_ci_unreadable_reason(entry["last_reason"] or ""), entry
|
|
1935
|
+
assert "parked" not in cli_no_gates("status").output
|
|
1936
|
+
|
|
1937
|
+
|
|
1888
1938
|
def test_a_live_ready_wins_even_over_a_stale_cached_plan_reading(
|
|
1889
1939
|
cli_no_gates, seed, launches, coord_db, live_ci_backend, board_merge_plan,
|
|
1890
1940
|
):
|
|
@@ -5515,6 +5515,69 @@ class TestPlan:
|
|
|
5515
5515
|
assert not mq.is_ci_unreadable_reason(plan[0].reason)
|
|
5516
5516
|
assert "CI failed" in (plan[0].reason or "")
|
|
5517
5517
|
|
|
5518
|
+
def test_ready_when_conflicted_and_checks_unreadable(self, coord_db) -> None:
|
|
5519
|
+
"""#2380: a DIRTY/CONFLICTING PR's `gh pr checks` fetch can itself
|
|
5520
|
+
fail (GitHub can't build a merge ref to run anything against), which
|
|
5521
|
+
reads identically to a transient GitHub-unreachable blip —
|
|
5522
|
+
CI_UNREADABLE_PREFIX. Confirmed via `check_pr_mergeable` reading
|
|
5523
|
+
CONFLICTING, this must NOT block on "retry the read" (which can
|
|
5524
|
+
never succeed for a conflicting PR) — mirror the #1877 checks-absent
|
|
5525
|
+
fall-through immediately above so `coord merge` reaches the real
|
|
5526
|
+
merge attempt and routes to the #241 conflict-fix path."""
|
|
5527
|
+
from types import SimpleNamespace
|
|
5528
|
+
|
|
5529
|
+
class FakeCi:
|
|
5530
|
+
is_available = True
|
|
5531
|
+
def list_checks_for_pr(self, repo, number):
|
|
5532
|
+
return [SimpleNamespace(
|
|
5533
|
+
name="coord: could not read CI status for acme/api#99 "
|
|
5534
|
+
"(HTTP 503: No server is currently available)",
|
|
5535
|
+
status="completed", conclusion="unknown",
|
|
5536
|
+
)]
|
|
5537
|
+
|
|
5538
|
+
items = [_q("w1", size=50, pr=99)]
|
|
5539
|
+
save_queue(items)
|
|
5540
|
+
board = self._board(completed=[
|
|
5541
|
+
self._work("w1", test_state="passed"),
|
|
5542
|
+
self._review("w1", verdict="approve"),
|
|
5543
|
+
])
|
|
5544
|
+
cfg = self._config()
|
|
5545
|
+
gh = FakeGh(mergeable_results={99: False})
|
|
5546
|
+
plan = mq.plan(board, cfg, ci_store=FakeCi(), gh_ops=gh)
|
|
5547
|
+
assert plan[0].status == mq.PLAN_READY
|
|
5548
|
+
assert plan[0].reason is None
|
|
5549
|
+
assert ("acme/api", 99) in gh.mergeable_calls
|
|
5550
|
+
|
|
5551
|
+
def test_blocked_ci_unreadable_stays_blocked_when_not_confirmed_conflicted(
|
|
5552
|
+
self, coord_db
|
|
5553
|
+
) -> None:
|
|
5554
|
+
"""#2380 companion (acceptance criterion): an UNKNOWN mergeability
|
|
5555
|
+
read (still computing, or no probe at all) must keep today's
|
|
5556
|
+
CI_UNREADABLE_PREFIX park — this is additive, not a general
|
|
5557
|
+
loosening of the CI-unreadable path."""
|
|
5558
|
+
from types import SimpleNamespace
|
|
5559
|
+
|
|
5560
|
+
class FakeCi:
|
|
5561
|
+
is_available = True
|
|
5562
|
+
def list_checks_for_pr(self, repo, number):
|
|
5563
|
+
return [SimpleNamespace(
|
|
5564
|
+
name="coord: could not read CI status for acme/api#99 "
|
|
5565
|
+
"(HTTP 503: No server is currently available)",
|
|
5566
|
+
status="completed", conclusion="unknown",
|
|
5567
|
+
)]
|
|
5568
|
+
|
|
5569
|
+
cfg = self._config()
|
|
5570
|
+
board = self._board(completed=[
|
|
5571
|
+
self._work("w1", test_state="passed"),
|
|
5572
|
+
self._review("w1", verdict="approve"),
|
|
5573
|
+
])
|
|
5574
|
+
|
|
5575
|
+
for gh_ops in (FakeGh(mergeable_results={99: True}), FakeGh(mergeable_results={99: None}), None):
|
|
5576
|
+
save_queue([_q("w1", size=50, pr=99)])
|
|
5577
|
+
plan = mq.plan(board, cfg, ci_store=FakeCi(), gh_ops=gh_ops)
|
|
5578
|
+
assert plan[0].status == mq.PLAN_BLOCKED
|
|
5579
|
+
assert mq.is_ci_unreadable_reason(plan[0].reason)
|
|
5580
|
+
|
|
5518
5581
|
def test_blocked_ci_absent_when_repo_declares_ci(self, coord_db) -> None:
|
|
5519
5582
|
"""#1904: an empty check list for a repo that declares CI must show
|
|
5520
5583
|
BLOCKED with a `checks_absent`-style reason — not READY, the
|
|
@@ -6516,6 +6579,83 @@ class TestProcessConflictedEmptyChecks:
|
|
|
6516
6579
|
assert items[0].state == PENDING
|
|
6517
6580
|
|
|
6518
6581
|
|
|
6582
|
+
class TestProcessConflictedUnreadableChecks:
|
|
6583
|
+
"""#2380: a DIRTY/CONFLICTING PR whose `gh pr checks` FETCH itself fails
|
|
6584
|
+
(GitHub can't build a merge ref, so `gh pr checks` has nothing to read)
|
|
6585
|
+
reads identically to a transient GitHub-unreachable blip —
|
|
6586
|
+
CI_UNREADABLE_PREFIX. Before this fix that parked forever behind
|
|
6587
|
+
`checks_unreadable`'s "retry the read" logic: no amount of retrying
|
|
6588
|
+
reads GitHub cannot ever answer differently, so the park never resolved
|
|
6589
|
+
(the live incident behind this issue, claude-coordinator#2375 / PR
|
|
6590
|
+
#2379, parked 6x with zero forward progress). `process()` must consult
|
|
6591
|
+
`check_pr_mergeable` — same probe, same fail-closed contract as #1877's
|
|
6592
|
+
sibling checks-absent fix — and, for a CONFIRMED conflict only, route
|
|
6593
|
+
STRAIGHT to the `conflict` event / #241 conflict-fix dispatch instead of
|
|
6594
|
+
parking behind a read that can never succeed."""
|
|
6595
|
+
|
|
6596
|
+
@staticmethod
|
|
6597
|
+
def _ci_unreadable():
|
|
6598
|
+
from types import SimpleNamespace
|
|
6599
|
+
|
|
6600
|
+
class _Ci:
|
|
6601
|
+
is_available = True
|
|
6602
|
+
def list_checks_for_pr(self, repo, number):
|
|
6603
|
+
return [SimpleNamespace(
|
|
6604
|
+
name="coord: could not read CI status for acme/api#99 "
|
|
6605
|
+
"(HTTP 503: No server is currently available)",
|
|
6606
|
+
status="completed", conclusion="unknown",
|
|
6607
|
+
)]
|
|
6608
|
+
return _Ci()
|
|
6609
|
+
|
|
6610
|
+
def test_confirmed_conflict_routes_directly_to_conflict_event(self) -> None:
|
|
6611
|
+
items = [_q("w1", pr=99)]
|
|
6612
|
+
gh = FakeGh(mergeable_results={99: False})
|
|
6613
|
+
events = process(items, gh, ci_store=self._ci_unreadable())
|
|
6614
|
+
|
|
6615
|
+
assert gh.mergeable_calls == [("acme/api", 99)]
|
|
6616
|
+
# Unlike #1877's empty-checks case, this routes DIRECTLY to a
|
|
6617
|
+
# conflict event/state — there is no real `gh pr merge` attempt to
|
|
6618
|
+
# fall through to, because the CI gate never reaches the merge
|
|
6619
|
+
# section for a non-empty (if unreadable) check list.
|
|
6620
|
+
assert gh.merge_calls == [], "no live merge attempt needed for this route"
|
|
6621
|
+
kinds = [e.kind for e in events]
|
|
6622
|
+
assert "conflict" in kinds
|
|
6623
|
+
assert "checks_unreadable" not in kinds
|
|
6624
|
+
assert items[0].state == CONFLICT
|
|
6625
|
+
# Routes through the SAME classifier #241 already uses — this fix
|
|
6626
|
+
# only changes reachability, not the classify-and-dispatch machinery.
|
|
6627
|
+
assert mq.classify_conflict(items[0].error) == "rebaseable"
|
|
6628
|
+
|
|
6629
|
+
def test_unknown_mergeability_keeps_parking_as_checks_unreadable(self) -> None:
|
|
6630
|
+
"""Acceptance criterion: a genuinely UNKNOWN mergeability read
|
|
6631
|
+
(still computing, no probe available, or the probe errored) must
|
|
6632
|
+
keep today's park-and-wait behavior unchanged — this is additive,
|
|
6633
|
+
not a general loosening of the CI-unreadable path."""
|
|
6634
|
+
for verdict in (True, None):
|
|
6635
|
+
items = [_q("w1", pr=99)]
|
|
6636
|
+
gh = FakeGh(mergeable_results={99: verdict})
|
|
6637
|
+
events = process(items, gh, ci_store=self._ci_unreadable())
|
|
6638
|
+
|
|
6639
|
+
assert gh.merge_calls == [], verdict
|
|
6640
|
+
kinds = [e.kind for e in events]
|
|
6641
|
+
assert "checks_unreadable" in kinds, verdict
|
|
6642
|
+
assert "conflict" not in kinds, verdict
|
|
6643
|
+
assert items[0].state == PENDING, verdict
|
|
6644
|
+
assert mq.is_ci_unreadable_reason(items[0].error), verdict
|
|
6645
|
+
|
|
6646
|
+
def test_dry_run_previews_conflict_route_without_merging(self) -> None:
|
|
6647
|
+
items = [_q("w1", pr=99)]
|
|
6648
|
+
gh = FakeGh(mergeable_results={99: False})
|
|
6649
|
+
events = process(items, gh, ci_store=self._ci_unreadable(), dry_run=True)
|
|
6650
|
+
|
|
6651
|
+
assert gh.merge_calls == []
|
|
6652
|
+
kinds = [e.kind for e in events]
|
|
6653
|
+
assert "conflict" in kinds
|
|
6654
|
+
assert "checks_failed" not in kinds
|
|
6655
|
+
assert "merged" not in kinds
|
|
6656
|
+
assert items[0].state == PENDING
|
|
6657
|
+
|
|
6658
|
+
|
|
6519
6659
|
class TestCiInfraReason:
|
|
6520
6660
|
"""#1892: `_ci_infra_reason` — the classification helper, isolated from
|
|
6521
6661
|
`process()`'s I/O. `getattr(ci, "list_jobs_for_run", None)` is the
|
|
@@ -262,6 +262,64 @@ class TestReassignThreadsProvider:
|
|
|
262
262
|
payload = mock_post.call_args.kwargs["json"]
|
|
263
263
|
assert "provider" not in payload
|
|
264
264
|
|
|
265
|
+
@patch("coord.reconcile.httpx.post")
|
|
266
|
+
def test_a_model_dropped_from_the_ladder_is_not_inherited_forever(
|
|
267
|
+
self, mock_post: MagicMock,
|
|
268
|
+
) -> None:
|
|
269
|
+
"""#2383: `failed.model` names a model an operator has since
|
|
270
|
+
removed from `models.escalation` — the auto-reassign call site
|
|
271
|
+
never passes `model=` explicitly (reconcile.py's `newly_failed`
|
|
272
|
+
loop), so without a clamp this would be inherited on EVERY future
|
|
273
|
+
retry of the same lineage, forever, regardless of what the current
|
|
274
|
+
ladder says."""
|
|
275
|
+
resp = MagicMock()
|
|
276
|
+
resp.json.return_value = {"id": "newid"}
|
|
277
|
+
mock_post.return_value = resp
|
|
278
|
+
cfg = Config(
|
|
279
|
+
repos=[Repo(name="api", github="acme/api")],
|
|
280
|
+
machines=[
|
|
281
|
+
Machine(name="laptop", host="l", repos=["api"], repo_paths={"api": "/tmp"}),
|
|
282
|
+
Machine(name="server", host="s", repos=["api"], repo_paths={"api": "/tmp"}),
|
|
283
|
+
],
|
|
284
|
+
)
|
|
285
|
+
assert "fable" not in cfg.models.escalation # sanity: not on the ladder
|
|
286
|
+
board = Board()
|
|
287
|
+
failed = _failed(model="fable")
|
|
288
|
+
|
|
289
|
+
result = _reassign(failed, board, cfg)
|
|
290
|
+
|
|
291
|
+
assert result is not None
|
|
292
|
+
payload = mock_post.call_args.kwargs["json"]
|
|
293
|
+
assert payload["model"] != "claude-fable-5"
|
|
294
|
+
assert payload["model"] == cfg.models.resolve(cfg.models.escalation[-1])
|
|
295
|
+
|
|
296
|
+
@patch("coord.reconcile.httpx.post")
|
|
297
|
+
def test_an_explicit_model_override_is_never_clamped(
|
|
298
|
+
self, mock_post: MagicMock,
|
|
299
|
+
) -> None:
|
|
300
|
+
"""The clamp is scoped to the INHERITED (`model=None`) path only —
|
|
301
|
+
a caller that explicitly asks for a specific model (e.g. #1291's
|
|
302
|
+
semantic-conflict escalation) must get exactly that model, even one
|
|
303
|
+
off the ordinary ladder."""
|
|
304
|
+
resp = MagicMock()
|
|
305
|
+
resp.json.return_value = {"id": "newid"}
|
|
306
|
+
mock_post.return_value = resp
|
|
307
|
+
cfg = Config(
|
|
308
|
+
repos=[Repo(name="api", github="acme/api")],
|
|
309
|
+
machines=[
|
|
310
|
+
Machine(name="laptop", host="l", repos=["api"], repo_paths={"api": "/tmp"}),
|
|
311
|
+
Machine(name="server", host="s", repos=["api"], repo_paths={"api": "/tmp"}),
|
|
312
|
+
],
|
|
313
|
+
)
|
|
314
|
+
board = Board()
|
|
315
|
+
failed = _failed(model="sonnet")
|
|
316
|
+
|
|
317
|
+
result = _reassign(failed, board, cfg, model="opus")
|
|
318
|
+
|
|
319
|
+
assert result is not None
|
|
320
|
+
payload = mock_post.call_args.kwargs["json"]
|
|
321
|
+
assert payload["model"] == cfg.models.resolve("opus")
|
|
322
|
+
|
|
265
323
|
|
|
266
324
|
# ── #1711: the provider-availability gate, applied to retry routing ────────
|
|
267
325
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_coordinator-0.5.141 → code_coordinator-0.5.143}/code_coordinator.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.141 → code_coordinator-0.5.143}/code_coordinator.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.141 → code_coordinator-0.5.143}/code_coordinator.egg-info/requires.txt
RENAMED
|
File without changes
|
{code_coordinator-0.5.141 → code_coordinator-0.5.143}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
File without changes
|
{code_coordinator-0.5.141 → code_coordinator-0.5.143}/code_coordinator.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|