code-coordinator 0.5.106__tar.gz → 0.5.107__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.107}/PKG-INFO +1 -1
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/auto_loop.py +133 -13
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notify.py +24 -2
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_auto_loop.py +184 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_stalled_pipeline.py +162 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.gitignore +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/CLAUDE.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/GOAL.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/LICENSE +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/MANIFEST.in +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/README.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/SOURCES.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/scm_file_list.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/agent.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/audit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/block_log.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/board_service.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/brain.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/claim.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/cli.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/client.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/issues.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/setup.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/comments.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/config.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dao.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/assets/Gallery-Cq84itDE.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/assets/Terminal-DOXLcMue.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/assets/index-DHn-RIJ8.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/db.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deps.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/drive.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/events.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/filelock.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/freshness.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/gates.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/goal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/context.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/models.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/render.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/units.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/hooks.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/interactive.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/models.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/network.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/openapi.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/parentage.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/plans.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/progress.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/release_window.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/reports.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/review.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/smoke.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/split_work.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/test_author.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/test_report.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/usage.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/AGENT_OPERATIONS.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/ARCHITECTURE.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/DRIVE_QUEUE.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/OPERATING_GOTCHAS.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/install-agent.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/pyproject.toml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/setup.cfg +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/__init__.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/conftest.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_config.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_db.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_events.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_init.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_models.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_network.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_session.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_split.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_state.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/events.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/fixtures.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/mod.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/render.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/tests.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -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
|
)
|
|
@@ -958,6 +958,61 @@ class TestBuildFixBriefingTestAuthor:
|
|
|
958
958
|
assert "ensure all tests pass" in briefing.lower()
|
|
959
959
|
|
|
960
960
|
|
|
961
|
+
class TestBuildFixBriefingMockAuthor:
|
|
962
|
+
"""#2302: a type="mock-author" source row (Gate A) gets its own
|
|
963
|
+
fix-briefing variant instead of the generic "implement + make tests
|
|
964
|
+
pass" briefing — the diff is a specification (contract.md + rendered
|
|
965
|
+
mocks), there is no suite to run, and the diff must stay confined to
|
|
966
|
+
tests/acceptance/ms-NN/."""
|
|
967
|
+
|
|
968
|
+
def test_contains_reviewer_findings(self) -> None:
|
|
969
|
+
work = _work_assignment(type="mock-author")
|
|
970
|
+
findings = _request_changes_findings()
|
|
971
|
+
briefing = _build_fix_briefing(work, findings, iteration=1, max_iter=3)
|
|
972
|
+
assert "Missing test coverage for edge case X" in briefing
|
|
973
|
+
|
|
974
|
+
def test_does_not_instruct_making_tests_pass(self) -> None:
|
|
975
|
+
"""The generic fix briefing's "ensure all tests pass" is wrong
|
|
976
|
+
guidance for a specification diff with no suite behind it — must
|
|
977
|
+
not leak into the mock-author variant."""
|
|
978
|
+
work = _work_assignment(type="mock-author")
|
|
979
|
+
findings = _request_changes_findings()
|
|
980
|
+
briefing = _build_fix_briefing(work, findings, iteration=1, max_iter=3)
|
|
981
|
+
assert "ensure all tests pass" not in briefing.lower()
|
|
982
|
+
assert "make them pass" not in briefing.lower()
|
|
983
|
+
|
|
984
|
+
def test_instructs_confining_diff_to_acceptance_dir(self) -> None:
|
|
985
|
+
work = _work_assignment(type="mock-author")
|
|
986
|
+
findings = _request_changes_findings()
|
|
987
|
+
briefing = _build_fix_briefing(work, findings, iteration=1, max_iter=3)
|
|
988
|
+
assert "tests/acceptance/ms-nn" in briefing.lower()
|
|
989
|
+
assert "request-changes" in briefing.lower()
|
|
990
|
+
|
|
991
|
+
def test_instructs_contract_and_mocks_agree_both_ways(self) -> None:
|
|
992
|
+
work = _work_assignment(type="mock-author")
|
|
993
|
+
findings = _request_changes_findings()
|
|
994
|
+
briefing = _build_fix_briefing(work, findings, iteration=1, max_iter=3)
|
|
995
|
+
assert "both directions" in briefing.lower()
|
|
996
|
+
|
|
997
|
+
def test_contains_branch_name(self) -> None:
|
|
998
|
+
work = _work_assignment(type="mock-author", branch="ms-65-gate-a")
|
|
999
|
+
findings = _request_changes_findings()
|
|
1000
|
+
briefing = _build_fix_briefing(work, findings, iteration=1, max_iter=3)
|
|
1001
|
+
assert "ms-65-gate-a" in briefing
|
|
1002
|
+
|
|
1003
|
+
def test_contains_do_not_change_branch_instruction(self) -> None:
|
|
1004
|
+
work = _work_assignment(type="mock-author")
|
|
1005
|
+
findings = _request_changes_findings()
|
|
1006
|
+
briefing = _build_fix_briefing(work, findings, iteration=1, max_iter=3)
|
|
1007
|
+
assert "do not change the branch name" in briefing.lower()
|
|
1008
|
+
|
|
1009
|
+
def test_contains_original_briefing(self) -> None:
|
|
1010
|
+
work = _work_assignment(type="mock-author")
|
|
1011
|
+
findings = _request_changes_findings()
|
|
1012
|
+
briefing = _build_fix_briefing(work, findings, iteration=1, max_iter=3)
|
|
1013
|
+
assert "Original briefing text." in briefing
|
|
1014
|
+
|
|
1015
|
+
|
|
961
1016
|
# ── Unit tests: _fix_model_for_iteration ─────────────────────────────────────
|
|
962
1017
|
|
|
963
1018
|
|
|
@@ -2424,6 +2479,87 @@ class TestDispatchFixTestAuthorType:
|
|
|
2424
2479
|
assert "deny_commands" not in payload
|
|
2425
2480
|
|
|
2426
2481
|
|
|
2482
|
+
# ── #2302: mock-author bounce gets a type="mock-author" fix, not "work" ─────
|
|
2483
|
+
|
|
2484
|
+
|
|
2485
|
+
class TestDispatchFixMockAuthorType:
|
|
2486
|
+
"""A review bounce of a type="mock-author" (Gate A) row must dispatch a
|
|
2487
|
+
type="mock-author" fix, not a plain type="work" fix — `coord/review.py`
|
|
2488
|
+
only inverts the sealed-path tamper rule for
|
|
2489
|
+
`coord.models.SEALED_PATH_AUTHOR_TYPES`, so a "work"-typed fix confined
|
|
2490
|
+
to `tests/acceptance/ms-NN/**` trips "TAMPER DETECTED" on every round."""
|
|
2491
|
+
|
|
2492
|
+
def _dispatch(
|
|
2493
|
+
self, config: Config, *, work_type: str, for_issue_number: int | None = None
|
|
2494
|
+
) -> tuple[dict, Assignment]:
|
|
2495
|
+
work = _work_assignment(
|
|
2496
|
+
assignment_id="ma-work-1",
|
|
2497
|
+
branch="ms-65-gate-a",
|
|
2498
|
+
type=work_type,
|
|
2499
|
+
for_issue_number=for_issue_number,
|
|
2500
|
+
)
|
|
2501
|
+
board = Board(completed=[work])
|
|
2502
|
+
mock_http = MagicMock()
|
|
2503
|
+
mock_http.post.return_value.json.return_value = {"id": "fix-ma-1"}
|
|
2504
|
+
mock_http.post.return_value.raise_for_status = MagicMock()
|
|
2505
|
+
|
|
2506
|
+
with patch("coord.auto_loop.record_dispatched_assignment"):
|
|
2507
|
+
result = _dispatch_fix(
|
|
2508
|
+
work, "Fix briefing.", board, config, iteration=1,
|
|
2509
|
+
http_client=mock_http,
|
|
2510
|
+
)
|
|
2511
|
+
|
|
2512
|
+
assert result is not None
|
|
2513
|
+
sent_payload = mock_http.post.call_args.kwargs["json"]
|
|
2514
|
+
return sent_payload, result
|
|
2515
|
+
|
|
2516
|
+
def test_payload_type_is_mock_author(self, config: Config) -> None:
|
|
2517
|
+
payload, _ = self._dispatch(config, work_type="mock-author")
|
|
2518
|
+
assert payload["type"] == "mock-author"
|
|
2519
|
+
|
|
2520
|
+
def test_assignment_type_is_mock_author(self, config: Config) -> None:
|
|
2521
|
+
_, fix = self._dispatch(config, work_type="mock-author")
|
|
2522
|
+
assert fix.type == "mock-author"
|
|
2523
|
+
|
|
2524
|
+
def test_files_forbidden_does_not_block_acceptance_path(
|
|
2525
|
+
self, config: Config
|
|
2526
|
+
) -> None:
|
|
2527
|
+
"""The source mock-author row carries files_forbidden=[] — confirm
|
|
2528
|
+
the fix dispatch doesn't add tests/acceptance/ to it."""
|
|
2529
|
+
payload, _ = self._dispatch(config, work_type="mock-author")
|
|
2530
|
+
assert not any(
|
|
2531
|
+
"tests/acceptance" in f for f in payload["files_forbidden"]
|
|
2532
|
+
)
|
|
2533
|
+
|
|
2534
|
+
def test_for_issue_number_carried_over(self, config: Config) -> None:
|
|
2535
|
+
_, fix = self._dispatch(config, work_type="mock-author", for_issue_number=65)
|
|
2536
|
+
assert fix.for_issue_number == 65
|
|
2537
|
+
|
|
2538
|
+
def test_work_type_bounce_is_unchanged(self, config: Config) -> None:
|
|
2539
|
+
"""Regression guard: a type="work" bounce still gets a plain "work"
|
|
2540
|
+
fix — untouched by the mock-author addition."""
|
|
2541
|
+
payload, fix = self._dispatch(config, work_type="work")
|
|
2542
|
+
assert payload["type"] == "work"
|
|
2543
|
+
assert fix.type == "work"
|
|
2544
|
+
|
|
2545
|
+
|
|
2546
|
+
class TestFixDispatchTypesIncludesMockAuthor:
|
|
2547
|
+
"""#2302: FIX_DISPATCH_TYPES must include every type `_dispatch_fix` can
|
|
2548
|
+
actually emit — this is the same drift class as #1141
|
|
2549
|
+
("test-author was never added to WORK_LIKE_TYPES")."""
|
|
2550
|
+
|
|
2551
|
+
def test_mock_author_is_a_member(self) -> None:
|
|
2552
|
+
from coord.auto_loop import FIX_DISPATCH_TYPES
|
|
2553
|
+
|
|
2554
|
+
assert "mock-author" in FIX_DISPATCH_TYPES
|
|
2555
|
+
|
|
2556
|
+
def test_all_sealed_path_author_types_are_members(self) -> None:
|
|
2557
|
+
from coord.auto_loop import FIX_DISPATCH_TYPES
|
|
2558
|
+
from coord.models import SEALED_PATH_AUTHOR_TYPES
|
|
2559
|
+
|
|
2560
|
+
assert SEALED_PATH_AUTHOR_TYPES <= FIX_DISPATCH_TYPES
|
|
2561
|
+
|
|
2562
|
+
|
|
2427
2563
|
class TestProcessReviewCompletionTestAuthorType:
|
|
2428
2564
|
"""End-to-end: a `coord bounce` (via process_review_completion) of a
|
|
2429
2565
|
request-changes review on a type="test-author" work row dispatches a
|
|
@@ -2468,3 +2604,51 @@ class TestProcessReviewCompletionTestAuthorType:
|
|
|
2468
2604
|
assert "Dead monkeypatch.setattr" in sent_payload["briefing"]
|
|
2469
2605
|
assert "Fragile assertion" in sent_payload["briefing"]
|
|
2470
2606
|
assert "ensure all tests pass" not in sent_payload["briefing"].lower()
|
|
2607
|
+
|
|
2608
|
+
|
|
2609
|
+
class TestProcessReviewCompletionMockAuthorType:
|
|
2610
|
+
"""End-to-end: a `coord bounce` (via process_review_completion) of a
|
|
2611
|
+
request-changes review on a type="mock-author" (Gate A) work row
|
|
2612
|
+
dispatches a type="mock-author" fix carrying the reviewer's findings —
|
|
2613
|
+
the #2289 shape this issue exists to fix."""
|
|
2614
|
+
|
|
2615
|
+
def test_full_cycle_dispatches_mock_author_fix(
|
|
2616
|
+
self, config: Config, tmp_path
|
|
2617
|
+
) -> None:
|
|
2618
|
+
log_file = tmp_path / "review.log"
|
|
2619
|
+
log_file.write_text(
|
|
2620
|
+
"REVIEW_VERDICT: request-changes\n"
|
|
2621
|
+
"REVIEW_BODY:\n"
|
|
2622
|
+
"- Mock depicts a state the contract's own rules can't reach\n"
|
|
2623
|
+
"- Contract names a field the mocks never render\n"
|
|
2624
|
+
"END_REVIEW\n"
|
|
2625
|
+
)
|
|
2626
|
+
work = _work_assignment(
|
|
2627
|
+
assignment_id="ma-work-2",
|
|
2628
|
+
branch="ms-65-gate-a",
|
|
2629
|
+
type="mock-author",
|
|
2630
|
+
)
|
|
2631
|
+
review = _review_assignment(assignment_id="ma-review-2", review_of="ma-work-2")
|
|
2632
|
+
board = _board_with(work, review)
|
|
2633
|
+
|
|
2634
|
+
mock_http = MagicMock()
|
|
2635
|
+
mock_http.post.return_value.json.return_value = {"id": "fix-ma-2"}
|
|
2636
|
+
mock_http.post.return_value.raise_for_status = MagicMock()
|
|
2637
|
+
|
|
2638
|
+
with patch("coord.auto_loop.record_dispatched_assignment"):
|
|
2639
|
+
actions = process_review_completion(
|
|
2640
|
+
review, board, config,
|
|
2641
|
+
log_path=str(log_file),
|
|
2642
|
+
http_client=mock_http,
|
|
2643
|
+
)
|
|
2644
|
+
|
|
2645
|
+
assert any(a.kind == "fix_dispatched" for a in actions)
|
|
2646
|
+
sent_payload = mock_http.post.call_args.kwargs["json"]
|
|
2647
|
+
fix = board.active[0]
|
|
2648
|
+
|
|
2649
|
+
assert sent_payload["type"] == "mock-author"
|
|
2650
|
+
assert fix.type == "mock-author"
|
|
2651
|
+
assert "Mock depicts a state" in sent_payload["briefing"]
|
|
2652
|
+
assert "Contract names a field" in sent_payload["briefing"]
|
|
2653
|
+
assert "ensure all tests pass" not in sent_payload["briefing"].lower()
|
|
2654
|
+
assert "make them pass" not in sent_payload["briefing"].lower()
|
|
@@ -16,6 +16,7 @@ dispatch/kill/handoff, idempotent via the shared `notified` ledger.
|
|
|
16
16
|
|
|
17
17
|
from __future__ import annotations
|
|
18
18
|
|
|
19
|
+
from dataclasses import replace
|
|
19
20
|
from unittest.mock import MagicMock, patch
|
|
20
21
|
|
|
21
22
|
import pytest
|
|
@@ -149,6 +150,14 @@ def _board(*assignments: Assignment) -> Board:
|
|
|
149
150
|
return Board(active=active, completed=completed)
|
|
150
151
|
|
|
151
152
|
|
|
153
|
+
def _mock_author_work(aid: str = "ma-work-1", **kwargs) -> Assignment:
|
|
154
|
+
"""#2302: a `type="mock-author"` (Gate A) head row — same shape as
|
|
155
|
+
`_work()` but typed as a SEALED_PATH_AUTHOR_TYPES member so the
|
|
156
|
+
`dispatch_stalled_pipeline_action` flag-bypass tests below can build a
|
|
157
|
+
board around one without duplicating `_work`'s field list."""
|
|
158
|
+
return replace(_work(aid, **kwargs), type="mock-author", branch="ms-65-gate-a")
|
|
159
|
+
|
|
160
|
+
|
|
152
161
|
# ── Reference fixture: vimcode #602 ──────────────────────────────────────────
|
|
153
162
|
|
|
154
163
|
|
|
@@ -1416,6 +1425,159 @@ class TestDispatchPerReason:
|
|
|
1416
1425
|
stub.assert_called_once()
|
|
1417
1426
|
|
|
1418
1427
|
|
|
1428
|
+
# ── #2302: sealed-author rows bypass the auto_dispatch_stalled flag ─────────
|
|
1429
|
+
#
|
|
1430
|
+
# `pipeline.auto_dispatch_stalled` bounds blast radius on rows another loop
|
|
1431
|
+
# already owns (`coord drive`'s request-changes -> fix arm for `work` rows,
|
|
1432
|
+
# #1692). A `test-author`/`mock-author` row has no such owner — `coord
|
|
1433
|
+
# drive` explicitly `_die()`s on those and Gate A is dispatched standalone
|
|
1434
|
+
# with no drive run over it at all (#2289) — so THIS one reason+type
|
|
1435
|
+
# combination must dispatch regardless of the flag. `work` rows under the
|
|
1436
|
+
# same reason keep the opt-in gate unchanged.
|
|
1437
|
+
|
|
1438
|
+
|
|
1439
|
+
class TestDispatchSealedAuthorBypassesFlag:
|
|
1440
|
+
def test_mock_author_stall_dispatches_with_flag_off(
|
|
1441
|
+
self, config: Config, monkeypatch
|
|
1442
|
+
) -> None:
|
|
1443
|
+
assert config.pipeline.auto_dispatch_stalled is False
|
|
1444
|
+
board = _board(
|
|
1445
|
+
_mock_author_work("ma-work-1", test_state="passed"),
|
|
1446
|
+
_review("ma-work-1", aid="ma-review-1", review_verdict="request-changes"),
|
|
1447
|
+
)
|
|
1448
|
+
detection, work = notify_mod.detect_stalled_pipeline(
|
|
1449
|
+
config, board=board, merge_queue_items=[]
|
|
1450
|
+
)[0]
|
|
1451
|
+
assert detection.reason == "review_request_changes_no_fix"
|
|
1452
|
+
assert work.type == "mock-author"
|
|
1453
|
+
|
|
1454
|
+
stub = MagicMock(return_value=[
|
|
1455
|
+
LoopAction(
|
|
1456
|
+
kind="fix_dispatched", assignment_id="ma-review-1",
|
|
1457
|
+
detail="fix worker fix-9 dispatched to mac-mini (iteration 1/5)",
|
|
1458
|
+
),
|
|
1459
|
+
])
|
|
1460
|
+
monkeypatch.setattr("coord.auto_loop.process_review_completion", stub)
|
|
1461
|
+
|
|
1462
|
+
action = notify_mod.dispatch_stalled_pipeline_action(detection, work, board, config)
|
|
1463
|
+
|
|
1464
|
+
assert action.kind == "fix_dispatch_attempted"
|
|
1465
|
+
stub.assert_called_once()
|
|
1466
|
+
|
|
1467
|
+
def test_test_author_stall_dispatches_with_flag_off(
|
|
1468
|
+
self, config: Config, monkeypatch
|
|
1469
|
+
) -> None:
|
|
1470
|
+
"""The scope is BOTH sealed-author types — test-author has the
|
|
1471
|
+
identical hole (`coord/drive.py` `_die()`s on it too)."""
|
|
1472
|
+
assert config.pipeline.auto_dispatch_stalled is False
|
|
1473
|
+
board = _board(
|
|
1474
|
+
replace(_mock_author_work("ta-work-1", test_state="passed"), type="test-author"),
|
|
1475
|
+
_review("ta-work-1", aid="ta-review-1", review_verdict="request-changes"),
|
|
1476
|
+
)
|
|
1477
|
+
detection, work = notify_mod.detect_stalled_pipeline(
|
|
1478
|
+
config, board=board, merge_queue_items=[]
|
|
1479
|
+
)[0]
|
|
1480
|
+
assert detection.reason == "review_request_changes_no_fix"
|
|
1481
|
+
assert work.type == "test-author"
|
|
1482
|
+
|
|
1483
|
+
stub = MagicMock(return_value=[
|
|
1484
|
+
LoopAction(
|
|
1485
|
+
kind="fix_dispatched", assignment_id="ta-review-1",
|
|
1486
|
+
detail="fix worker fix-9 dispatched to mac-mini (iteration 1/5)",
|
|
1487
|
+
),
|
|
1488
|
+
])
|
|
1489
|
+
monkeypatch.setattr("coord.auto_loop.process_review_completion", stub)
|
|
1490
|
+
|
|
1491
|
+
action = notify_mod.dispatch_stalled_pipeline_action(detection, work, board, config)
|
|
1492
|
+
|
|
1493
|
+
assert action.kind == "fix_dispatch_attempted"
|
|
1494
|
+
stub.assert_called_once()
|
|
1495
|
+
|
|
1496
|
+
def test_work_stall_still_disabled_with_flag_off(
|
|
1497
|
+
self, config: Config, monkeypatch
|
|
1498
|
+
) -> None:
|
|
1499
|
+
"""Regression guard: a plain `work` row under the identical reason
|
|
1500
|
+
stays gated behind the flag — `coord drive` owns that row and a
|
|
1501
|
+
second dispatcher racing it would duplicate/clobber its fix."""
|
|
1502
|
+
assert config.pipeline.auto_dispatch_stalled is False
|
|
1503
|
+
board = _board(
|
|
1504
|
+
_work("work-1", test_state="passed"),
|
|
1505
|
+
_review("work-1", aid="review-1", review_verdict="request-changes"),
|
|
1506
|
+
)
|
|
1507
|
+
detection, work = notify_mod.detect_stalled_pipeline(
|
|
1508
|
+
config, board=board, merge_queue_items=[]
|
|
1509
|
+
)[0]
|
|
1510
|
+
assert detection.reason == "review_request_changes_no_fix"
|
|
1511
|
+
assert work.type == "work"
|
|
1512
|
+
|
|
1513
|
+
stub = MagicMock()
|
|
1514
|
+
monkeypatch.setattr("coord.auto_loop.process_review_completion", stub)
|
|
1515
|
+
|
|
1516
|
+
action = notify_mod.dispatch_stalled_pipeline_action(detection, work, board, config)
|
|
1517
|
+
|
|
1518
|
+
assert action.kind == "disabled"
|
|
1519
|
+
stub.assert_not_called()
|
|
1520
|
+
|
|
1521
|
+
def test_mock_author_stall_still_respects_live_session_guard(
|
|
1522
|
+
self, config: Config, monkeypatch
|
|
1523
|
+
) -> None:
|
|
1524
|
+
"""The flag bypass must not skip the #602 live-session guard — an
|
|
1525
|
+
interactive session on the same (repo, issue) still wins."""
|
|
1526
|
+
assert config.pipeline.auto_dispatch_stalled is False
|
|
1527
|
+
work = _mock_author_work("ma-work-2", test_state="passed")
|
|
1528
|
+
review = _review("ma-work-2", aid="ma-review-2", review_verdict="request-changes")
|
|
1529
|
+
live_session = Assignment(
|
|
1530
|
+
machine_name="mac-mini", repo_name="vimcode", issue_number=602,
|
|
1531
|
+
issue_title="interactive smoke", assignment_id="smoke-live",
|
|
1532
|
+
status="running", type="smoke",
|
|
1533
|
+
)
|
|
1534
|
+
board = Board(active=[live_session], completed=[work, review])
|
|
1535
|
+
|
|
1536
|
+
detection, work_row = notify_mod.detect_stalled_pipeline(
|
|
1537
|
+
config, board=board, merge_queue_items=[]
|
|
1538
|
+
)[0]
|
|
1539
|
+
assert detection.reason == "review_request_changes_no_fix"
|
|
1540
|
+
|
|
1541
|
+
stub = MagicMock()
|
|
1542
|
+
monkeypatch.setattr("coord.auto_loop.process_review_completion", stub)
|
|
1543
|
+
|
|
1544
|
+
action = notify_mod.dispatch_stalled_pipeline_action(
|
|
1545
|
+
detection, work_row, board, config
|
|
1546
|
+
)
|
|
1547
|
+
|
|
1548
|
+
assert action.kind == "skipped_live_session"
|
|
1549
|
+
stub.assert_not_called()
|
|
1550
|
+
|
|
1551
|
+
def test_mock_author_stall_still_respects_iteration_cap(
|
|
1552
|
+
self, config: Config, monkeypatch
|
|
1553
|
+
) -> None:
|
|
1554
|
+
"""The flag bypass must not skip `process_review_completion`'s own
|
|
1555
|
+
`max_review_iterations` cap — a `max_iterations` resolution stays
|
|
1556
|
+
`no_action`, not a dispatch."""
|
|
1557
|
+
assert config.pipeline.auto_dispatch_stalled is False
|
|
1558
|
+
board = _board(
|
|
1559
|
+
_mock_author_work("ma-work-3", test_state="passed"),
|
|
1560
|
+
_review("ma-work-3", aid="ma-review-3", review_verdict="request-changes"),
|
|
1561
|
+
)
|
|
1562
|
+
detection, work = notify_mod.detect_stalled_pipeline(
|
|
1563
|
+
config, board=board, merge_queue_items=[]
|
|
1564
|
+
)[0]
|
|
1565
|
+
|
|
1566
|
+
stub = MagicMock(return_value=[
|
|
1567
|
+
LoopAction(
|
|
1568
|
+
kind="max_iterations", assignment_id="ma-review-3",
|
|
1569
|
+
detail="max_review_iterations=5 reached",
|
|
1570
|
+
),
|
|
1571
|
+
])
|
|
1572
|
+
monkeypatch.setattr("coord.auto_loop.process_review_completion", stub)
|
|
1573
|
+
|
|
1574
|
+
action = notify_mod.dispatch_stalled_pipeline_action(detection, work, board, config)
|
|
1575
|
+
|
|
1576
|
+
assert action.kind == "no_action"
|
|
1577
|
+
assert action.kind not in notify_mod._STALLED_DISPATCH_KINDS
|
|
1578
|
+
stub.assert_called_once()
|
|
1579
|
+
|
|
1580
|
+
|
|
1419
1581
|
class TestLiveSessionGuard:
|
|
1420
1582
|
def test_dispatch_skipped_when_live_session_active(
|
|
1421
1583
|
self, config: Config, monkeypatch
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|