code-coordinator 0.5.154__tar.gz → 0.5.158__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.158}/CLAUDE.md +8 -24
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/PKG-INFO +1 -1
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/PKG-INFO +1 -1
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/SOURCES.txt +9 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/scm_file_list.json +9 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/scm_version.json +2 -2
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/agent.py +92 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/issues.py +3 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/setup.py +69 -41
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/drive_queue.py +74 -1
- code_coordinator-0.5.158/coord/skills/coord-dispatch-verbs/SKILL.md +76 -0
- code_coordinator-0.5.158/coord/skills/drive-queue-preflight/SKILL.md +90 -0
- code_coordinator-0.5.158/coord/skills/fleet-restart-safety/SKILL.md +98 -0
- code_coordinator-0.5.158/coord/skills/merge-stuck-triage/SKILL.md +73 -0
- code_coordinator-0.5.158/coord/skills/pipeline-limbo-triage/SKILL.md +52 -0
- code_coordinator-0.5.158/coord/skills/review-verdict-recovery/SKILL.md +70 -0
- code_coordinator-0.5.158/coord/skills/tui-quadraui-workflow/SKILL.md +64 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/AGENT_OPERATIONS.md +25 -3
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/ARCHITECTURE.md +4 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/DRIVE_QUEUE.md +2 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/OPERATING_GOTCHAS.md +4 -0
- code_coordinator-0.5.158/tests/acceptance/ms-65/detail_substate_2285.rs +725 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/manifest.yml +124 -0
- code_coordinator-0.5.158/tests/test_agent_skills_self_heal.py +123 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_drive_queue.py +182 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/events.rs +50 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/fixtures.rs +1 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/mod.rs +54 -54
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/render.rs +147 -26
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/tests.rs +371 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/tests/acceptance.rs +1 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.claude/commands/board.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.claude/commands/complete-session.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.claude/commands/coordinator.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.githooks/_lib.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.githooks/post-checkout +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.githooks/post-commit +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.githooks/post-merge +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/coord-ci-acceptance.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/workflows/acceptance-web.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/workflows/auto-release.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/workflows/cargo-test.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/workflows/publish.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/workflows/release-tui.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/workflows/test.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.gitignore +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/GOAL.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/LICENSE +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/MANIFEST.in +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/README.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/dependency_links.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/entry_points.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/requires.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/top_level.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/_board_mapping.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/acceptance.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/acceptance_drivers.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/agent_app.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/agent_update.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/agents/opencode/.gitignore +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/agents/opencode/agents/work.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/agents/opencode/routing.jsonc +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/audit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/auto_loop.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/block_log.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/board_bool_guard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/board_service.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/board_wire.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/brain.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/branch_model.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/bug_intake.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/cargo_cache.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/ci_github.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/ci_store.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/claim.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/cli.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/client.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/_common.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/acceptance.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/agent_ops.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/audit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/dispatch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/dispatch_workers.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/drive.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/drive_queue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/gate_a.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/gates.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/lifecycle.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/merge.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/milestone.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/plan_followup.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/plans.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/portal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/release.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/repo.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/report.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/review.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/scorecard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/sessions.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/status.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/terminal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/test_gate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/tui.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/comments.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/config.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/config_reload.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/conflict_fix.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dao.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/fixture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/index.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/server.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/terminal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/.gitignore +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/components.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/index.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/sw.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/eslint.config.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/index.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/package-lock.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/package.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/playwright.config.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/postcss.config.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/App.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/api/client.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/api/generated.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/index.css +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/main.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/test-setup.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/tailwind.config.js +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/tsconfig.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/tsconfig.node.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/vite.config.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/db.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dead_end.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/README.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy_manifest.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy_units.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deps.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/diagnose.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dispatch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dist_name.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/drive.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/drive_state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/events.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/failure_class.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/filelock.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/fleet_config_health.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/freshness.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/gate_a.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/gate_b.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/gate_snapshot.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/gates.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/github_ops.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/goal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/graph_health.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/aggregate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/agent_install.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/cargo_targets.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/claude_binary.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/disk.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/fleet_board.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/fleet_deploy_lanes.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/fleet_phantom.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/fleet_unit_drift.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/graph.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/graphify_cli.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/index_lock.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/plan_usage.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/repo_state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/spawned_coord.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/timer_active.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/toolchain.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/unit_drift.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/unit_enablement.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/worktrees.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/cli.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/context.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/fleet_snapshot.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/models.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/pypi.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/registry.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/render.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/units.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/hooks.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/housekeeping.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/interactive.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/issue_store.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/liveness_auditor.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/machine_pause.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/merge_queue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/milestone_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/milestone_dispatch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/milestone_gate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/milestone_order.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/mock_author.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/models.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/network.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/new_issue_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/baseline.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/cli.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/collect.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/digest.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/models.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/predicate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/service.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/store.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/transport.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notify.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/openapi.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/overlap_fence.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/overlap_predict.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/parentage.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/parentage_github.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/pipeline.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/plan_parser.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/plans.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/platform_paths.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/portal_bridge.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/portal_store.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/portal_sync.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/pr_body_lint.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/prereqs.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/progress.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/providers/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/providers/base.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/providers/claude.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/providers/claude_pty.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/providers/opencode.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/queue_diagnose.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/reconcile.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/reconcile_tick.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/refine_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/release_cordon.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/release_propagate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/release_verify.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/release_window.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/repo_edit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/repo_onboard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/reports.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/revalidate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/review.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/scorecard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/serve_app.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/skills/portal-followup/SKILL.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/skills/update-issue/SKILL.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/smoke.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/spend_ceiling.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/split_work.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/stage_projection.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/test_author.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/test_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/test_orchestrator.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/test_report.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/tui_release.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/usage.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/usage_limits.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/usage_rollup.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/worker_events.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coordinator.example.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-agent.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-db-backup.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-db-backup.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-db-backup.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-drive-queue.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-drive-queue.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-notify.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-notify.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-release-propagate.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-release-propagate.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-release-window.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-release-window.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-serve.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-web-dist-build.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-web-dist-build.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-web-dist-build.timer +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-web-rollback.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-web.service +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/node-shim.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/ADR_COORD_WEB_DIST.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/ARCH_SECURITY_GATES.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/COCKPIT.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/COST_DISCIPLINE.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/CROSS_PLATFORM.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/CUSTOMER_PORTAL.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/EPHEMERAL_WORKERS.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/FORGE_MIGRATION.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/GRAPHIFY_SETUP.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/ISSUE_GUIDANCE.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/MAC_MINI.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/NOTIFIER.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/OPENCODE_VERIFICATION.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/ORACLE_LOOP.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/PHONE_WEBAPP.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/PIPELINE_V2.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/PLATFORM_EVOLUTION.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/SECOND_BACKEND.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/STORE_SERVICE.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/TEST_FIRST_BUG_LANE.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/WEB_CONTROL_CENTER.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/WSL_WINDOWS_WORKER.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/mocks/web/README.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/mocks/web/_tokens.css +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/mocks/web/issue-detail.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/mocks/web/pipeline-narrow.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/mocks/web/pipeline-wide.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/graphify-out/.gitignore +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/install-agent.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/pyproject.toml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/audit_review_verdict_overrides.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/bootstrap-shared.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/build-worker-image.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/coordinator-machine.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/epic-down.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/epic-up.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/preflight.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/provision-worker.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/tailnet-acl.hujson +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/verify-github-token.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/codegen.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/coord-test-runner.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/drive-batch.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/gen_board_fixture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/next_release_tag.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/run_tests_in_populated_home.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/run_tests_without_gh.sh +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/smoke_437_interactive.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/verify_878_review_capture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/verify_release_published.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/verify_release_wheel.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/setup.cfg +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/SMOKE_SET.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/__init__.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-33/audit_1039.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-33/contract.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-33/manifest.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-37/conftest.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-37/contract.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-37/manifest.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/contract.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/manifest.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-51/contract.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-51/manifest.yml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-51/tsconfig.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/contract.md +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/conftest.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/board-pipeline-basic.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/opencode_run_sample.jsonl +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/playwright/all_pass.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/playwright/global_setup_crash.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/playwright/mixed_fail.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/playwright/retry_then_pass.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/playwright/skip.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/playwright/truncated.json +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_acceptance.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_acceptance_drivers.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_api_error.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_app.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_branch_base.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_branch_capture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_config_free_1712.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_deploy_units_endpoint.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_dirty_worktree.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_graph_self_heal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_health_h3.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_idle_restart.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_push_failure.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_reap.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_repos_and_pull.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_restart_services_endpoint.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_startup_diagnostics.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_update.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_update_bluegreen.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_usage_limit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_zero_commit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_ambient_home_isolation.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_approve_reject_plan.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_approve_usage_gate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_assignment_already_recorded_daemon.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_audit_log.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_audit_outcome.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_audit_query.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_auto_loop.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_auto_release_publish_2035.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_base_checkout_restore.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_block_log.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_board_cap_762.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_board_fixture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_board_read_path.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_board_service.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_board_state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_board_wire.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_brain.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_branch_model.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_bug_intake.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_build_worker_image_env_update.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cargo_cache.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_ci_acceptance_gate_1950.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_ci_parity_2091.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_ci_store.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_claim.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_acceptance.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_assign.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_assign_interactive_remote.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_assign_provider.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_assign_repo_drift_2219.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_audit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_chat_continue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_decide.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_diagnose_config_provenance.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_diagnose_graph.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_doctor.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_doctor_config_free_1801.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_drive.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_drive_queue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_escalate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_fix_headless_review.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_gate_a.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_install_drift.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_install_skills.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_issue_create_label.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_issue_reopen.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_merge.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_assign.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_capture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_chat_add_child.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_gate_b.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_gate_c.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_order.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_ship.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_network.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_new_issue_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_plans.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_portal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_pull_artifact.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_queue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_reattach_sessions.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_refine_board.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_release_preflight.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_release_propagate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_release_window.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_repo_2220.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_scorecard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_set_review_findings.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_status_advisory_terminal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_status_merge_queue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_status_provider.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_status_review_finalizing.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_status_test_failed_tag.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_status_usage_limit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_sync_comments_873.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_test_plan.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_track.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_tui_update.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_wait.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_client_base_install.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_comments.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_completion_summary.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_config.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_config_acceptance.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_config_audit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_config_pricing.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_config_usage_gate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_conflict_fix.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_conflict_fix_semantic.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_coord_test.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_coord_test_runner_baseline.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_coord_test_runner_populated_home.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_coord_test_runner_routing.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_coord_test_runner_toolchain.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_coord_web_sse_restart_live.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_coordinator_machine.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cross_platform_imports.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dashboard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dashboard_fixture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dashboard_terminal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dashboard_terminal_live.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_db.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dead_end.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deploy_coord_db_backup.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deploy_coord_web_dist.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deploy_coord_web_rollback.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deploy_drive_queue_unit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deploy_manifest.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deploy_units_lane.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deploy_web_unit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deps.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_diagnose.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dispatch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dispatch_target_validation.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dist_name.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_done_housekeeping.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_drive.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_drive_state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_drive_tmux.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_epic_up_capability_detection.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_epic_up_image_provenance.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_errors.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_events.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_failure_class.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_filelock.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_fix_of_force_override.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_fleet_config_health.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_fleet_health_probes.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_fleet_health_snapshot.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_freshness.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_gate_a.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_gate_b.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_gate_snapshot_staleness.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_gates.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_gather_fleet_tmux_sessions.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_generated_types_fixture.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_github_ops.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_goal.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_graph_health.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_graph_selfheal_absent_2237.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_handoff.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_checks.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_cli.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_cli_graph.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_config.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_context.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_deploy_lane_facts.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_incident_regression.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_pypi.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_registry.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_timer_active.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_toolchain.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_unit_drift.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_unit_enablement.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_hooks.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_human_attended_437.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_init.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_integration.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_interactive_briefing_echo.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_interactive_prefill_state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_interactive_session_relaunch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_interactive_test_verdict_backstop.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_interactive_token_attribution.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_interactive_worktree.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_issue_store_seam.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_liveness_auditor.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_liveness_notify.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_machine_pause.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_merge_queue.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_merge_verify.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_milestone_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_milestone_dispatch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_milestone_gate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_milestone_order.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_milestone_seam.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_mock_author.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_model_tiering.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_models.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_models_config_labels.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_needs_attention.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_network.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_new_issue_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_next_release_tag.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_no_direct_gh_calls.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_node_shim.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_baseline.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_cli.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_collect.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_config.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_drive_seam.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_isolation.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_predicate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_quiet_hours.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_service.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notify.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notify_drain.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_openapi.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_operational_defaults.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_overlap_fence.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_overlap_predict.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_packaged_deploy_units.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_parentage.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_paste_landed.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_pipeline.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_plan_followup_approve_plan_command.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_plan_followup_pr_command.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_plan_followup_review_command.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_plan_only.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_plan_parser.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_platform_paths.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_portal_bridge.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_portal_config.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_portal_sync.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_pr_body_lint.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_prereqs.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_production_db_guard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_progress.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_provider_seam.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_providers.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_providers_config_labels.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_providers_pty.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_quiet_hours.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_quiet_hours_store_2146.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reap_merged_sessions.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reap_stale_interactive_tick.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reconcile.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reconcile_branch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reconcile_completions.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reconcile_merges.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reconcile_no_agent_record.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reconcile_tick.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reconcile_usage_limit_done.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_refine_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_release_cordon_2101.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_release_cordon_deadlock_2240.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_release_propagate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_release_unified_1242.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_release_verify.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_release_window.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_remote_auto_prune.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_remote_interactive_reaper.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_repo_edit_2220.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_repo_graph_fleet_2237.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_repo_onboard_2220.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_report_result_push.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reports.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_retry.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_retry_advisory_1606.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_retry_type_1636.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_revalidate.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_end_review_without_verdict.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_parse_failure_diagnostic.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_reaffirm.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_verdict_backstop.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_verdict_override_audit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_verdict_relay.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_zero_commits.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_scoped_review_wiring.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_scorecard.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_serve.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_serve_app_board_trim.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_session.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_slice_issue_attribution.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_smoke.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_smoke_live_checkout_restore.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_smoke_workflow.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_spend_ceiling.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_spend_ceiling_coordinator.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_split.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_split_work.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_stage_projection.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_stalled_pipeline.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_state.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_state_review_findings_daemon.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_status_fleet_footer.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_stop_1567.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_stuck.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_terminal_command.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_test_author.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_test_chat.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_test_orchestrator.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_test_report.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_test_verdict_parsing.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_test_verdict_transcript_floor.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_thin_client_board_audit.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_thin_client_config_load_1080.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_thin_client_daemon_routing_906.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_tmux_host.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_tmux_session.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_transcript_floor.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_usage.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_usage_limits.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_usage_rollup.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_venv_live_install_2121.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_version_single_source.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_watch.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_worker_events.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_worker_image_pin_sync.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_worker_safety.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_worker_test_scoping.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_worktree.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_worktree_rmtree_chokepoint.py +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/Cargo.lock +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/Cargo.toml +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/cargo-config-local-quadraui.toml.example +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/audit.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/chat.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/data.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/dialogs.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/doc_tabs.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/drive.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/drive_queue.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/escalation.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/fleet_health.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/fleet_sessions.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/fleet_terminals.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/format.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/milestone_dag.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/msv.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/pipeline.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/plans.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/reports.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/sessions.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/settings_ui.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/sidebar.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/terminal.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/types.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/workspace.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/bin/gtk.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/commands.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/lib.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/main.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/settings.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/tests/cli.rs +0 -0
- {code_coordinator-0.5.154 → code_coordinator-0.5.158}/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
|
|
@@ -795,6 +803,7 @@ tests/acceptance/ms-51/mocks/home-active.html
|
|
|
795
803
|
tests/acceptance/ms-65/board_tabs_2282.rs
|
|
796
804
|
tests/acceptance/ms-65/board_tabs_close_2283.rs
|
|
797
805
|
tests/acceptance/ms-65/contract.md
|
|
806
|
+
tests/acceptance/ms-65/detail_substate_2285.rs
|
|
798
807
|
tests/acceptance/ms-65/manifest.yml
|
|
799
808
|
tests/acceptance/ms-65/pipeline_tabs_2284.rs
|
|
800
809
|
tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen
|
{code_coordinator-0.5.154 → code_coordinator-0.5.158}/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",
|
|
@@ -436,6 +443,7 @@
|
|
|
436
443
|
"tests/acceptance/ms-65/board_tabs_2282.rs",
|
|
437
444
|
"tests/acceptance/ms-65/board_tabs_close_2283.rs",
|
|
438
445
|
"tests/acceptance/ms-65/contract.md",
|
|
446
|
+
"tests/acceptance/ms-65/detail_substate_2285.rs",
|
|
439
447
|
"tests/acceptance/ms-65/manifest.yml",
|
|
440
448
|
"tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen",
|
|
441
449
|
"tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen",
|
|
@@ -486,6 +494,7 @@
|
|
|
486
494
|
"tests/test_agent_reap.py",
|
|
487
495
|
"tests/test_agent_repos_and_pull.py",
|
|
488
496
|
"tests/test_agent_restart_services_endpoint.py",
|
|
497
|
+
"tests/test_agent_skills_self_heal.py",
|
|
489
498
|
"tests/test_agent_startup_diagnostics.py",
|
|
490
499
|
"tests/test_agent_update.py",
|
|
491
500
|
"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.")
|
|
@@ -1920,6 +1920,51 @@ def _retry_backoff_reason(
|
|
|
1920
1920
|
)
|
|
1921
1921
|
|
|
1922
1922
|
|
|
1923
|
+
def _augment_backoff_reason(previous_reason: str, backoff_text: str) -> str:
|
|
1924
|
+
"""#2411: fold the real death cause into the mechanical backoff text.
|
|
1925
|
+
|
|
1926
|
+
Before this, `plan_tick`'s waiting walk persisted `_retry_backoff_reason`'s
|
|
1927
|
+
return value as the entry's WHOLE `last_reason` on every tick it spent
|
|
1928
|
+
backing off — the purely mechanical "next attempt permitted in Ns"
|
|
1929
|
+
sentence, deliberately recomputed fresh each tick (see that function's
|
|
1930
|
+
docstring). That overwrote the rich `own_reason` (plus the #2273
|
|
1931
|
+
dispatch note and #2363 empty-branch note) `_reconcile_running`'s
|
|
1932
|
+
`retry` branch had just recorded at the moment of death — visible for
|
|
1933
|
+
exactly one tick, then gone. An operator reading `coord drive-queue
|
|
1934
|
+
list` — or anything else that reads `last_reason`, like `coord
|
|
1935
|
+
drive-queue diagnose` — saw only the spacing text and had no live way to
|
|
1936
|
+
tell WHY the entry kept dying, only that it would try again later.
|
|
1937
|
+
|
|
1938
|
+
Fix: keep the FIRST LINE of whatever reason is already on record — the
|
|
1939
|
+
real cause, written once at death — and put the fresh backoff sentence
|
|
1940
|
+
on a second line under it. `last_reason` was already documented as
|
|
1941
|
+
"possibly multi-line" (see `_ROW_CAUSE_MAX_CHARS`'s comment in
|
|
1942
|
+
`coord.commands.drive_queue`) precisely so a summary render can show
|
|
1943
|
+
line one on the row and the full text on the `last:` continuation line
|
|
1944
|
+
— this reuses that convention rather than inventing a new field or
|
|
1945
|
+
column.
|
|
1946
|
+
|
|
1947
|
+
Using only the first line (not the full previous text) keeps this
|
|
1948
|
+
idempotent across ticks: called again next tick against ITS OWN
|
|
1949
|
+
two-line output, the first line is still the original cause, never
|
|
1950
|
+
last tick's backoff sentence, so the stored text never grows past two
|
|
1951
|
+
lines no matter how many ticks the entry spends backing off.
|
|
1952
|
+
|
|
1953
|
+
Falls back to *backoff_text* alone when there is nothing to keep — a
|
|
1954
|
+
row with no prior `last_reason` (a fresh entry, or one hand-built in a
|
|
1955
|
+
test) — which is exactly today's pre-#2411 text for that case.
|
|
1956
|
+
"""
|
|
1957
|
+
stripped = previous_reason.strip()
|
|
1958
|
+
if not stripped:
|
|
1959
|
+
return backoff_text
|
|
1960
|
+
base = stripped.splitlines()[0]
|
|
1961
|
+
# 3-space continuation indent — the same convention `coord/drive.py`'s
|
|
1962
|
+
# own multi-line exit reasons already use for their "inspect: coord log
|
|
1963
|
+
# ..." follow-up lines, so a combined reason reads as one paragraph
|
|
1964
|
+
# rather than a mismatched second line flush against the left margin.
|
|
1965
|
+
return f"{base}\n {backoff_text}"
|
|
1966
|
+
|
|
1967
|
+
|
|
1923
1968
|
def _reconcile_running(
|
|
1924
1969
|
entry: QueueEntry,
|
|
1925
1970
|
board: BoardView,
|
|
@@ -3054,6 +3099,15 @@ def plan_tick(
|
|
|
3054
3099
|
# this falls back to (the post-review #2273 "moving target" fix).
|
|
3055
3100
|
effective_attempts: dict[str, int] = {e.key: e.attempts for e in ordered}
|
|
3056
3101
|
retry_backoff_at_map: dict[str, float] = {}
|
|
3102
|
+
# #2411: same "prefer this tick's fresh write" rule, this time for the
|
|
3103
|
+
# real death cause `_backoff_reason` below folds into its combined
|
|
3104
|
+
# `last_reason` — see `_augment_backoff_reason`. Without this, an entry
|
|
3105
|
+
# that dies and hits the backoff check in the SAME tick (step 1 above,
|
|
3106
|
+
# then step 4 below) would combine against its STALE pre-tick
|
|
3107
|
+
# `entry.last_reason` — one tick behind the death this walk just
|
|
3108
|
+
# recorded — instead of the `own_reason`-based text `reconcile.reason`
|
|
3109
|
+
# carries fresh, right below.
|
|
3110
|
+
effective_last_reason: dict[str, str] = {e.key: e.last_reason for e in ordered}
|
|
3057
3111
|
|
|
3058
3112
|
reconciles: list[Reconcile] = []
|
|
3059
3113
|
blocked: list[Blocked] = []
|
|
@@ -3112,6 +3166,14 @@ def plan_tick(
|
|
|
3112
3166
|
# for a backoff check reached later in this SAME tick, not the
|
|
3113
3167
|
# entry's stale pre-tick `retry_backoff_at`.
|
|
3114
3168
|
retry_backoff_at_map[entry.key] = now
|
|
3169
|
+
if reconcile.outcome == "retry":
|
|
3170
|
+
# #2411: `reconcile.reason` IS `reconcile.updates["last_reason"]`
|
|
3171
|
+
# (the retry branch of `_reconcile_running` builds both from the
|
|
3172
|
+
# same local `reason`) — the real death cause, `own_reason` plus
|
|
3173
|
+
# its #2273 dispatch-note/#2363 empty-branch-note. Recorded here
|
|
3174
|
+
# so a backoff check reached later in THIS tick combines against
|
|
3175
|
+
# it instead of the pre-tick `entry.last_reason`.
|
|
3176
|
+
effective_last_reason[entry.key] = reconcile.reason
|
|
3115
3177
|
if block is not None:
|
|
3116
3178
|
blocked.append(block)
|
|
3117
3179
|
states[entry.key] = STATE_BLOCKED
|
|
@@ -3535,14 +3597,25 @@ def plan_tick(
|
|
|
3535
3597
|
see that function's docstring for why neither can be read straight
|
|
3536
3598
|
off `candidate`, and why the fallback is `candidate.retry_backoff_at`
|
|
3537
3599
|
rather than `candidate.reason_at`.
|
|
3600
|
+
|
|
3601
|
+
#2411: the mechanical spacing text that comes back is never returned
|
|
3602
|
+
bare — :func:`_augment_backoff_reason` folds in the real death cause
|
|
3603
|
+
(resolved the same "prefer this tick's fresh write" way, off
|
|
3604
|
+
`effective_last_reason`) so both call sites below — the report-only
|
|
3605
|
+
dry-run pass and the persisted `last_reason` write — get the combined
|
|
3606
|
+
text for free, with no change needed at either site.
|
|
3538
3607
|
"""
|
|
3539
|
-
|
|
3608
|
+
backoff = _retry_backoff_reason(
|
|
3540
3609
|
candidate,
|
|
3541
3610
|
board.facts(candidate.key),
|
|
3542
3611
|
now,
|
|
3543
3612
|
effective_attempts.get(candidate.key, candidate.attempts),
|
|
3544
3613
|
retry_backoff_at_map.get(candidate.key, candidate.retry_backoff_at),
|
|
3545
3614
|
)
|
|
3615
|
+
if not backoff:
|
|
3616
|
+
return ""
|
|
3617
|
+
previous = effective_last_reason.get(candidate.key, candidate.last_reason)
|
|
3618
|
+
return _augment_backoff_reason(previous, backoff)
|
|
3546
3619
|
|
|
3547
3620
|
# #1972's projection of per-repo occupancy AS THE WALK SEES IT: the board
|
|
3548
3621
|
# reading above, plus this tick's own launch once one is chosen. Kept
|
|
@@ -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.
|