code-coordinator 0.5.106__tar.gz → 0.5.108__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.106 → code_coordinator-0.5.108}/PKG-INFO +1 -1
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/agent.py +42 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/auto_loop.py +133 -13
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notify.py +24 -2
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/providers/claude.py +12 -1
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/providers/claude_pty.py +14 -1
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/smoke.py +18 -7
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent.py +58 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_auto_loop.py +184 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_providers.py +46 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_providers_pty.py +46 -1
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_smoke.py +39 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_stalled_pipeline.py +162 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_worker_test_scoping.py +18 -3
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.gitignore +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/CLAUDE.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/GOAL.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/LICENSE +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/MANIFEST.in +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/README.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/audit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/block_log.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/board_service.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/brain.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/claim.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/cli.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/client.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/comments.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/config.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dao.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/assets/Gallery-Cq84itDE.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/assets/Terminal-DOXLcMue.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/assets/index-DHn-RIJ8.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/db.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deps.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/drive.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/events.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/filelock.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/freshness.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/gates.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/goal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/context.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/models.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/render.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/units.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/hooks.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/interactive.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/models.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/network.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/openapi.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/parentage.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/plans.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/progress.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/release_window.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/reports.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/review.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/split_work.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/test_author.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/test_report.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/usage.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/install-agent.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/pyproject.toml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/setup.cfg +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/conftest.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_config.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_db.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_events.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_init.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_models.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_network.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_session.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_split.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -3850,6 +3850,12 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
|
|
|
3850
3850
|
For ``type="plan"`` specs the worker gets :data:`WORKER_PLAN_PROMPT` as
|
|
3851
3851
|
its system prompt and only ``Read,Bash`` in ``--allowedTools`` — no
|
|
3852
3852
|
Edit/Write tools so it cannot modify the repository.
|
|
3853
|
+
|
|
3854
|
+
For ``type="smoke"`` specs the worker gets ``Read,Bash`` only — no
|
|
3855
|
+
Edit/Write, and deliberately no ``Monitor`` (#2301): a smoke leg is a
|
|
3856
|
+
one-shot ``claude -p`` session, and ``Monitor`` ends the turn to await a
|
|
3857
|
+
notification that can never arrive in time to resume it, which silently
|
|
3858
|
+
kills a backgrounded smoke suite mid-run and leaves no verdict printed.
|
|
3853
3859
|
"""
|
|
3854
3860
|
if spec.type == "plan":
|
|
3855
3861
|
system_prompt = spec.system_prompt if spec.system_prompt else WORKER_PLAN_PROMPT
|
|
@@ -3907,6 +3913,33 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
|
|
|
3907
3913
|
system_prompt = spec.system_prompt if spec.system_prompt else MOCK_AUTHOR_SYSTEM_PROMPT
|
|
3908
3914
|
system_prompt += build_deny_prompt(MOCK_AUTHOR_DENY_COMMANDS)
|
|
3909
3915
|
allowed_tools = "Read,Edit,Write,Bash"
|
|
3916
|
+
elif spec.type == "smoke":
|
|
3917
|
+
# #2301: smoke gets its own branch instead of falling through to the
|
|
3918
|
+
# generic `else` below (which is where it used to land, and where
|
|
3919
|
+
# it inherited the #2169 `Monitor` grant meant for *work* legs).
|
|
3920
|
+
# A smoke runner's whole job is "pull the branch, run the smoke
|
|
3921
|
+
# command, report pass/fail" (see SMOKE_SYSTEM_PROMPT) — it edits
|
|
3922
|
+
# nothing and pushes nothing, so it has no business holding
|
|
3923
|
+
# Edit/Write either.
|
|
3924
|
+
#
|
|
3925
|
+
# `Monitor` is deliberately withheld: it is an await-a-notification
|
|
3926
|
+
# tool — calling it ends the current turn so the harness can wake
|
|
3927
|
+
# the model back up once the condition it's watching fires. That
|
|
3928
|
+
# only resumes anything in an INTERACTIVE session. A smoke leg is a
|
|
3929
|
+
# one-shot `claude -p` session like every coord leg (#1394): ending
|
|
3930
|
+
# the turn ends the session itself, permanently, before any
|
|
3931
|
+
# notification can arrive. The agent was observed reaching for
|
|
3932
|
+
# `Monitor` via ToolSearch to poll a backgrounded smoke suite, then
|
|
3933
|
+
# ending its turn to "wait" — the session (and the backgrounded
|
|
3934
|
+
# suite, reaped ~30s later) died silently with no verdict printed,
|
|
3935
|
+
# burning a Test dispatch for zero signal every single retry.
|
|
3936
|
+
# `BashOutput`/`TaskOutput` (already reachable without an explicit
|
|
3937
|
+
# grant — see the #2169 comment above) return synchronously and are
|
|
3938
|
+
# the correct way to poll a backgrounded task from here.
|
|
3939
|
+
from coord.smoke import SMOKE_SYSTEM_PROMPT # noqa: PLC0415
|
|
3940
|
+
system_prompt = spec.system_prompt if spec.system_prompt else SMOKE_SYSTEM_PROMPT
|
|
3941
|
+
system_prompt += build_deny_prompt(spec.deny_commands)
|
|
3942
|
+
allowed_tools = "Read,Bash"
|
|
3910
3943
|
else:
|
|
3911
3944
|
system_prompt = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
|
|
3912
3945
|
system_prompt += build_deny_prompt(spec.deny_commands)
|
|
@@ -3916,6 +3949,15 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
|
|
|
3916
3949
|
# past the 600s Bash ceiling. `TaskOutput`/`TaskStop` were already
|
|
3917
3950
|
# reachable without being in this list; `Monitor` was the one
|
|
3918
3951
|
# observed denied.
|
|
3952
|
+
#
|
|
3953
|
+
# #2301: this grant is for *work*-shaped legs (work/review/fix/
|
|
3954
|
+
# conflict-fix) whose system prompt (WORKER_SYSTEM_PROMPT, the
|
|
3955
|
+
# ONE-SHOT section) explicitly teaches the bounded-poll pattern and
|
|
3956
|
+
# explains why an await-a-notification tool is safe to reach for
|
|
3957
|
+
# ONLY with that guidance attached. `smoke` used to fall through to
|
|
3958
|
+
# this branch and inherit `Monitor` with none of that context — see
|
|
3959
|
+
# the dedicated `elif spec.type == "smoke"` branch above, which
|
|
3960
|
+
# deliberately withholds it instead.
|
|
3919
3961
|
allowed_tools = "Read,Edit,Write,Bash,Monitor"
|
|
3920
3962
|
|
|
3921
3963
|
# NOTE: briefing is NOT passed as a positional arg — it is written to
|
|
@@ -43,7 +43,7 @@ import httpx
|
|
|
43
43
|
from coord.config import Config
|
|
44
44
|
from coord.dispatch import AGENT_PORT
|
|
45
45
|
from coord import github_ops
|
|
46
|
-
from coord.models import Assignment, Board
|
|
46
|
+
from coord.models import SEALED_PATH_AUTHOR_TYPES, Assignment, Board
|
|
47
47
|
from coord.review import (
|
|
48
48
|
ReviewFindings,
|
|
49
49
|
blocking_findings_confirmed_absent,
|
|
@@ -64,7 +64,16 @@ log = logging.getLogger(__name__)
|
|
|
64
64
|
# ``coord.notify``'s fix-completion detector doesn't hardcode ``"work"`` and
|
|
65
65
|
# silently miss a newer fix-dispatch type — the same class of bug as #1141
|
|
66
66
|
# ("test-author was never added to WORK_LIKE_TYPES").
|
|
67
|
-
|
|
67
|
+
#
|
|
68
|
+
# #2302: "mock-author" (Gate A) is the same class of bug repeating — a
|
|
69
|
+
# request-changes fix for a mock-author row dispatched as plain "work",
|
|
70
|
+
# which trips coord/review.py's sealed-path tamper rule on every round
|
|
71
|
+
# (the fix worker isn't authorized to write tests/acceptance/ms-NN/, but
|
|
72
|
+
# that's exactly where the diff has to land) until max_review_iterations
|
|
73
|
+
# burns out. `_dispatch_fix` derives `fix_type` from
|
|
74
|
+
# ``coord.models.SEALED_PATH_AUTHOR_TYPES`` rather than a hardcoded string
|
|
75
|
+
# so this set — and this one — never drift from it again.
|
|
76
|
+
FIX_DISPATCH_TYPES: frozenset[str] = frozenset({"work"}) | SEALED_PATH_AUTHOR_TYPES
|
|
68
77
|
|
|
69
78
|
|
|
70
79
|
# Every :class:`LoopAction` kind whose production means the in-memory board was
|
|
@@ -816,9 +825,16 @@ def _build_fix_briefing(
|
|
|
816
825
|
instructions instead — "make the acceptance suite pass" is actively
|
|
817
826
|
wrong guidance for an oracle that must stay RED until the real
|
|
818
827
|
implementation lands.
|
|
828
|
+
|
|
829
|
+
#2302: a ``type="mock-author"`` source row (Gate A) gets its own
|
|
830
|
+
variant for the same reason one level up the pipeline — the diff is a
|
|
831
|
+
specification (``contract.md`` + rendered mocks), not an
|
|
832
|
+
implementation, so "run tests, make them pass" is equally wrong there.
|
|
819
833
|
"""
|
|
820
834
|
if work.type == "test-author":
|
|
821
835
|
return _build_test_author_fix_briefing(work, findings, iteration, max_iter)
|
|
836
|
+
if work.type == "mock-author":
|
|
837
|
+
return _build_mock_author_fix_briefing(work, findings, iteration, max_iter)
|
|
822
838
|
|
|
823
839
|
lines: list[str] = [
|
|
824
840
|
f"# Fix assignment (iteration {iteration}/{max_iter}): {work.issue_title}",
|
|
@@ -929,6 +945,93 @@ def _build_test_author_fix_briefing(
|
|
|
929
945
|
return "\n".join(lines)
|
|
930
946
|
|
|
931
947
|
|
|
948
|
+
def _build_mock_author_fix_briefing(
|
|
949
|
+
work: Assignment,
|
|
950
|
+
findings,
|
|
951
|
+
iteration: int,
|
|
952
|
+
max_iter: int,
|
|
953
|
+
) -> str:
|
|
954
|
+
"""Fix briefing for a ``type="mock-author"`` slice (#2302, Gate A).
|
|
955
|
+
|
|
956
|
+
The diff here is a SPECIFICATION — ``contract.md`` plus rendered
|
|
957
|
+
``tests/acceptance/ms-NN/mocks/*`` — not an implementation. There is no
|
|
958
|
+
suite to run, so "run the tests and make them pass" (the generic fix
|
|
959
|
+
instruction) is actively wrong guidance, the same shape #1176 already
|
|
960
|
+
fixed for ``test-author``. Findings on a Gate A review are almost
|
|
961
|
+
always an internal-consistency defect: a mock depicting an end state
|
|
962
|
+
that the contract's own stated rules cannot produce from the narrated
|
|
963
|
+
input sequence — so the contract and the mocks must be reconciled to
|
|
964
|
+
agree with each other in BOTH directions, not just patched locally.
|
|
965
|
+
The dispatcher pairs this briefing with a bare ``type="mock-author"``
|
|
966
|
+
dispatch (see ``_dispatch_fix``) — ``agent.py``'s own
|
|
967
|
+
``elif spec.type == "mock-author"`` branch supplies
|
|
968
|
+
``MOCK_AUTHOR_SYSTEM_PROMPT`` and its deny-list on its own, so no
|
|
969
|
+
explicit ``system_prompt``/``deny_commands`` injection is needed here
|
|
970
|
+
the way ``test-author`` (which has no such branch) requires.
|
|
971
|
+
"""
|
|
972
|
+
lines: list[str] = [
|
|
973
|
+
f"# Gate A fix (iteration {iteration}/{max_iter}): {work.issue_title}",
|
|
974
|
+
"",
|
|
975
|
+
(
|
|
976
|
+
f"You are the independent mock-author fixing review findings "
|
|
977
|
+
f"against the Gate A contract and mocks for issue "
|
|
978
|
+
f"#{work.issue_number}."
|
|
979
|
+
),
|
|
980
|
+
(
|
|
981
|
+
f"Work on branch `{work.branch or '(check your git branches)'}` — "
|
|
982
|
+
"**do not change the branch name**."
|
|
983
|
+
),
|
|
984
|
+
"",
|
|
985
|
+
"## Reviewer findings to address",
|
|
986
|
+
"",
|
|
987
|
+
findings.body.strip(),
|
|
988
|
+
"",
|
|
989
|
+
"## Instructions",
|
|
990
|
+
"",
|
|
991
|
+
(
|
|
992
|
+
"1. Read the reviewer findings above carefully. Your diff is a "
|
|
993
|
+
"SPECIFICATION (`contract.md` + rendered `mocks/*`), not an "
|
|
994
|
+
"implementation — there is no suite to run and nothing to make "
|
|
995
|
+
"pass. Findings on a Gate A review are almost always an "
|
|
996
|
+
"internal-consistency defect: a mock depicting an end state "
|
|
997
|
+
"that the contract's own stated rules cannot produce from the "
|
|
998
|
+
"narrated input sequence."
|
|
999
|
+
),
|
|
1000
|
+
(
|
|
1001
|
+
"2. Fix **every** issue identified by the reviewer so the "
|
|
1002
|
+
"contract and the mocks agree with each other in BOTH "
|
|
1003
|
+
"directions — every rule the contract states must be reachable "
|
|
1004
|
+
"from the mocks' narrated sequence, and every state the mocks "
|
|
1005
|
+
"depict must be producible by the contract's stated rules."
|
|
1006
|
+
),
|
|
1007
|
+
"3. Stay on the **same branch** — push your fixes to the existing branch.",
|
|
1008
|
+
(
|
|
1009
|
+
"4. Do NOT touch any file outside `tests/acceptance/ms-NN/`. "
|
|
1010
|
+
"Touching anything outside that directory is a mandatory "
|
|
1011
|
+
"`request-changes` for this assignment type — you are pinning "
|
|
1012
|
+
"the milestone's contract, not implementing it."
|
|
1013
|
+
),
|
|
1014
|
+
(
|
|
1015
|
+
f"5. This is fix iteration {iteration} of {max_iter} allowed. "
|
|
1016
|
+
"Address all findings completely so the next review can approve."
|
|
1017
|
+
),
|
|
1018
|
+
"",
|
|
1019
|
+
(
|
|
1020
|
+
"STATUS: reading review findings → reconciling contract and mocks "
|
|
1021
|
+
"→ confidence: high"
|
|
1022
|
+
),
|
|
1023
|
+
"",
|
|
1024
|
+
]
|
|
1025
|
+
if work.briefing and work.briefing.strip():
|
|
1026
|
+
lines += [
|
|
1027
|
+
"## Original mock-author briefing",
|
|
1028
|
+
"",
|
|
1029
|
+
work.briefing.strip(),
|
|
1030
|
+
"",
|
|
1031
|
+
]
|
|
1032
|
+
return "\n".join(lines)
|
|
1033
|
+
|
|
1034
|
+
|
|
932
1035
|
def _dispatch_fix(
|
|
933
1036
|
work: Assignment,
|
|
934
1037
|
briefing: str,
|
|
@@ -945,11 +1048,18 @@ def _dispatch_fix(
|
|
|
945
1048
|
Prefers the same machine as the original worker (the branch is already
|
|
946
1049
|
checked out there). Falls back to any capable machine.
|
|
947
1050
|
|
|
948
|
-
#1176: the dispatched type mirrors ``work.type`` for
|
|
949
|
-
(
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
1051
|
+
#1176/#2302: the dispatched type mirrors ``work.type`` for any
|
|
1052
|
+
:data:`coord.models.SEALED_PATH_AUTHOR_TYPES` member (``"test-author"``,
|
|
1053
|
+
``"mock-author"``) — those types are the ones ``coord/review.py``
|
|
1054
|
+
inverts its sealed-path tamper rule for, so a fix that needs to write
|
|
1055
|
+
back into ``tests/acceptance/ms-NN/`` must carry the same type as the
|
|
1056
|
+
row it's fixing or every round trips "TAMPER DETECTED" until the
|
|
1057
|
+
iteration cap burns out. ``test-author`` additionally needs
|
|
1058
|
+
``TEST_AUTHOR_SYSTEM_PROMPT`` + its deny-list injected explicitly since
|
|
1059
|
+
``agent.py`` has no dispatch-table branch for it; ``mock-author``
|
|
1060
|
+
doesn't — ``agent.py``'s own ``elif spec.type == "mock-author"`` branch
|
|
1061
|
+
supplies its system prompt and deny-list unconditionally. Every other
|
|
1062
|
+
source type still gets the long-standing plain ``"work"`` fix.
|
|
953
1063
|
|
|
954
1064
|
Returns the new Assignment (already added to ``board.active``), or None
|
|
955
1065
|
on failure.
|
|
@@ -1016,12 +1126,16 @@ def _dispatch_fix(
|
|
|
1016
1126
|
if repo is None:
|
|
1017
1127
|
return None
|
|
1018
1128
|
|
|
1019
|
-
# #1176: preserve the source row's type for a
|
|
1020
|
-
# dispatching `type="work"`
|
|
1021
|
-
#
|
|
1022
|
-
# `tests/acceptance/**` path it
|
|
1023
|
-
#
|
|
1024
|
-
|
|
1129
|
+
# #1176/#2302: preserve the source row's type for a sealed-path-author
|
|
1130
|
+
# slice fix (test-author, mock-author) — dispatching `type="work"`
|
|
1131
|
+
# sends a plain worker that is forbidden from (and never given the
|
|
1132
|
+
# system prompt authorizing) exactly the `tests/acceptance/**` path it
|
|
1133
|
+
# needs to fix. Derived from SEALED_PATH_AUTHOR_TYPES rather than a
|
|
1134
|
+
# hardcoded string so this stays in sync with that set — see the
|
|
1135
|
+
# FIX_DISPATCH_TYPES comment above for the class of bug that guards
|
|
1136
|
+
# against. Every other source type (including today's "work") keeps
|
|
1137
|
+
# the long-standing "work" fix.
|
|
1138
|
+
fix_type = work.type if work.type in SEALED_PATH_AUTHOR_TYPES else "work"
|
|
1025
1139
|
|
|
1026
1140
|
payload = {
|
|
1027
1141
|
"repo_name": work.repo_name,
|
|
@@ -1054,6 +1168,12 @@ def _dispatch_fix(
|
|
|
1054
1168
|
# stay-RED rules a test-author session needs.
|
|
1055
1169
|
payload["system_prompt"] = TEST_AUTHOR_SYSTEM_PROMPT
|
|
1056
1170
|
payload["deny_commands"] = test_author_deny_commands(config, work.repo_name)
|
|
1171
|
+
# #2302: no analogous branch for `fix_type == "mock-author"` — unlike
|
|
1172
|
+
# test-author, `agent.py`'s `elif spec.type == "mock-author"` branch
|
|
1173
|
+
# already supplies `MOCK_AUTHOR_SYSTEM_PROMPT` and unconditionally
|
|
1174
|
+
# appends `MOCK_AUTHOR_DENY_COMMANDS` regardless of `spec.deny_commands`,
|
|
1175
|
+
# so injecting either here would be redundant with what the agent-side
|
|
1176
|
+
# dispatch table already does purely from `type="mock-author"`.
|
|
1057
1177
|
# Escalated model per bounce iteration (None when pipeline
|
|
1058
1178
|
# .escalate_fix_model is disabled — preserves today's no-model behaviour).
|
|
1059
1179
|
# The board record keeps the alias for legibility; the wire payload is
|
|
@@ -1053,7 +1053,13 @@ def dispatch_stalled_pipeline_action(
|
|
|
1053
1053
|
|
|
1054
1054
|
Gated by ``config.pipeline.auto_dispatch_stalled`` (default ``False`` —
|
|
1055
1055
|
detection/narration via :func:`post_stalled_pipeline` is unconditional;
|
|
1056
|
-
this is the opt-in action half)
|
|
1056
|
+
this is the opt-in action half) — EXCEPT for a ``review_request_changes_
|
|
1057
|
+
no_fix`` stall on a :data:`coord.models.SEALED_PATH_AUTHOR_TYPES` row
|
|
1058
|
+
(``test-author``/``mock-author``), which dispatches regardless of the
|
|
1059
|
+
flag: no loop owns that row (#2302), so the flag would only leave it
|
|
1060
|
+
stalled forever with no alternative dispatcher to race. ``work`` rows
|
|
1061
|
+
under the same reason keep the opt-in gate — ``coord drive`` owns those.
|
|
1062
|
+
Mutates *board* in place exactly like
|
|
1057
1063
|
the auto-loop / review-dispatch helpers it delegates to — the caller is
|
|
1058
1064
|
responsible for persisting it.
|
|
1059
1065
|
|
|
@@ -1096,7 +1102,23 @@ def dispatch_stalled_pipeline_action(
|
|
|
1096
1102
|
mirroring the one-shot comment (#1441's own guardrail, reused rather
|
|
1097
1103
|
than re-derived per #1478's own request).
|
|
1098
1104
|
"""
|
|
1099
|
-
|
|
1105
|
+
# #2302: `pipeline.auto_dispatch_stalled` exists to bound blast radius on
|
|
1106
|
+
# rows another loop already owns (`coord drive`'s request-changes → fix
|
|
1107
|
+
# arm for `work` rows, #1692) — a second dispatcher racing that loop
|
|
1108
|
+
# would duplicate or clobber its fix. A `request-changes` stall on a
|
|
1109
|
+
# SEALED_PATH_AUTHOR_TYPES row (`test-author`/`mock-author`, Gate A/JIT
|
|
1110
|
+
# acceptance slices) has no such owner: `coord drive` explicitly `_die()`s
|
|
1111
|
+
# on those, and `coord acceptance mock` dispatches Gate A standalone with
|
|
1112
|
+
# no drive run over it at all (see #2289). So this one reason+type
|
|
1113
|
+
# combination bypasses the flag — every other reason, and `work` rows
|
|
1114
|
+
# under this same reason, keep the opt-in gate unchanged.
|
|
1115
|
+
from coord.models import SEALED_PATH_AUTHOR_TYPES # noqa: PLC0415
|
|
1116
|
+
|
|
1117
|
+
sealed_author_stall = (
|
|
1118
|
+
detection.reason == "review_request_changes_no_fix"
|
|
1119
|
+
and work.type in SEALED_PATH_AUTHOR_TYPES
|
|
1120
|
+
)
|
|
1121
|
+
if not config.pipeline.auto_dispatch_stalled and not sealed_author_stall:
|
|
1100
1122
|
return StalledDispatchAction(
|
|
1101
1123
|
kind="disabled", detail="pipeline.auto_dispatch_stalled is False",
|
|
1102
1124
|
)
|
|
@@ -120,6 +120,7 @@ class ClaudeProvider(Provider):
|
|
|
120
120
|
_sealed_write_guard_tools,
|
|
121
121
|
build_deny_prompt,
|
|
122
122
|
)
|
|
123
|
+
from coord.smoke import SMOKE_SYSTEM_PROMPT # noqa: PLC0415
|
|
123
124
|
|
|
124
125
|
binary = self._binary if self._binary is not None else DEFAULT_WORKER_BINARY
|
|
125
126
|
|
|
@@ -170,12 +171,22 @@ class ClaudeProvider(Provider):
|
|
|
170
171
|
_sp = spec.system_prompt if spec.system_prompt else MOCK_AUTHOR_SYSTEM_PROMPT
|
|
171
172
|
_sp += build_deny_prompt(MOCK_AUTHOR_DENY_COMMANDS)
|
|
172
173
|
_at = "Read,Edit,Write,Bash"
|
|
174
|
+
elif spec.type == "smoke":
|
|
175
|
+
# #2301: keep in sync with default_worker_command's identical
|
|
176
|
+
# branch — smoke gets Read,Bash only, deliberately WITHOUT
|
|
177
|
+
# Monitor (an await-a-notification tool that ends a smoke
|
|
178
|
+
# leg's one-shot session before any wake-up can arrive) or
|
|
179
|
+
# Edit/Write (a smoke leg validates; it never mutates).
|
|
180
|
+
_sp = spec.system_prompt if spec.system_prompt else SMOKE_SYSTEM_PROMPT
|
|
181
|
+
_sp += build_deny_prompt(spec.deny_commands)
|
|
182
|
+
_at = "Read,Bash"
|
|
173
183
|
else:
|
|
174
184
|
_sp = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
|
|
175
185
|
_sp += build_deny_prompt(spec.deny_commands)
|
|
176
186
|
# #2169: keep in sync with default_worker_command's identical
|
|
177
187
|
# branch — Monitor is the sanctioned bounded-poll tool for a
|
|
178
|
-
# backgrounded long-running command.
|
|
188
|
+
# backgrounded long-running command. #2301: this grant is for
|
|
189
|
+
# work-shaped legs only — smoke has its own branch above.
|
|
179
190
|
_at = "Read,Edit,Write,Bash,Monitor"
|
|
180
191
|
|
|
181
192
|
if system_prompt is None:
|
|
@@ -485,13 +485,26 @@ class ClaudePtyProvider(Provider):
|
|
|
485
485
|
_sp = spec.system_prompt if spec.system_prompt else MILESTONE_CHAT_SYSTEM_PROMPT
|
|
486
486
|
_sp += build_deny_prompt(MILESTONE_CHAT_DENY_COMMANDS)
|
|
487
487
|
_at = "Read,Bash"
|
|
488
|
+
elif spec.type == "smoke":
|
|
489
|
+
# #2301: keep in sync with default_worker_command's and
|
|
490
|
+
# ClaudeProvider.build_command's identical branch — smoke
|
|
491
|
+
# gets SMOKE_SYSTEM_PROMPT and Read,Bash only, deliberately
|
|
492
|
+
# WITHOUT `Monitor` (an await-a-notification tool: calling it
|
|
493
|
+
# ends the turn, which ends a one-shot leg's session before
|
|
494
|
+
# any wake-up can arrive) and without Edit/Write (a smoke leg
|
|
495
|
+
# validates; it never mutates).
|
|
496
|
+
from coord.smoke import SMOKE_SYSTEM_PROMPT # noqa: PLC0415
|
|
497
|
+
_sp = spec.system_prompt if spec.system_prompt else SMOKE_SYSTEM_PROMPT
|
|
498
|
+
_sp += build_deny_prompt(spec.deny_commands)
|
|
499
|
+
_at = "Read,Bash"
|
|
488
500
|
else:
|
|
489
501
|
_sp = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
|
|
490
502
|
_sp += build_deny_prompt(spec.deny_commands)
|
|
491
503
|
# #2169: keep in sync with default_worker_command's and
|
|
492
504
|
# ClaudeProvider.build_command's identical branch — Monitor
|
|
493
505
|
# is the sanctioned bounded-poll tool for a backgrounded
|
|
494
|
-
# long-running command.
|
|
506
|
+
# long-running command. #2301: that grant is for *work*-shaped
|
|
507
|
+
# legs only — smoke has its own branch above.
|
|
495
508
|
_at = "Read,Edit,Write,Bash,Monitor"
|
|
496
509
|
|
|
497
510
|
if system_prompt is None:
|
|
@@ -111,13 +111,24 @@ suite off and stopping there prints no marker, so the Test stage records NO \
|
|
|
111
111
|
verdict and re-dispatches; because the ceiling is deterministic, every \
|
|
112
112
|
re-dispatch does exactly the same thing, which is why this loop bills \
|
|
113
113
|
indefinitely. Instead: POLL the backgrounded task to completion from THIS \
|
|
114
|
-
same session, in bounded steps
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
identical 600s wall.
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
114
|
+
same session, in bounded steps, with `BashOutput`/`TaskOutput` and the task \
|
|
115
|
+
id, and read its REAL exit status before you report anything. Do NOT use a \
|
|
116
|
+
foreground `until ! pgrep ...; do sleep ...; done` wait — it hits the \
|
|
117
|
+
identical 600s wall.
|
|
118
|
+
- NEVER USE `Monitor` OR ANY OTHER AWAIT-A-NOTIFICATION TOOL TO WAIT FOR A \
|
|
119
|
+
RESULT (#2301). Those tools work by ending your turn so the harness can wake \
|
|
120
|
+
the model back up once the condition they're watching fires — that only \
|
|
121
|
+
resumes anything in an INTERACTIVE session. This is a one-shot `claude -p` \
|
|
122
|
+
session: ending your turn ends the session itself, permanently, and no \
|
|
123
|
+
notification will ever arrive to resume it. The backgrounded suite you were \
|
|
124
|
+
polling is then reaped mid-run by the coordinator, and you have printed no \
|
|
125
|
+
verdict marker — exactly the silent failure the previous bullet exists to \
|
|
126
|
+
prevent, just reached by a different tool. Only `BashOutput`/`TaskOutput` \
|
|
127
|
+
return synchronously without ending your turn; those are the only \
|
|
128
|
+
correct way to poll a backgrounded task from here. If you genuinely cannot \
|
|
129
|
+
obtain an exit status before you run out of room, print `SMOKE: fail <the \
|
|
130
|
+
smoke command never returned an exit status within this session>` rather \
|
|
131
|
+
than ending mute: a stated verdict is recoverable, silence is not.
|
|
121
132
|
|
|
122
133
|
Where you are:
|
|
123
134
|
- You are in a dedicated git worktree created for this run. Every git command \
|
|
@@ -1134,6 +1134,64 @@ def test_default_worker_command_resume_flag_present() -> None:
|
|
|
1134
1134
|
assert argv[idx + 1] == "ses-abc123"
|
|
1135
1135
|
|
|
1136
1136
|
|
|
1137
|
+
# ── #2301: smoke legs must not hold Monitor (or Edit/Write) ────────────────
|
|
1138
|
+
#
|
|
1139
|
+
# Root cause: smoke fell through to the generic `else` branch and inherited
|
|
1140
|
+
# the #2169 `Monitor` grant meant for *work*-shaped legs. `Monitor` is an
|
|
1141
|
+
# await-a-notification tool — calling it ends the current turn to wait for a
|
|
1142
|
+
# wake-up condition, which only resumes anything in an INTERACTIVE session.
|
|
1143
|
+
# Every coord leg, smoke included, is a one-shot `claude -p` session (#1394):
|
|
1144
|
+
# ending the turn ends the session itself, permanently, before any
|
|
1145
|
+
# notification can arrive. Two real smoke legs did exactly this — reached
|
|
1146
|
+
# `Monitor` via ToolSearch to poll a backgrounded `cargo test`, ended their
|
|
1147
|
+
# turn to "wait" for it, and died 16-24s later with no verdict printed, while
|
|
1148
|
+
# the backgrounded suite was reaped out from under them ~30s after that.
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
def _smoke_spec(**overrides) -> AssignmentSpec:
|
|
1152
|
+
base = dict(
|
|
1153
|
+
repo_name="api",
|
|
1154
|
+
repo_path="/tmp/repo",
|
|
1155
|
+
issue_number=2301,
|
|
1156
|
+
issue_title="[smoke] t",
|
|
1157
|
+
briefing="b",
|
|
1158
|
+
branch="main",
|
|
1159
|
+
type="smoke",
|
|
1160
|
+
)
|
|
1161
|
+
base.update(overrides)
|
|
1162
|
+
return AssignmentSpec(**base)
|
|
1163
|
+
|
|
1164
|
+
|
|
1165
|
+
def test_default_worker_command_smoke_type_does_not_grant_monitor() -> None:
|
|
1166
|
+
argv = default_worker_command(_smoke_spec())
|
|
1167
|
+
allowed = argv[argv.index("--allowedTools") + 1].split(",")
|
|
1168
|
+
assert "Monitor" not in allowed
|
|
1169
|
+
|
|
1170
|
+
|
|
1171
|
+
def test_default_worker_command_smoke_type_gets_read_bash_only() -> None:
|
|
1172
|
+
"""A smoke leg validates; it never mutates — no Edit/Write either."""
|
|
1173
|
+
argv = default_worker_command(_smoke_spec())
|
|
1174
|
+
allowed = argv[argv.index("--allowedTools") + 1]
|
|
1175
|
+
assert allowed == "Read,Bash"
|
|
1176
|
+
|
|
1177
|
+
|
|
1178
|
+
def test_default_worker_command_smoke_type_uses_smoke_system_prompt() -> None:
|
|
1179
|
+
"""Confirms the smoke branch's default system prompt is
|
|
1180
|
+
coord.smoke.SMOKE_SYSTEM_PROMPT, not the generic WORKER_SYSTEM_PROMPT
|
|
1181
|
+
the old fall-through `else` branch would have used."""
|
|
1182
|
+
from coord.smoke import SMOKE_SYSTEM_PROMPT
|
|
1183
|
+
|
|
1184
|
+
argv = default_worker_command(_smoke_spec())
|
|
1185
|
+
system_prompt = argv[argv.index("--system-prompt") + 1]
|
|
1186
|
+
assert system_prompt.startswith(SMOKE_SYSTEM_PROMPT)
|
|
1187
|
+
|
|
1188
|
+
|
|
1189
|
+
def test_default_worker_command_smoke_type_honours_explicit_system_prompt() -> None:
|
|
1190
|
+
argv = default_worker_command(_smoke_spec(system_prompt="custom smoke prompt"))
|
|
1191
|
+
system_prompt = argv[argv.index("--system-prompt") + 1]
|
|
1192
|
+
assert system_prompt.startswith("custom smoke prompt")
|
|
1193
|
+
|
|
1194
|
+
|
|
1137
1195
|
# ── #1315: structural sealing enforcement (write-guard) ─────────────────────
|
|
1138
1196
|
|
|
1139
1197
|
|