code-coordinator 0.5.154__tar.gz → 0.5.156__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.154 → code_coordinator-0.5.156}/CLAUDE.md +8 -24
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/PKG-INFO +1 -1
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/code_coordinator.egg-info/SOURCES.txt +8 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/code_coordinator.egg-info/scm_file_list.json +8 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/agent.py +92 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/issues.py +3 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/setup.py +69 -41
- code_coordinator-0.5.156/coord/skills/coord-dispatch-verbs/SKILL.md +76 -0
- code_coordinator-0.5.156/coord/skills/drive-queue-preflight/SKILL.md +90 -0
- code_coordinator-0.5.156/coord/skills/fleet-restart-safety/SKILL.md +98 -0
- code_coordinator-0.5.156/coord/skills/merge-stuck-triage/SKILL.md +73 -0
- code_coordinator-0.5.156/coord/skills/pipeline-limbo-triage/SKILL.md +52 -0
- code_coordinator-0.5.156/coord/skills/review-verdict-recovery/SKILL.md +70 -0
- code_coordinator-0.5.156/coord/skills/tui-quadraui-workflow/SKILL.md +64 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/AGENT_OPERATIONS.md +25 -3
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/ARCHITECTURE.md +4 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/DRIVE_QUEUE.md +2 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/OPERATING_GOTCHAS.md +4 -0
- code_coordinator-0.5.156/tests/test_agent_skills_self_heal.py +123 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/events.rs +50 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/fixtures.rs +1 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/mod.rs +54 -54
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/render.rs +147 -26
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/tests.rs +371 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.github/workflows/acceptance-web.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/.gitignore +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/GOAL.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/LICENSE +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/MANIFEST.in +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/README.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/audit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/block_log.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/board_service.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/brain.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/claim.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/cli.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/client.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/comments.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/config.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dao.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/db.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/deps.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/drive.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/drive_queue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/events.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/filelock.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/freshness.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/gates.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/goal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/context.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/models.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/render.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/health/units.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/hooks.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/interactive.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/models.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/network.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/notify.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/openapi.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/parentage.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/plans.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/progress.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/release_window.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/reports.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/review.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/smoke.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/split_work.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/test_author.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/test_report.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/usage.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/install-agent.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/pyproject.toml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/setup.cfg +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-65/manifest.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/conftest.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_config.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_db.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_drive_queue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_events.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_init.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_models.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_network.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_review.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_session.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_split.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/tests/acceptance.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.156}/tui/tests/fixtures/board_sample.json +0 -0
|
@@ -135,30 +135,14 @@ computes the routing without actually building or testing anything.
|
|
|
135
135
|
## Working on `tui/` — the `quadraui` pin
|
|
136
136
|
|
|
137
137
|
**`coord-tui` pins `quadraui` to a git rev in `tui/Cargo.toml`**
|
|
138
|
-
(`quadraui = { git = "https://github.com/JDonaghy/quadraui", rev = "<sha>" }`, #1973)
|
|
139
|
-
|
|
140
|
-
whatever
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
-
|
|
146
|
-
quadraui rev — normally the tip of `origin/develop` (quadraui's default/integration branch,
|
|
147
|
-
per quadraui's CLAUDE.md) — edit the `rev = "..."` in `tui/Cargo.toml`, then run
|
|
148
|
-
`cargo build && cargo test` from `tui/` and confirm EXIT=0 before committing.
|
|
149
|
-
`cargo update -p quadraui` alone will **not** move a `rev`-pinned git dependency; the
|
|
150
|
-
`Cargo.toml` edit is the actual bump.
|
|
151
|
-
- **Co-developing against an unmerged quadraui branch/PR:** if a `tui/` task consumes a
|
|
152
|
-
not-yet-merged quadraui feature, the briefing **must** name the quadraui PR/branch. The
|
|
153
|
-
worker builds against a local `~/src/quadraui` checkout **without editing
|
|
154
|
-
`tui/Cargo.toml`**, via cargo's local-paths override:
|
|
155
|
-
`cp tui/cargo-config-local-quadraui.toml.example tui/.cargo/config.toml` (git-ignored — see
|
|
156
|
-
the example file's header) after checking out the target branch in `~/src/quadraui`. Delete
|
|
157
|
-
`tui/.cargo/config.toml` (or don't create it) to build against the pinned rev again — this
|
|
158
|
-
is the default and what CI/other workers use. **Verify build EXIT=0 from `tui/` both with
|
|
159
|
-
the override active (proves the feature works) and, before finishing, confirm the committed
|
|
160
|
-
`tui/Cargo.toml` still points at the pinned rev** (the override file itself is never
|
|
161
|
-
committed).
|
|
138
|
+
(`quadraui = { git = "https://github.com/JDonaghy/quadraui", rev = "<sha>" }`, #1973) —
|
|
139
|
+
never edit that `rev` as a shortcut for co-development, and never build `tui/` against
|
|
140
|
+
whatever happens to be checked out in `~/src/quadraui`; a quadraui merge broke coord-tui's
|
|
141
|
+
build with zero coord-tui commits and no warning once already, which is exactly what the pin
|
|
142
|
+
prevents. Bumping the pin deliberately, and building against an unmerged quadraui branch/PR
|
|
143
|
+
without touching the pin, are both procedures — see the `tui-quadraui-workflow` skill
|
|
144
|
+
(`coord/skills/tui-quadraui-workflow/SKILL.md`) for the steps; install it with `coord
|
|
145
|
+
install-skills` if it isn't already on this machine.
|
|
162
146
|
|
|
163
147
|
## Key Design Decisions
|
|
164
148
|
|
|
@@ -344,7 +344,14 @@ coord/providers/base.py
|
|
|
344
344
|
coord/providers/claude.py
|
|
345
345
|
coord/providers/claude_pty.py
|
|
346
346
|
coord/providers/opencode.py
|
|
347
|
+
coord/skills/coord-dispatch-verbs/SKILL.md
|
|
348
|
+
coord/skills/drive-queue-preflight/SKILL.md
|
|
349
|
+
coord/skills/fleet-restart-safety/SKILL.md
|
|
350
|
+
coord/skills/merge-stuck-triage/SKILL.md
|
|
351
|
+
coord/skills/pipeline-limbo-triage/SKILL.md
|
|
347
352
|
coord/skills/portal-followup/SKILL.md
|
|
353
|
+
coord/skills/review-verdict-recovery/SKILL.md
|
|
354
|
+
coord/skills/tui-quadraui-workflow/SKILL.md
|
|
348
355
|
coord/skills/update-issue/SKILL.md
|
|
349
356
|
deploy/coord-agent.service
|
|
350
357
|
deploy/coord-db-backup.service
|
|
@@ -442,6 +449,7 @@ tests/test_agent_push_failure.py
|
|
|
442
449
|
tests/test_agent_reap.py
|
|
443
450
|
tests/test_agent_repos_and_pull.py
|
|
444
451
|
tests/test_agent_restart_services_endpoint.py
|
|
452
|
+
tests/test_agent_skills_self_heal.py
|
|
445
453
|
tests/test_agent_startup_diagnostics.py
|
|
446
454
|
tests/test_agent_update.py
|
|
447
455
|
tests/test_agent_update_bluegreen.py
|
{code_coordinator-0.5.154 → code_coordinator-0.5.156}/code_coordinator.egg-info/scm_file_list.json
RENAMED
|
@@ -307,7 +307,14 @@
|
|
|
307
307
|
"coord/review.py",
|
|
308
308
|
"coord/scorecard.py",
|
|
309
309
|
"coord/serve_app.py",
|
|
310
|
+
"coord/skills/coord-dispatch-verbs/SKILL.md",
|
|
311
|
+
"coord/skills/drive-queue-preflight/SKILL.md",
|
|
312
|
+
"coord/skills/fleet-restart-safety/SKILL.md",
|
|
313
|
+
"coord/skills/merge-stuck-triage/SKILL.md",
|
|
314
|
+
"coord/skills/pipeline-limbo-triage/SKILL.md",
|
|
310
315
|
"coord/skills/portal-followup/SKILL.md",
|
|
316
|
+
"coord/skills/review-verdict-recovery/SKILL.md",
|
|
317
|
+
"coord/skills/tui-quadraui-workflow/SKILL.md",
|
|
311
318
|
"coord/skills/update-issue/SKILL.md",
|
|
312
319
|
"coord/smoke.py",
|
|
313
320
|
"coord/spend_ceiling.py",
|
|
@@ -486,6 +493,7 @@
|
|
|
486
493
|
"tests/test_agent_reap.py",
|
|
487
494
|
"tests/test_agent_repos_and_pull.py",
|
|
488
495
|
"tests/test_agent_restart_services_endpoint.py",
|
|
496
|
+
"tests/test_agent_skills_self_heal.py",
|
|
489
497
|
"tests/test_agent_startup_diagnostics.py",
|
|
490
498
|
"tests/test_agent_update.py",
|
|
491
499
|
"tests/test_agent_update_bluegreen.py",
|
|
@@ -4504,6 +4504,24 @@ class AgentServer:
|
|
|
4504
4504
|
self._graph_heal_last_skip_at: float | None = None
|
|
4505
4505
|
self._graph_heal_passes: int = 0
|
|
4506
4506
|
|
|
4507
|
+
# Skills self-heal (#319 follow-up): `coord install-skills` was a
|
|
4508
|
+
# real fix (coord/skills/*/SKILL.md) for a real problem, but was a
|
|
4509
|
+
# 100%-manual step nothing in provisioning ever ran — so a skill
|
|
4510
|
+
# added or updated in a coordinator release could sit uninstalled on
|
|
4511
|
+
# a worker machine indefinitely, unnoticed, the same "silent gap"
|
|
4512
|
+
# shape already known from the graphify hooks and the browser
|
|
4513
|
+
# capability probe. Rides the same cached health-check tick as the
|
|
4514
|
+
# graph self-heal above rather than adding a new timer — syncing a
|
|
4515
|
+
# handful of small text files is cheap enough to need none of that
|
|
4516
|
+
# pass's guards (no idle-gate, no in-flight dedup, no retry budget).
|
|
4517
|
+
# In-memory only, resets on agent restart, same rationale as
|
|
4518
|
+
# `_graph_heal_passes` above: it exists to answer "is this machine's
|
|
4519
|
+
# skill set current", not to be a durable metric.
|
|
4520
|
+
self._skills_heal_passes: int = 0
|
|
4521
|
+
self._skills_heal_last_run_at: float | None = None
|
|
4522
|
+
self._skills_heal_last_synced: list[dict[str, str]] = []
|
|
4523
|
+
self._skills_heal_last_error: str | None = None
|
|
4524
|
+
|
|
4507
4525
|
self.state_dir.mkdir(parents=True, exist_ok=True)
|
|
4508
4526
|
self.log_dir.mkdir(parents=True, exist_ok=True)
|
|
4509
4527
|
self._load_state()
|
|
@@ -4888,6 +4906,21 @@ class AgentServer:
|
|
|
4888
4906
|
"skipped_active": self._graph_heal_skipped_active,
|
|
4889
4907
|
"last_skip_at": self._graph_heal_last_skip_at,
|
|
4890
4908
|
},
|
|
4909
|
+
# Same idea as `graph_self_heal` above, for the bundled
|
|
4910
|
+
# `coord/skills/*/SKILL.md` sync: `coord install-skills` existed
|
|
4911
|
+
# as a real fix but was a 100%-manual step nothing in
|
|
4912
|
+
# provisioning ever ran, so a skill added in a coordinator
|
|
4913
|
+
# release could sit uninstalled on a worker machine
|
|
4914
|
+
# indefinitely, unnoticed. `last_synced` names whichever skills
|
|
4915
|
+
# actually changed on the most recent pass (empty on the common
|
|
4916
|
+
# "already current" tick) so `coord doctor` can show something
|
|
4917
|
+
# more useful than a bare pass count.
|
|
4918
|
+
"skills_self_heal": {
|
|
4919
|
+
"passes": self._skills_heal_passes,
|
|
4920
|
+
"last_run_at": self._skills_heal_last_run_at,
|
|
4921
|
+
"last_synced": self._skills_heal_last_synced,
|
|
4922
|
+
"last_error": self._skills_heal_last_error,
|
|
4923
|
+
},
|
|
4891
4924
|
# #2299: is this agent actually watching a coordinator.yml, and
|
|
4892
4925
|
# has it picked anything up? `watching` is None for a
|
|
4893
4926
|
# config-free/thin-client agent (nothing local to re-read), which
|
|
@@ -4953,6 +4986,12 @@ class AgentServer:
|
|
|
4953
4986
|
self._self_heal_stale_graphs(ctx, report)
|
|
4954
4987
|
except Exception as exc: # noqa: BLE001 — self-heal is best-effort
|
|
4955
4988
|
_log.warning("graph self-heal pass failed: %s", exc)
|
|
4989
|
+
try:
|
|
4990
|
+
# Same isolation as the graph pass above: a skills-sync bug
|
|
4991
|
+
# must never blind this whole health block.
|
|
4992
|
+
self._self_heal_missing_skills()
|
|
4993
|
+
except Exception as exc: # noqa: BLE001 — self-heal is best-effort
|
|
4994
|
+
_log.warning("skills self-heal pass failed: %s", exc)
|
|
4956
4995
|
report_dict = report.to_dict()
|
|
4957
4996
|
payload = {
|
|
4958
4997
|
"schema": report_dict["schema"],
|
|
@@ -5169,6 +5208,59 @@ class AgentServer:
|
|
|
5169
5208
|
if replacement is not None:
|
|
5170
5209
|
report.results[i] = replacement
|
|
5171
5210
|
|
|
5211
|
+
def _self_heal_missing_skills(self) -> None:
|
|
5212
|
+
"""Sync bundled `coord/skills/*/SKILL.md` into ``~/.claude/skills/``
|
|
5213
|
+
on this machine, riding the same cached health-check tick as
|
|
5214
|
+
`_self_heal_stale_graphs` above.
|
|
5215
|
+
|
|
5216
|
+
`coord install-skills` (#319) was a real fix for a real problem, but
|
|
5217
|
+
it was a 100%-manual step — nothing in agent provisioning or this
|
|
5218
|
+
health tick ever ran it, so a skill added or updated in a
|
|
5219
|
+
coordinator release could sit uninstalled on a worker machine
|
|
5220
|
+
indefinitely, unnoticed. That is the same "silent gap" shape as the
|
|
5221
|
+
graphify hooks and the browser-capability probe this codebase
|
|
5222
|
+
already knows about.
|
|
5223
|
+
|
|
5224
|
+
Unlike the graph rebuild, this needs none of that pass's four
|
|
5225
|
+
guards: syncing a handful of small text files is cheap file I/O, not
|
|
5226
|
+
a CPU-heavy subprocess, so there is no idle-gate, no in-flight
|
|
5227
|
+
dedup, and no retry budget — `sync_bundled_skills` is already
|
|
5228
|
+
idempotent (content-identical files are left untouched, so a
|
|
5229
|
+
no-op tick costs a handful of reads, nothing more).
|
|
5230
|
+
"""
|
|
5231
|
+
from coord.commands.setup import ( # noqa: PLC0415
|
|
5232
|
+
list_bundled_skill_dirs,
|
|
5233
|
+
sync_bundled_skills,
|
|
5234
|
+
)
|
|
5235
|
+
|
|
5236
|
+
target_root = Path.home() / ".claude" / "skills"
|
|
5237
|
+
try:
|
|
5238
|
+
skill_dirs = list_bundled_skill_dirs()
|
|
5239
|
+
except Exception as exc: # noqa: BLE001 — recorded, never raised further
|
|
5240
|
+
self._skills_heal_last_error = f"{type(exc).__name__}: {exc}"
|
|
5241
|
+
return
|
|
5242
|
+
|
|
5243
|
+
self._skills_heal_passes += 1
|
|
5244
|
+
self._skills_heal_last_run_at = time.time()
|
|
5245
|
+
self._skills_heal_last_error = None
|
|
5246
|
+
if not skill_dirs:
|
|
5247
|
+
self._skills_heal_last_synced = []
|
|
5248
|
+
return
|
|
5249
|
+
|
|
5250
|
+
target_root.mkdir(parents=True, exist_ok=True)
|
|
5251
|
+
results = sync_bundled_skills(target_root, skill_dirs)
|
|
5252
|
+
changed = [
|
|
5253
|
+
{"skill": name, "action": action}
|
|
5254
|
+
for name, action in results
|
|
5255
|
+
if action != "unchanged"
|
|
5256
|
+
]
|
|
5257
|
+
self._skills_heal_last_synced = changed
|
|
5258
|
+
if changed:
|
|
5259
|
+
_log.info(
|
|
5260
|
+
"skills self-heal: %s",
|
|
5261
|
+
", ".join(f"{c['skill']} {c['action']}" for c in changed),
|
|
5262
|
+
)
|
|
5263
|
+
|
|
5172
5264
|
@staticmethod
|
|
5173
5265
|
def _graph_failure_result(result: Any, values: dict, detail: str) -> Any:
|
|
5174
5266
|
"""Guard 4's WARN replacement, shared by the attempt and the
|
|
@@ -683,6 +683,9 @@ def backlog(repo: str, issue: int, config_path: Path) -> None:
|
|
|
683
683
|
"Stage a Pipeline issue as \"next up\" by tagging it with "
|
|
684
684
|
"`status:queued` — moves a Pipeline:New card into "
|
|
685
685
|
"In-progress:`ready` with no dispatch (display + intent only).\n\n"
|
|
686
|
+
"NOT the driver queue: this command never dispatches anything. To "
|
|
687
|
+
"actually get an issue worked end-to-end, use `coord drive-queue "
|
|
688
|
+
"add <repo> <issue>` instead — see the coord-dispatch-verbs skill.\n\n"
|
|
686
689
|
"Deliberately a separate label from `status:ready`: that one is "
|
|
687
690
|
"already applied automatically by `coord track` / the refinement "
|
|
688
691
|
"finalize step for every issue sent to the Pipeline, so it carries "
|
|
@@ -482,6 +482,60 @@ def _build_init_yaml(
|
|
|
482
482
|
return "\n".join(lines) + "\n"
|
|
483
483
|
|
|
484
484
|
|
|
485
|
+
def list_bundled_skill_dirs() -> list[tuple[str, object]]:
|
|
486
|
+
"""Enumerate bundled `coord/skills/*/SKILL.md` directories (#319).
|
|
487
|
+
|
|
488
|
+
Returns ``(skill_name, entry)`` pairs, sorted by name, for every
|
|
489
|
+
sub-directory of the installed `coord.skills` package that contains a
|
|
490
|
+
readable ``SKILL.md``. Raises ``ModuleNotFoundError``/``TypeError`` if
|
|
491
|
+
the package itself can't be located, or ``FileNotFoundError``/
|
|
492
|
+
``NotADirectoryError`` if its directory listing can't be read — callers
|
|
493
|
+
decide how to surface that (``install_skills`` below exits 1; the
|
|
494
|
+
agent-side self-heal in `agent.py` logs and moves on, since a skills
|
|
495
|
+
hiccup must never block `/health`).
|
|
496
|
+
"""
|
|
497
|
+
import importlib.resources as _ilr # noqa: PLC0415
|
|
498
|
+
|
|
499
|
+
skills_ref = _ilr.files("coord").joinpath("skills")
|
|
500
|
+
skill_dirs: list[tuple[str, object]] = []
|
|
501
|
+
for entry in skills_ref.iterdir():
|
|
502
|
+
skill_name = entry.name # type: ignore[attr-defined]
|
|
503
|
+
skill_file = entry.joinpath("SKILL.md")
|
|
504
|
+
try:
|
|
505
|
+
skill_file.read_text(encoding="utf-8")
|
|
506
|
+
skill_dirs.append((skill_name, entry))
|
|
507
|
+
except (FileNotFoundError, IsADirectoryError, TypeError):
|
|
508
|
+
pass
|
|
509
|
+
return sorted(skill_dirs)
|
|
510
|
+
|
|
511
|
+
|
|
512
|
+
def sync_bundled_skills(
|
|
513
|
+
target_root: Path, skill_dirs: list[tuple[str, object]]
|
|
514
|
+
) -> list[tuple[str, str]]:
|
|
515
|
+
"""Write each ``(skill_name, entry)`` from *skill_dirs* into
|
|
516
|
+
*target_root* (normally ``~/.claude/skills/``) if missing or changed
|
|
517
|
+
(#319 / agent self-heal).
|
|
518
|
+
|
|
519
|
+
Returns ``(skill_name, action)`` pairs, ``action`` one of ``"installed"``,
|
|
520
|
+
``"updated"``, or ``"unchanged"`` — content-identical skills are left
|
|
521
|
+
untouched (no rewrite, no mtime bump) so a periodic caller can run this
|
|
522
|
+
every tick without churn. Does not create *target_root* itself; callers
|
|
523
|
+
create it first once they know there is something to write.
|
|
524
|
+
"""
|
|
525
|
+
results: list[tuple[str, str]] = []
|
|
526
|
+
for skill_name, skill_dir_ref in skill_dirs:
|
|
527
|
+
skill_file_dest = target_root / skill_name / "SKILL.md"
|
|
528
|
+
src_text = skill_dir_ref.joinpath("SKILL.md").read_text(encoding="utf-8") # type: ignore[attr-defined]
|
|
529
|
+
if skill_file_dest.exists() and skill_file_dest.read_text(encoding="utf-8") == src_text:
|
|
530
|
+
results.append((skill_name, "unchanged"))
|
|
531
|
+
continue
|
|
532
|
+
action = "updated" if skill_file_dest.exists() else "installed"
|
|
533
|
+
skill_file_dest.parent.mkdir(parents=True, exist_ok=True)
|
|
534
|
+
skill_file_dest.write_text(src_text, encoding="utf-8")
|
|
535
|
+
results.append((skill_name, action))
|
|
536
|
+
return results
|
|
537
|
+
|
|
538
|
+
|
|
485
539
|
@click.command(
|
|
486
540
|
"install-skills",
|
|
487
541
|
help=(
|
|
@@ -490,8 +544,6 @@ def _build_init_yaml(
|
|
|
490
544
|
"No repo clone required — reads from the installed PyPI package."
|
|
491
545
|
),
|
|
492
546
|
)
|
|
493
|
-
|
|
494
|
-
|
|
495
547
|
@click.option(
|
|
496
548
|
"--list",
|
|
497
549
|
"do_list",
|
|
@@ -499,43 +551,24 @@ def _build_init_yaml(
|
|
|
499
551
|
default=False,
|
|
500
552
|
help="Show bundled skills and their installed status without copying.",
|
|
501
553
|
)
|
|
502
|
-
|
|
503
|
-
|
|
504
554
|
@click.option(
|
|
505
555
|
"--dry-run",
|
|
506
556
|
is_flag=True,
|
|
507
557
|
default=False,
|
|
508
558
|
help="Print what would be installed without writing any files.",
|
|
509
559
|
)
|
|
510
|
-
|
|
511
|
-
|
|
512
560
|
def install_skills(do_list: bool, dry_run: bool) -> None: # noqa: FBT001
|
|
513
561
|
"""Install bundled coordinator skills to ~/.claude/skills/ (#319)."""
|
|
514
|
-
import importlib.resources as _ilr # noqa: PLC0415
|
|
515
|
-
|
|
516
562
|
if do_list and dry_run:
|
|
517
563
|
click.echo("warning: --dry-run has no effect when --list is used", err=True)
|
|
518
564
|
|
|
519
565
|
target_root = Path.home() / ".claude" / "skills"
|
|
520
566
|
|
|
521
|
-
# Locate the skills directory inside the installed package.
|
|
522
567
|
try:
|
|
523
|
-
|
|
568
|
+
skill_dirs = list_bundled_skill_dirs()
|
|
524
569
|
except (TypeError, ModuleNotFoundError) as e:
|
|
525
570
|
click.echo(f"error: cannot locate bundled skills: {e}", err=True)
|
|
526
571
|
sys.exit(1)
|
|
527
|
-
|
|
528
|
-
# Enumerate skill directories (each sub-directory that contains SKILL.md).
|
|
529
|
-
skill_dirs: list[tuple[str, object]] = []
|
|
530
|
-
try:
|
|
531
|
-
for entry in skills_ref.iterdir():
|
|
532
|
-
skill_name = entry.name # type: ignore[attr-defined]
|
|
533
|
-
skill_file = entry.joinpath("SKILL.md")
|
|
534
|
-
try:
|
|
535
|
-
skill_file.read_text(encoding="utf-8")
|
|
536
|
-
skill_dirs.append((skill_name, entry))
|
|
537
|
-
except (FileNotFoundError, IsADirectoryError, TypeError):
|
|
538
|
-
pass
|
|
539
572
|
except (FileNotFoundError, NotADirectoryError) as e:
|
|
540
573
|
click.echo(f"error: bundled skills directory not readable: {e}", err=True)
|
|
541
574
|
sys.exit(1)
|
|
@@ -546,31 +579,26 @@ def install_skills(do_list: bool, dry_run: bool) -> None: # noqa: FBT001
|
|
|
546
579
|
|
|
547
580
|
if do_list:
|
|
548
581
|
click.echo("Bundled skills:")
|
|
549
|
-
for skill_name, _ in
|
|
582
|
+
for skill_name, _ in skill_dirs:
|
|
550
583
|
installed_path = target_root / skill_name / "SKILL.md"
|
|
551
584
|
status = "installed" if installed_path.exists() else "not installed"
|
|
552
585
|
click.echo(f" {skill_name:30s} {status}")
|
|
553
586
|
return
|
|
554
587
|
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
for skill_name, skill_dir_ref in sorted(skill_dirs):
|
|
559
|
-
skill_dest = target_root / skill_name
|
|
560
|
-
skill_file_dest = skill_dest / "SKILL.md"
|
|
561
|
-
if dry_run:
|
|
588
|
+
if dry_run:
|
|
589
|
+
for skill_name, _ in skill_dirs:
|
|
590
|
+
skill_file_dest = target_root / skill_name / "SKILL.md"
|
|
562
591
|
action = "update" if skill_file_dest.exists() else "install"
|
|
563
592
|
click.echo(f" would {action}: {skill_file_dest}")
|
|
564
|
-
|
|
593
|
+
return
|
|
565
594
|
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
click.echo(f" {action}: {
|
|
595
|
+
target_root.mkdir(parents=True, exist_ok=True)
|
|
596
|
+
for skill_name, action in sync_bundled_skills(target_root, skill_dirs):
|
|
597
|
+
if action == "unchanged":
|
|
598
|
+
continue
|
|
599
|
+
click.echo(f" {action}: {target_root / skill_name / 'SKILL.md'}")
|
|
571
600
|
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
click.echo("Type a skill name inside a Claude Code session to use it.")
|
|
601
|
+
installed_names = sorted(name for name, _ in skill_dirs)
|
|
602
|
+
cmd_list = " ".join(f"/{n}" for n in installed_names)
|
|
603
|
+
click.echo(f"\nDone. Available skills: {cmd_list}")
|
|
604
|
+
click.echo("Type a skill name inside a Claude Code session to use it.")
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# coord-dispatch-verbs skill
|
|
2
|
+
|
|
3
|
+
**Trigger:** About to run a `coord` command to enqueue, dispatch, stage, or
|
|
4
|
+
otherwise move a GitHub issue forward through the coordinator — from any repo,
|
|
5
|
+
including agents working *inside* a coordinator-managed repo, not just the
|
|
6
|
+
operator's own coordinator session — especially when unsure of the exact
|
|
7
|
+
subcommand name, or when a command exited 0 / printed a success message but
|
|
8
|
+
the expected effect (an entry in the queue, an assignment, a dispatch) didn't
|
|
9
|
+
show up.
|
|
10
|
+
|
|
11
|
+
**Purpose:** `coord`'s CLI has roughly 70 top-level commands, and several have
|
|
12
|
+
names that sound interchangeable but do very different things — picking the
|
|
13
|
+
wrong one usually does **not** error, it silently does something else. This is
|
|
14
|
+
the disambiguation table for the pairs that have actually cost real time,
|
|
15
|
+
plus the one rule that would catch a wrong guess before it's mistaken for
|
|
16
|
+
success.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## The incident this skill exists for
|
|
21
|
+
|
|
22
|
+
An agent working in coord-portal wanted to queue issue #119 for the
|
|
23
|
+
coordinator to pick up. It ran:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
coord queue coord-portal 119
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
This command **exists**, exited 0, and printed a success-looking message — so
|
|
30
|
+
nothing signaled a mistake. But `coord queue` is **not** the driver queue. It
|
|
31
|
+
only tags the issue with a `status:queued` **label** — "next up" staging,
|
|
32
|
+
display + intent only, no dispatch (#1500; it's what the TUI's right-click
|
|
33
|
+
"Mark ready" fires). The issue never entered `coord drive-queue`'s actual
|
|
34
|
+
`waiting` list, so nothing ever picked it up.
|
|
35
|
+
|
|
36
|
+
**The command that was needed:** `coord drive-queue add coord-portal 119` —
|
|
37
|
+
the durable, board-backed driver queue (#1750) that a periodic tick actually
|
|
38
|
+
walks and dispatches from. See `docs/DRIVE_QUEUE.md` and the
|
|
39
|
+
`drive-queue-preflight` skill.
|
|
40
|
+
|
|
41
|
+
## Disambiguation table — commands whose names collide but whose effects don't
|
|
42
|
+
|
|
43
|
+
| If you want to... | Use | NOT | Why the wrong one is dangerous |
|
|
44
|
+
|---|---|---|---|
|
|
45
|
+
| Actually get an issue worked, end-to-end, unattended | `coord drive-queue add <repo> <issue>` | `coord queue <repo> <issue>` | `queue` only applies a label — no dispatch, ever. A silent no-op relative to what you wanted. |
|
|
46
|
+
| Dispatch one issue's Work stage right now, interactively | `coord assign <machine> <repo> <issue>` | `coord drive <repo> <issue> --tmux` outside the queue, while the queue timer is active | `--tmux` drives correctly but is invisible to the queue panel and can race a live `coord-drive-queue.timer` tick — see `docs/OPERATING_GOTCHAS.md` #9. |
|
|
47
|
+
| Un-stage an issue you `coord queue`'d by mistake | `coord unqueue <repo> <issue>` | `coord drive-queue remove <repo> <issue>` | These touch two different systems (a label vs. a queue row) — running the wrong one leaves the other system's state untouched and the symptom persists. |
|
|
48
|
+
| Retry a failed **queue entry** | remove + re-add (`coord drive-queue remove` then `add`) | `coord retry <assignment_id>` | `retry` operates on a board *assignment*, not a drive-queue row — there is deliberately no `coord drive-queue reset` (see `drive-queue-preflight` / `docs/DRIVE_QUEUE.md` §4). |
|
|
49
|
+
| Check whether an issue is actually queued | `coord drive-queue list` / `coord drive-queue status` | trusting the exit code of whatever command you just ran | `coord queue`, `coord assign`, and `coord drive-queue add` all print a success line on their own happy path — only `coord drive-queue list` proves the entry exists as `waiting`. |
|
|
50
|
+
|
|
51
|
+
## The one rule
|
|
52
|
+
|
|
53
|
+
**A `coord` command exiting 0 is proof it did what *that command* does — not
|
|
54
|
+
proof it did what you intended.** Before reporting a dispatch/queue/staging
|
|
55
|
+
action as done, confirm the effect directly:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
coord drive-queue list # is my issue actually a waiting/running row?
|
|
59
|
+
coord status # does an assignment exist for it?
|
|
60
|
+
coord gates <repo> <issue> # what stage does the board think it's in?
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
If unsure which of two similarly-named commands does what you want, run
|
|
64
|
+
`coord <command> --help` first — every command's help text states its exact
|
|
65
|
+
effect (`coord queue --help` says so explicitly: "no dispatch, display +
|
|
66
|
+
intent only"). Guessing from the name alone is how this incident happened.
|
|
67
|
+
|
|
68
|
+
## Rules
|
|
69
|
+
|
|
70
|
+
- Never assume `coord queue` enqueues work for dispatch — it only labels. The
|
|
71
|
+
only real dispatch queue is `coord drive-queue`.
|
|
72
|
+
- After any dispatch/queue command, verify with `coord drive-queue list` or
|
|
73
|
+
`coord status` before reporting the action as done — don't trust a clean
|
|
74
|
+
exit code alone.
|
|
75
|
+
- When unsure between two `coord` subcommands with similar names, run
|
|
76
|
+
`--help` on the one you're about to use before running it.
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# drive-queue-preflight skill
|
|
2
|
+
|
|
3
|
+
**Trigger:** About to `coord drive-queue add` more than ~2 issues on one repo,
|
|
4
|
+
setting up an overnight/unattended drive-queue run, or looking at a `QUEUE:
|
|
5
|
+
STALLED` / `QUEUE: BLOCKED` status-bar alert.
|
|
6
|
+
|
|
7
|
+
**Purpose:** Give the real cost model before queuing deep (a queue longer than
|
|
8
|
+
~2 issues per repo is *not* an unattended feature), and the read-the-alert
|
|
9
|
+
table for when a queue stalls. Sourced from `docs/DRIVE_QUEUE.md`'s "Read this
|
|
10
|
+
before queuing more than ~2 issues" (#1715) and its §4 alert table — read that
|
|
11
|
+
doc in full for the mechanics; this is the preflight checklist and the alert
|
|
12
|
+
decoder.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Before queuing — the cascade to know about
|
|
17
|
+
|
|
18
|
+
Every merge on a repo invalidates every *other* queued branch's Test verdict
|
|
19
|
+
on that same repo (the base moved). Queue N independent issues against one
|
|
20
|
+
repo and merging the first stales the other N−1. This is **intra-repo only**
|
|
21
|
+
— cross-repo entries in the same queue never stale each other and run in
|
|
22
|
+
parallel (the per-repo concurrency ceiling defaults to 1 for exactly this
|
|
23
|
+
reason).
|
|
24
|
+
|
|
25
|
+
**What has NOT changed:** none of the self-repair below is automatic. The
|
|
26
|
+
unattended auto-drain always passes `revalidate=False` (deliberately, since
|
|
27
|
+
the 2026-06-07 token-burn incident) — an overnight timer with no operator
|
|
28
|
+
still parks stale entries.
|
|
29
|
+
|
|
30
|
+
**What has changed:** clearing a stale queue the next morning is now one
|
|
31
|
+
command per shared base, not N−1 by hand:
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
coord merge --revalidate --dry-run # names each batch and its members
|
|
35
|
+
coord merge --revalidate # one composed suite run per base, then merge
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
A composed run validates the batch **together**, not each branch alone — a
|
|
39
|
+
re-confirmation of verdicts each member already earned individually, not a
|
|
40
|
+
first proof. If the composite fails, nothing merges; each branch is then
|
|
41
|
+
re-tested alone so the culprit is named and the innocent branches still land.
|
|
42
|
+
|
|
43
|
+
**Practical guidance:**
|
|
44
|
+
- Genuinely unattended overnight run, nobody coming back to it: keep to 1–2
|
|
45
|
+
entries per repo (or spread across different repos — they don't stale each
|
|
46
|
+
other).
|
|
47
|
+
- A run you WILL come back to and drain: queue as deep as you like — the
|
|
48
|
+
morning drain is one command.
|
|
49
|
+
|
|
50
|
+
## Reading a `QUEUE:` alert
|
|
51
|
+
|
|
52
|
+
| Segment | Meaning | What to do |
|
|
53
|
+
|---|---|---|
|
|
54
|
+
| `QUEUE: empty` | nothing queued | nothing |
|
|
55
|
+
| `QUEUE: N running · M waiting` | normal operation | nothing |
|
|
56
|
+
| `QUEUE: STALLED — N waiting, none eligible` (warn) | capacity is free, but every waiting entry is deferred — usually an unresolved `--after` pre-req | usually self-resolves once the pre-req lands; `coord drive-queue status` names exactly which entries and why |
|
|
57
|
+
| `QUEUE: BLOCKED N · M waiting` (warn/crit, outranks a simultaneous stall) | one or more entries are `blocked`: a dependency cycle, a broken `--after`, or a drive that died `attempts` times in a row | usually needs an operator action (below) — but since #2230 some blocked entries self-heal, see next |
|
|
58
|
+
|
|
59
|
+
**Since #2230, not every `blocked` entry needs a human.** Every tick re-checks
|
|
60
|
+
a blocked entry's own merge gate (unless it's one of two permanent causes — a
|
|
61
|
+
pre-dispatch refusal, or a genuine dead end) and moves it back to `waiting`
|
|
62
|
+
the moment the gate reads clear. If a row is *still* `blocked`, either it
|
|
63
|
+
never had a re-evaluable cause, the gate is genuinely still shut, or it
|
|
64
|
+
already oscillated past the resume ceiling (3 — `resumes=N/3` in `coord
|
|
65
|
+
drive-queue list`).
|
|
66
|
+
|
|
67
|
+
**Fix for a row that needs a human** — there's deliberately no `reset`;
|
|
68
|
+
remove-and-re-add gives a clean `waiting`/`attempts=0` row:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
coord drive-queue remove REPO ISSUE && coord drive-queue add REPO ISSUE
|
|
72
|
+
# re-add WITHOUT the bad --after if that was the cause
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
or, from the TUI overlay, select the blocked entry and press `u`.
|
|
76
|
+
|
|
77
|
+
Treat `last_reason` as history, not a live diagnosis — it's a snapshot taken
|
|
78
|
+
the instant it was written and never re-validated; `coord drive-queue list`
|
|
79
|
+
shows its age for exactly this reason. Once it's more than a few minutes old,
|
|
80
|
+
go check the board/CI/review state directly instead of trusting the text.
|
|
81
|
+
|
|
82
|
+
## Rules
|
|
83
|
+
|
|
84
|
+
- Never assume a deep queue is "fine because auto-drain will handle it" —
|
|
85
|
+
auto-drain never revalidates, by design.
|
|
86
|
+
- Don't `coord drive-queue add` more than ~2 issues on one repo and walk away
|
|
87
|
+
unless you're planning to run `coord merge --revalidate` yourself later.
|
|
88
|
+
- Confirm an issue actually landed in the queue with `coord drive-queue list`
|
|
89
|
+
— see the `coord-dispatch-verbs` skill for why the add command's own exit
|
|
90
|
+
code isn't sufficient proof.
|