code-coordinator 0.5.46__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.46/.claude/commands/board.md +17 -0
- code_coordinator-0.5.46/.claude/commands/complete-session.md +31 -0
- code_coordinator-0.5.46/.claude/commands/coordinator.md +278 -0
- code_coordinator-0.5.46/.githooks/_lib.sh +42 -0
- code_coordinator-0.5.46/.githooks/post-checkout +90 -0
- code_coordinator-0.5.46/.githooks/post-commit +19 -0
- code_coordinator-0.5.46/.githooks/post-merge +19 -0
- code_coordinator-0.5.46/.github/workflows/auto-release.yml +263 -0
- code_coordinator-0.5.46/.github/workflows/cargo-test.yml +64 -0
- code_coordinator-0.5.46/.github/workflows/publish.yml +440 -0
- code_coordinator-0.5.46/.github/workflows/release-tui.yml +239 -0
- code_coordinator-0.5.46/.github/workflows/test.yml +280 -0
- code_coordinator-0.5.46/.gitignore +20 -0
- code_coordinator-0.5.46/CLAUDE.md +207 -0
- code_coordinator-0.5.46/GOAL.md +149 -0
- code_coordinator-0.5.46/LICENSE +110 -0
- code_coordinator-0.5.46/MANIFEST.in +5 -0
- code_coordinator-0.5.46/PKG-INFO +625 -0
- code_coordinator-0.5.46/README.md +585 -0
- code_coordinator-0.5.46/code_coordinator.egg-info/PKG-INFO +625 -0
- code_coordinator-0.5.46/code_coordinator.egg-info/SOURCES.txt +774 -0
- code_coordinator-0.5.46/code_coordinator.egg-info/dependency_links.txt +1 -0
- code_coordinator-0.5.46/code_coordinator.egg-info/entry_points.txt +2 -0
- code_coordinator-0.5.46/code_coordinator.egg-info/requires.txt +25 -0
- code_coordinator-0.5.46/code_coordinator.egg-info/scm_file_list.json +756 -0
- code_coordinator-0.5.46/code_coordinator.egg-info/scm_version.json +8 -0
- code_coordinator-0.5.46/code_coordinator.egg-info/top_level.txt +1 -0
- code_coordinator-0.5.46/coord/__init__.py +176 -0
- code_coordinator-0.5.46/coord/_board_mapping.py +229 -0
- code_coordinator-0.5.46/coord/acceptance.py +468 -0
- code_coordinator-0.5.46/coord/acceptance_drivers.py +632 -0
- code_coordinator-0.5.46/coord/agent.py +7517 -0
- code_coordinator-0.5.46/coord/agent_app.py +1555 -0
- code_coordinator-0.5.46/coord/agent_update.py +417 -0
- code_coordinator-0.5.46/coord/agents/opencode/.gitignore +13 -0
- code_coordinator-0.5.46/coord/agents/opencode/agents/work.md +129 -0
- code_coordinator-0.5.46/coord/agents/opencode/routing.jsonc +49 -0
- code_coordinator-0.5.46/coord/audit.py +301 -0
- code_coordinator-0.5.46/coord/auto_loop.py +1440 -0
- code_coordinator-0.5.46/coord/board_bool_guard.py +72 -0
- code_coordinator-0.5.46/coord/board_service.py +141 -0
- code_coordinator-0.5.46/coord/board_wire.py +309 -0
- code_coordinator-0.5.46/coord/brain.py +581 -0
- code_coordinator-0.5.46/coord/branch_model.py +214 -0
- code_coordinator-0.5.46/coord/cargo_cache.py +258 -0
- code_coordinator-0.5.46/coord/ci_github.py +386 -0
- code_coordinator-0.5.46/coord/ci_store.py +560 -0
- code_coordinator-0.5.46/coord/claim.py +353 -0
- code_coordinator-0.5.46/coord/cli.py +454 -0
- code_coordinator-0.5.46/coord/client.py +610 -0
- code_coordinator-0.5.46/coord/commands/__init__.py +1 -0
- code_coordinator-0.5.46/coord/commands/_common.py +329 -0
- code_coordinator-0.5.46/coord/commands/acceptance.py +916 -0
- code_coordinator-0.5.46/coord/commands/agent_ops.py +1339 -0
- code_coordinator-0.5.46/coord/commands/audit.py +131 -0
- code_coordinator-0.5.46/coord/commands/chat.py +320 -0
- code_coordinator-0.5.46/coord/commands/dispatch.py +1780 -0
- code_coordinator-0.5.46/coord/commands/dispatch_workers.py +4894 -0
- code_coordinator-0.5.46/coord/commands/drive.py +616 -0
- code_coordinator-0.5.46/coord/commands/drive_queue.py +1203 -0
- code_coordinator-0.5.46/coord/commands/gate_a.py +217 -0
- code_coordinator-0.5.46/coord/commands/gates.py +89 -0
- code_coordinator-0.5.46/coord/commands/issues.py +681 -0
- code_coordinator-0.5.46/coord/commands/lifecycle.py +513 -0
- code_coordinator-0.5.46/coord/commands/merge.py +1900 -0
- code_coordinator-0.5.46/coord/commands/milestone.py +2081 -0
- code_coordinator-0.5.46/coord/commands/plan_followup.py +1243 -0
- code_coordinator-0.5.46/coord/commands/plans.py +156 -0
- code_coordinator-0.5.46/coord/commands/release.py +2232 -0
- code_coordinator-0.5.46/coord/commands/report.py +341 -0
- code_coordinator-0.5.46/coord/commands/review.py +1523 -0
- code_coordinator-0.5.46/coord/commands/scorecard.py +252 -0
- code_coordinator-0.5.46/coord/commands/sessions.py +1930 -0
- code_coordinator-0.5.46/coord/commands/setup.py +576 -0
- code_coordinator-0.5.46/coord/commands/status.py +2089 -0
- code_coordinator-0.5.46/coord/commands/terminal.py +385 -0
- code_coordinator-0.5.46/coord/commands/test_gate.py +775 -0
- code_coordinator-0.5.46/coord/commands/tui.py +288 -0
- code_coordinator-0.5.46/coord/comments.py +718 -0
- code_coordinator-0.5.46/coord/config.py +3032 -0
- code_coordinator-0.5.46/coord/conflict_fix.py +633 -0
- code_coordinator-0.5.46/coord/dao.py +483 -0
- code_coordinator-0.5.46/coord/dashboard/__init__.py +0 -0
- code_coordinator-0.5.46/coord/dashboard/fixture.py +376 -0
- code_coordinator-0.5.46/coord/dashboard/index.html +658 -0
- code_coordinator-0.5.46/coord/dashboard/server.py +1894 -0
- code_coordinator-0.5.46/coord/dashboard/terminal.py +382 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/.gitignore +9 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/components.json +17 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/dist/assets/Gallery-da3qNiIw.js +71 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +32 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/dist/assets/Terminal-skVFCxPU.js +63 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/dist/assets/index-DltfZR5f.js +184 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +1 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +2 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/dist/icons/icon.svg +5 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/dist/index.html +38 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/dist/manifest.webmanifest +1 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/dist/sw.js +1 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/dist/workbox-e4022e15.js +1 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +75 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/e2e/deep-link.spec.ts +172 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/e2e/fixtureServer.ts +155 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +113 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/e2e/realtime.spec.ts +238 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/e2e/shell.spec.ts +309 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/e2e/smoke.spec.ts +191 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/e2e/terminal.spec.ts +420 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/e2e/theme.spec.ts +138 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/eslint.config.js +20 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/index.html +37 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +144 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/package-lock.json +10584 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/package.json +63 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/playwright.acceptance.config.ts +166 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/playwright.config.ts +93 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/postcss.config.js +6 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/public/icons/icon.svg +5 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/App.tsx +140 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/api/client.ts +199 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/api/generated.ts +176 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +52 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/Detail.tsx +800 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/Gallery.tsx +341 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/Home.tsx +435 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +280 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/PanelHeader.tsx +59 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/PipelineCard.tsx +168 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/SessionCard.tsx +99 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/SessionDetail.tsx +140 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/SessionsList.tsx +81 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/Terminal.tsx +376 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +81 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +680 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +83 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +271 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +197 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +143 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +106 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +504 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ui/badge.tsx +41 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ui/button.tsx +54 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ui/card.tsx +55 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ui/dialog.tsx +99 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +189 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ui/empty-state.tsx +35 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ui/sheet.tsx +123 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ui/skeleton.tsx +9 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ui/tabs.tsx +55 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +78 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +20 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ui/toast.tsx +123 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ui/toaster.tsx +30 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ui/tooltip.tsx +26 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/components/ui/use-toast.ts +134 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/index.css +210 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/lib/pipeline.ts +29 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/lib/utils.ts +6 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/main.tsx +46 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +112 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +189 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +255 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/realtime/connection.ts +227 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/realtime/events.ts +100 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +92 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/routes/paths.ts +92 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/shell/ActivityRail.tsx +335 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/shell/AppShell.tsx +276 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/shell/ComingSoon.tsx +33 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +26 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +33 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/shell/ShellLayout.tsx +147 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/shell/StatusBar.tsx +46 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +520 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +95 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +40 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/shell/breakpoints.ts +87 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/shell/railItems.ts +105 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/shell/shellState.ts +174 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/shell/useRegionFocus.ts +95 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/test-setup.ts +41 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/src/vite-env.d.ts +2 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/tailwind.config.js +140 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/tsconfig.json +25 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/tsconfig.node.json +11 -0
- code_coordinator-0.5.46/coord/dashboard/webapp/vite.config.ts +71 -0
- code_coordinator-0.5.46/coord/db.py +1076 -0
- code_coordinator-0.5.46/coord/dead_end.py +332 -0
- code_coordinator-0.5.46/coord/deploy/README.md +33 -0
- code_coordinator-0.5.46/coord/deploy/coord-agent.service +89 -0
- code_coordinator-0.5.46/coord/deploy/coord-db-backup.service +60 -0
- code_coordinator-0.5.46/coord/deploy/coord-db-backup.sh +74 -0
- code_coordinator-0.5.46/coord/deploy/coord-db-backup.timer +18 -0
- code_coordinator-0.5.46/coord/deploy/coord-drive-queue.service +117 -0
- code_coordinator-0.5.46/coord/deploy/coord-drive-queue.timer +39 -0
- code_coordinator-0.5.46/coord/deploy/coord-notify.service +48 -0
- code_coordinator-0.5.46/coord/deploy/coord-notify.timer +24 -0
- code_coordinator-0.5.46/coord/deploy/coord-release-propagate.service +83 -0
- code_coordinator-0.5.46/coord/deploy/coord-release-propagate.timer +38 -0
- code_coordinator-0.5.46/coord/deploy/coord-release-window.service +119 -0
- code_coordinator-0.5.46/coord/deploy/coord-release-window.timer +36 -0
- code_coordinator-0.5.46/coord/deploy/coord-serve.service +82 -0
- code_coordinator-0.5.46/coord/deploy/coord-web-dist-build.service +43 -0
- code_coordinator-0.5.46/coord/deploy/coord-web-dist-build.timer +36 -0
- code_coordinator-0.5.46/coord/deploy/coord-web.service +125 -0
- code_coordinator-0.5.46/coord/deploy_manifest.py +80 -0
- code_coordinator-0.5.46/coord/deploy_units.py +384 -0
- code_coordinator-0.5.46/coord/deps.py +115 -0
- code_coordinator-0.5.46/coord/diagnose.py +1623 -0
- code_coordinator-0.5.46/coord/dispatch.py +1009 -0
- code_coordinator-0.5.46/coord/dist_name.py +123 -0
- code_coordinator-0.5.46/coord/drive.py +3101 -0
- code_coordinator-0.5.46/coord/drive_queue.py +2298 -0
- code_coordinator-0.5.46/coord/drive_state.py +870 -0
- code_coordinator-0.5.46/coord/events.py +381 -0
- code_coordinator-0.5.46/coord/failure_class.py +914 -0
- code_coordinator-0.5.46/coord/filelock.py +168 -0
- code_coordinator-0.5.46/coord/fleet_config_health.py +300 -0
- code_coordinator-0.5.46/coord/freshness.py +206 -0
- code_coordinator-0.5.46/coord/gate_a.py +469 -0
- code_coordinator-0.5.46/coord/gate_b.py +411 -0
- code_coordinator-0.5.46/coord/gate_snapshot.py +385 -0
- code_coordinator-0.5.46/coord/gates.py +582 -0
- code_coordinator-0.5.46/coord/github_ops.py +1954 -0
- code_coordinator-0.5.46/coord/goal.py +125 -0
- code_coordinator-0.5.46/coord/graph_health.py +348 -0
- code_coordinator-0.5.46/coord/health/__init__.py +69 -0
- code_coordinator-0.5.46/coord/health/aggregate.py +129 -0
- code_coordinator-0.5.46/coord/health/checks/__init__.py +13 -0
- code_coordinator-0.5.46/coord/health/checks/agent_install.py +280 -0
- code_coordinator-0.5.46/coord/health/checks/cargo_targets.py +171 -0
- code_coordinator-0.5.46/coord/health/checks/claude_binary.py +65 -0
- code_coordinator-0.5.46/coord/health/checks/deploy_lane_facts.py +458 -0
- code_coordinator-0.5.46/coord/health/checks/disk.py +99 -0
- code_coordinator-0.5.46/coord/health/checks/fleet_board.py +89 -0
- code_coordinator-0.5.46/coord/health/checks/fleet_deploy_lanes.py +469 -0
- code_coordinator-0.5.46/coord/health/checks/fleet_phantom.py +69 -0
- code_coordinator-0.5.46/coord/health/checks/fleet_unit_drift.py +151 -0
- code_coordinator-0.5.46/coord/health/checks/graph.py +192 -0
- code_coordinator-0.5.46/coord/health/checks/plan_usage.py +88 -0
- code_coordinator-0.5.46/coord/health/checks/repo_state.py +161 -0
- code_coordinator-0.5.46/coord/health/checks/spawned_coord.py +465 -0
- code_coordinator-0.5.46/coord/health/checks/timer_active.py +254 -0
- code_coordinator-0.5.46/coord/health/checks/toolchain.py +547 -0
- code_coordinator-0.5.46/coord/health/checks/unit_drift.py +648 -0
- code_coordinator-0.5.46/coord/health/checks/unit_enablement.py +171 -0
- code_coordinator-0.5.46/coord/health/checks/worktrees.py +96 -0
- code_coordinator-0.5.46/coord/health/cli.py +121 -0
- code_coordinator-0.5.46/coord/health/context.py +106 -0
- code_coordinator-0.5.46/coord/health/fleet_snapshot.py +477 -0
- code_coordinator-0.5.46/coord/health/models.py +250 -0
- code_coordinator-0.5.46/coord/health/pypi.py +231 -0
- code_coordinator-0.5.46/coord/health/registry.py +240 -0
- code_coordinator-0.5.46/coord/health/render.py +82 -0
- code_coordinator-0.5.46/coord/health/units.py +60 -0
- code_coordinator-0.5.46/coord/hooks.py +106 -0
- code_coordinator-0.5.46/coord/housekeeping.py +204 -0
- code_coordinator-0.5.46/coord/interactive.py +4286 -0
- code_coordinator-0.5.46/coord/issue_store.py +1496 -0
- code_coordinator-0.5.46/coord/liveness_auditor.py +293 -0
- code_coordinator-0.5.46/coord/machine_pause.py +755 -0
- code_coordinator-0.5.46/coord/merge_queue.py +4681 -0
- code_coordinator-0.5.46/coord/milestone_chat.py +600 -0
- code_coordinator-0.5.46/coord/milestone_dispatch.py +943 -0
- code_coordinator-0.5.46/coord/milestone_gate.py +709 -0
- code_coordinator-0.5.46/coord/milestone_order.py +840 -0
- code_coordinator-0.5.46/coord/mock_author.py +334 -0
- code_coordinator-0.5.46/coord/models.py +891 -0
- code_coordinator-0.5.46/coord/network.py +269 -0
- code_coordinator-0.5.46/coord/new_issue_chat.py +229 -0
- code_coordinator-0.5.46/coord/notify.py +3226 -0
- code_coordinator-0.5.46/coord/openapi.py +404 -0
- code_coordinator-0.5.46/coord/overlap_fence.py +133 -0
- code_coordinator-0.5.46/coord/parentage.py +200 -0
- code_coordinator-0.5.46/coord/parentage_github.py +58 -0
- code_coordinator-0.5.46/coord/pipeline.py +481 -0
- code_coordinator-0.5.46/coord/plan_parser.py +266 -0
- code_coordinator-0.5.46/coord/plans.py +543 -0
- code_coordinator-0.5.46/coord/platform_paths.py +43 -0
- code_coordinator-0.5.46/coord/pr_body_lint.py +67 -0
- code_coordinator-0.5.46/coord/prereqs.py +533 -0
- code_coordinator-0.5.46/coord/progress.py +425 -0
- code_coordinator-0.5.46/coord/providers/__init__.py +683 -0
- code_coordinator-0.5.46/coord/providers/base.py +218 -0
- code_coordinator-0.5.46/coord/providers/claude.py +284 -0
- code_coordinator-0.5.46/coord/providers/claude_pty.py +610 -0
- code_coordinator-0.5.46/coord/providers/opencode.py +896 -0
- code_coordinator-0.5.46/coord/reconcile.py +2233 -0
- code_coordinator-0.5.46/coord/refine_chat.py +485 -0
- code_coordinator-0.5.46/coord/release_cordon.py +525 -0
- code_coordinator-0.5.46/coord/release_propagate.py +1176 -0
- code_coordinator-0.5.46/coord/release_verify.py +777 -0
- code_coordinator-0.5.46/coord/release_window.py +322 -0
- code_coordinator-0.5.46/coord/reports.py +1643 -0
- code_coordinator-0.5.46/coord/revalidate.py +1101 -0
- code_coordinator-0.5.46/coord/review.py +3317 -0
- code_coordinator-0.5.46/coord/scorecard.py +484 -0
- code_coordinator-0.5.46/coord/serve_app.py +7192 -0
- code_coordinator-0.5.46/coord/skills/update-issue/SKILL.md +93 -0
- code_coordinator-0.5.46/coord/smoke.py +1030 -0
- code_coordinator-0.5.46/coord/split_work.py +210 -0
- code_coordinator-0.5.46/coord/stage_projection.py +650 -0
- code_coordinator-0.5.46/coord/state.py +5720 -0
- code_coordinator-0.5.46/coord/test_author.py +1064 -0
- code_coordinator-0.5.46/coord/test_chat.py +352 -0
- code_coordinator-0.5.46/coord/test_orchestrator.py +494 -0
- code_coordinator-0.5.46/coord/test_report.py +178 -0
- code_coordinator-0.5.46/coord/tui_release.py +271 -0
- code_coordinator-0.5.46/coord/usage.py +753 -0
- code_coordinator-0.5.46/coord/usage_limits.py +358 -0
- code_coordinator-0.5.46/coord/usage_rollup.py +709 -0
- code_coordinator-0.5.46/coord/worker_events.py +954 -0
- code_coordinator-0.5.46/coordinator.example.yml +325 -0
- code_coordinator-0.5.46/deploy/coord-agent.service +89 -0
- code_coordinator-0.5.46/deploy/coord-db-backup.service +60 -0
- code_coordinator-0.5.46/deploy/coord-db-backup.sh +74 -0
- code_coordinator-0.5.46/deploy/coord-db-backup.timer +18 -0
- code_coordinator-0.5.46/deploy/coord-drive-queue.service +117 -0
- code_coordinator-0.5.46/deploy/coord-drive-queue.timer +39 -0
- code_coordinator-0.5.46/deploy/coord-notify.service +48 -0
- code_coordinator-0.5.46/deploy/coord-notify.timer +24 -0
- code_coordinator-0.5.46/deploy/coord-release-propagate.service +83 -0
- code_coordinator-0.5.46/deploy/coord-release-propagate.timer +38 -0
- code_coordinator-0.5.46/deploy/coord-release-window.service +119 -0
- code_coordinator-0.5.46/deploy/coord-release-window.timer +36 -0
- code_coordinator-0.5.46/deploy/coord-serve.service +82 -0
- code_coordinator-0.5.46/deploy/coord-web-dist-build.service +43 -0
- code_coordinator-0.5.46/deploy/coord-web-dist-build.sh +355 -0
- code_coordinator-0.5.46/deploy/coord-web-dist-build.timer +36 -0
- code_coordinator-0.5.46/deploy/coord-web-rollback.sh +124 -0
- code_coordinator-0.5.46/deploy/coord-web.service +125 -0
- code_coordinator-0.5.46/deploy/node-shim.sh +80 -0
- code_coordinator-0.5.46/docs/AGENT_OPERATIONS.md +1589 -0
- code_coordinator-0.5.46/docs/ARCHITECTURE.md +264 -0
- code_coordinator-0.5.46/docs/ARCH_SECURITY_GATES.md +348 -0
- code_coordinator-0.5.46/docs/COCKPIT.md +147 -0
- code_coordinator-0.5.46/docs/CONTROL_CENTER.md +432 -0
- code_coordinator-0.5.46/docs/CROSS_PLATFORM.md +285 -0
- code_coordinator-0.5.46/docs/CUSTOMER_PORTAL.md +292 -0
- code_coordinator-0.5.46/docs/DRIVE_QUEUE.md +538 -0
- code_coordinator-0.5.46/docs/EPHEMERAL_WORKERS.md +191 -0
- code_coordinator-0.5.46/docs/FORGE_MIGRATION.md +236 -0
- code_coordinator-0.5.46/docs/GRAPHIFY_SETUP.md +165 -0
- code_coordinator-0.5.46/docs/ISSUE_GUIDANCE.md +101 -0
- code_coordinator-0.5.46/docs/MAC_MINI.md +216 -0
- code_coordinator-0.5.46/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +224 -0
- code_coordinator-0.5.46/docs/OPENCODE_VERIFICATION.md +591 -0
- code_coordinator-0.5.46/docs/OPERATING_GOTCHAS.md +789 -0
- code_coordinator-0.5.46/docs/ORACLE_LOOP.md +399 -0
- code_coordinator-0.5.46/docs/PHONE_WEBAPP.md +707 -0
- code_coordinator-0.5.46/docs/PIPELINE_V2.md +200 -0
- code_coordinator-0.5.46/docs/PLATFORM_EVOLUTION.md +306 -0
- code_coordinator-0.5.46/docs/SECOND_BACKEND.md +151 -0
- code_coordinator-0.5.46/docs/STORE_SERVICE.md +186 -0
- code_coordinator-0.5.46/docs/TEST_FIRST_BUG_LANE.md +185 -0
- code_coordinator-0.5.46/docs/WEB_CONTROL_CENTER.md +275 -0
- code_coordinator-0.5.46/docs/mocks/web/README.md +48 -0
- code_coordinator-0.5.46/docs/mocks/web/_tokens.css +92 -0
- code_coordinator-0.5.46/docs/mocks/web/issue-detail.html +495 -0
- code_coordinator-0.5.46/docs/mocks/web/pipeline-narrow.html +489 -0
- code_coordinator-0.5.46/docs/mocks/web/pipeline-wide.html +676 -0
- code_coordinator-0.5.46/graphify-out/.gitignore +9 -0
- code_coordinator-0.5.46/install-agent.sh +233 -0
- code_coordinator-0.5.46/pyproject.toml +175 -0
- code_coordinator-0.5.46/scripts/audit_review_verdict_overrides.py +181 -0
- code_coordinator-0.5.46/scripts/azure-workers/bootstrap-shared.sh +147 -0
- code_coordinator-0.5.46/scripts/azure-workers/build-worker-image.sh +243 -0
- code_coordinator-0.5.46/scripts/azure-workers/coordinator-machine.py +182 -0
- code_coordinator-0.5.46/scripts/azure-workers/epic-down.sh +184 -0
- code_coordinator-0.5.46/scripts/azure-workers/epic-up.sh +418 -0
- code_coordinator-0.5.46/scripts/azure-workers/preflight.sh +262 -0
- code_coordinator-0.5.46/scripts/azure-workers/provision-worker.sh +229 -0
- code_coordinator-0.5.46/scripts/azure-workers/scrub-and-generalize.sh +83 -0
- code_coordinator-0.5.46/scripts/azure-workers/tailnet-acl.hujson +80 -0
- code_coordinator-0.5.46/scripts/azure-workers/verify-github-token.sh +156 -0
- code_coordinator-0.5.46/scripts/codegen.py +278 -0
- code_coordinator-0.5.46/scripts/coord-test-runner.sh +500 -0
- code_coordinator-0.5.46/scripts/drive-batch.sh +494 -0
- code_coordinator-0.5.46/scripts/gen_board_fixture.py +216 -0
- code_coordinator-0.5.46/scripts/next_release_tag.py +446 -0
- code_coordinator-0.5.46/scripts/run_tests_without_gh.sh +69 -0
- code_coordinator-0.5.46/scripts/smoke_437_interactive.py +266 -0
- code_coordinator-0.5.46/scripts/verify_878_review_capture.py +260 -0
- code_coordinator-0.5.46/scripts/verify_release_published.py +385 -0
- code_coordinator-0.5.46/scripts/verify_release_wheel.py +196 -0
- code_coordinator-0.5.46/setup.cfg +4 -0
- code_coordinator-0.5.46/tests/SMOKE_SET.md +146 -0
- code_coordinator-0.5.46/tests/__init__.py +0 -0
- code_coordinator-0.5.46/tests/acceptance/ms-33/audit_1039.rs +430 -0
- code_coordinator-0.5.46/tests/acceptance/ms-33/contract.md +276 -0
- code_coordinator-0.5.46/tests/acceptance/ms-33/manifest.yml +26 -0
- code_coordinator-0.5.46/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +40 -0
- code_coordinator-0.5.46/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +40 -0
- code_coordinator-0.5.46/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +40 -0
- code_coordinator-0.5.46/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +40 -0
- code_coordinator-0.5.46/tests/acceptance/ms-37/conftest.py +105 -0
- code_coordinator-0.5.46/tests/acceptance/ms-37/contract.md +98 -0
- code_coordinator-0.5.46/tests/acceptance/ms-37/manifest.yml +67 -0
- code_coordinator-0.5.46/tests/acceptance/ms-37/test_usage_cli_1115.py +333 -0
- code_coordinator-0.5.46/tests/acceptance/ms-37/test_usage_core_1118.py +392 -0
- code_coordinator-0.5.46/tests/acceptance/ms-38/contract.md +356 -0
- code_coordinator-0.5.46/tests/acceptance/ms-38/manifest.yml +77 -0
- code_coordinator-0.5.46/tests/acceptance/ms-38/mocks/plans-base.screen +40 -0
- code_coordinator-0.5.46/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +40 -0
- code_coordinator-0.5.46/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +40 -0
- code_coordinator-0.5.46/tests/acceptance/ms-38/mocks/plans-palette.screen +40 -0
- code_coordinator-0.5.46/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +40 -0
- code_coordinator-0.5.46/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +40 -0
- code_coordinator-0.5.46/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +40 -0
- code_coordinator-0.5.46/tests/acceptance/ms-38/plans_detail_1122.rs +417 -0
- code_coordinator-0.5.46/tests/acceptance/ms-38/plans_help_1124.rs +399 -0
- code_coordinator-0.5.46/tests/acceptance/ms-38/plans_rightclick_1123.rs +380 -0
- code_coordinator-0.5.46/tests/acceptance/ms-51/contract.md +155 -0
- code_coordinator-0.5.46/tests/acceptance/ms-51/home-active-extended.spec.ts +411 -0
- code_coordinator-0.5.46/tests/acceptance/ms-51/home-active.spec.ts +411 -0
- code_coordinator-0.5.46/tests/acceptance/ms-51/manifest.yml +90 -0
- code_coordinator-0.5.46/tests/acceptance/ms-51/mocks/home-active.html +212 -0
- code_coordinator-0.5.46/tests/acceptance/ms-51/tsconfig.json +39 -0
- code_coordinator-0.5.46/tests/acceptance/ms-example/mocks/home-active.html +268 -0
- code_coordinator-0.5.46/tests/conftest.py +371 -0
- code_coordinator-0.5.46/tests/fixtures/board-pipeline-basic.json +327 -0
- code_coordinator-0.5.46/tests/fixtures/board-pipeline-terminal-gates.json +139 -0
- code_coordinator-0.5.46/tests/fixtures/opencode_run_failure_sample.jsonl +5 -0
- code_coordinator-0.5.46/tests/fixtures/opencode_run_sample.jsonl +12 -0
- code_coordinator-0.5.46/tests/fixtures/playwright/all_pass.json +253 -0
- code_coordinator-0.5.46/tests/fixtures/playwright/global_setup_crash.json +84 -0
- code_coordinator-0.5.46/tests/fixtures/playwright/mixed_fail.json +259 -0
- code_coordinator-0.5.46/tests/fixtures/playwright/retry_then_pass.json +195 -0
- code_coordinator-0.5.46/tests/fixtures/playwright/retry_then_pass.junit.xml +11 -0
- code_coordinator-0.5.46/tests/fixtures/playwright/skip.json +258 -0
- code_coordinator-0.5.46/tests/fixtures/playwright/truncated.json +154 -0
- code_coordinator-0.5.46/tests/fixtures/test_report/cargo_compile_error.txt +33 -0
- code_coordinator-0.5.46/tests/fixtures/test_report/cargo_multi_target_failures.txt +63 -0
- code_coordinator-0.5.46/tests/fixtures/test_report/cargo_no_parseable_failures.txt +9 -0
- code_coordinator-0.5.46/tests/fixtures/test_report/pytest_collection_error.txt +16 -0
- code_coordinator-0.5.46/tests/fixtures/test_report/pytest_error_string_in_body.txt +12 -0
- code_coordinator-0.5.46/tests/fixtures/test_report/pytest_internal_error.txt +55 -0
- code_coordinator-0.5.46/tests/fixtures/test_report/pytest_mixed_failures.txt +25 -0
- code_coordinator-0.5.46/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
- code_coordinator-0.5.46/tests/test_acceptance.py +518 -0
- code_coordinator-0.5.46/tests/test_acceptance_drivers.py +666 -0
- code_coordinator-0.5.46/tests/test_agent.py +4923 -0
- code_coordinator-0.5.46/tests/test_agent_api_error.py +349 -0
- code_coordinator-0.5.46/tests/test_agent_app.py +730 -0
- code_coordinator-0.5.46/tests/test_agent_branch_base.py +641 -0
- code_coordinator-0.5.46/tests/test_agent_branch_capture.py +391 -0
- code_coordinator-0.5.46/tests/test_agent_config_free_1712.py +247 -0
- code_coordinator-0.5.46/tests/test_agent_deploy_units_endpoint.py +208 -0
- code_coordinator-0.5.46/tests/test_agent_dirty_worktree.py +545 -0
- code_coordinator-0.5.46/tests/test_agent_graph_self_heal.py +435 -0
- code_coordinator-0.5.46/tests/test_agent_health_h3.py +120 -0
- code_coordinator-0.5.46/tests/test_agent_push_failure.py +261 -0
- code_coordinator-0.5.46/tests/test_agent_reap.py +493 -0
- code_coordinator-0.5.46/tests/test_agent_repos_and_pull.py +228 -0
- code_coordinator-0.5.46/tests/test_agent_restart_services_endpoint.py +141 -0
- code_coordinator-0.5.46/tests/test_agent_startup_diagnostics.py +129 -0
- code_coordinator-0.5.46/tests/test_agent_update.py +2607 -0
- code_coordinator-0.5.46/tests/test_agent_update_bluegreen.py +549 -0
- code_coordinator-0.5.46/tests/test_agent_usage_limit.py +316 -0
- code_coordinator-0.5.46/tests/test_agent_zero_commit.py +418 -0
- code_coordinator-0.5.46/tests/test_approve_reject_plan.py +669 -0
- code_coordinator-0.5.46/tests/test_approve_usage_gate.py +135 -0
- code_coordinator-0.5.46/tests/test_assignment_already_recorded_daemon.py +88 -0
- code_coordinator-0.5.46/tests/test_audit_log.py +446 -0
- code_coordinator-0.5.46/tests/test_audit_outcome.py +435 -0
- code_coordinator-0.5.46/tests/test_audit_query.py +136 -0
- code_coordinator-0.5.46/tests/test_auto_loop.py +2470 -0
- code_coordinator-0.5.46/tests/test_auto_release_publish_2035.py +522 -0
- code_coordinator-0.5.46/tests/test_base_checkout_restore.py +507 -0
- code_coordinator-0.5.46/tests/test_board_cap_762.py +268 -0
- code_coordinator-0.5.46/tests/test_board_fixture.py +153 -0
- code_coordinator-0.5.46/tests/test_board_read_path.py +1286 -0
- code_coordinator-0.5.46/tests/test_board_service.py +171 -0
- code_coordinator-0.5.46/tests/test_board_state.py +1696 -0
- code_coordinator-0.5.46/tests/test_board_wire.py +306 -0
- code_coordinator-0.5.46/tests/test_brain.py +1050 -0
- code_coordinator-0.5.46/tests/test_branch_model.py +202 -0
- code_coordinator-0.5.46/tests/test_build_worker_image_env_update.py +177 -0
- code_coordinator-0.5.46/tests/test_cargo_cache.py +450 -0
- code_coordinator-0.5.46/tests/test_ci_acceptance_gate_1950.py +114 -0
- code_coordinator-0.5.46/tests/test_ci_store.py +1446 -0
- code_coordinator-0.5.46/tests/test_claim.py +756 -0
- code_coordinator-0.5.46/tests/test_cli_acceptance.py +1624 -0
- code_coordinator-0.5.46/tests/test_cli_assign.py +2389 -0
- code_coordinator-0.5.46/tests/test_cli_assign_interactive_oracle_gate.py +252 -0
- code_coordinator-0.5.46/tests/test_cli_assign_interactive_remote.py +1726 -0
- code_coordinator-0.5.46/tests/test_cli_assign_provider.py +571 -0
- code_coordinator-0.5.46/tests/test_cli_audit.py +84 -0
- code_coordinator-0.5.46/tests/test_cli_chat_continue.py +324 -0
- code_coordinator-0.5.46/tests/test_cli_diagnose_config_provenance.py +156 -0
- code_coordinator-0.5.46/tests/test_cli_diagnose_graph.py +125 -0
- code_coordinator-0.5.46/tests/test_cli_doctor.py +689 -0
- code_coordinator-0.5.46/tests/test_cli_doctor_config_free_1801.py +444 -0
- code_coordinator-0.5.46/tests/test_cli_doctor_config_mismatch_1712.py +213 -0
- code_coordinator-0.5.46/tests/test_cli_drive.py +170 -0
- code_coordinator-0.5.46/tests/test_cli_drive_queue.py +1509 -0
- code_coordinator-0.5.46/tests/test_cli_escalate.py +162 -0
- code_coordinator-0.5.46/tests/test_cli_fix_headless_review.py +577 -0
- code_coordinator-0.5.46/tests/test_cli_gate_a.py +163 -0
- code_coordinator-0.5.46/tests/test_cli_install_drift.py +255 -0
- code_coordinator-0.5.46/tests/test_cli_install_skills.py +283 -0
- code_coordinator-0.5.46/tests/test_cli_issue_create_label.py +427 -0
- code_coordinator-0.5.46/tests/test_cli_issue_reopen.py +251 -0
- code_coordinator-0.5.46/tests/test_cli_merge.py +2918 -0
- code_coordinator-0.5.46/tests/test_cli_milestone_assign.py +617 -0
- code_coordinator-0.5.46/tests/test_cli_milestone_capture.py +181 -0
- code_coordinator-0.5.46/tests/test_cli_milestone_chat_add_child.py +139 -0
- code_coordinator-0.5.46/tests/test_cli_milestone_dispatch.py +635 -0
- code_coordinator-0.5.46/tests/test_cli_milestone_gate_b.py +215 -0
- code_coordinator-0.5.46/tests/test_cli_milestone_gate_c.py +209 -0
- code_coordinator-0.5.46/tests/test_cli_milestone_order.py +1187 -0
- code_coordinator-0.5.46/tests/test_cli_milestone_remove_and_issue_close.py +601 -0
- code_coordinator-0.5.46/tests/test_cli_milestone_ship.py +302 -0
- code_coordinator-0.5.46/tests/test_cli_network.py +588 -0
- code_coordinator-0.5.46/tests/test_cli_new_issue_chat.py +110 -0
- code_coordinator-0.5.46/tests/test_cli_plans.py +782 -0
- code_coordinator-0.5.46/tests/test_cli_pull_artifact.py +537 -0
- code_coordinator-0.5.46/tests/test_cli_queue.py +156 -0
- code_coordinator-0.5.46/tests/test_cli_reattach_sessions.py +1316 -0
- code_coordinator-0.5.46/tests/test_cli_refine_board.py +113 -0
- code_coordinator-0.5.46/tests/test_cli_release_preflight.py +141 -0
- code_coordinator-0.5.46/tests/test_cli_release_propagate.py +1298 -0
- code_coordinator-0.5.46/tests/test_cli_release_window.py +596 -0
- code_coordinator-0.5.46/tests/test_cli_scorecard.py +307 -0
- code_coordinator-0.5.46/tests/test_cli_set_review_findings.py +175 -0
- code_coordinator-0.5.46/tests/test_cli_status_advisory_terminal.py +141 -0
- code_coordinator-0.5.46/tests/test_cli_status_merge_queue.py +107 -0
- code_coordinator-0.5.46/tests/test_cli_status_provider.py +190 -0
- code_coordinator-0.5.46/tests/test_cli_status_review_finalizing.py +80 -0
- code_coordinator-0.5.46/tests/test_cli_status_test_failed_tag.py +150 -0
- code_coordinator-0.5.46/tests/test_cli_status_usage_limit.py +121 -0
- code_coordinator-0.5.46/tests/test_cli_sync_comments_873.py +96 -0
- code_coordinator-0.5.46/tests/test_cli_test_plan.py +529 -0
- code_coordinator-0.5.46/tests/test_cli_track.py +108 -0
- code_coordinator-0.5.46/tests/test_cli_tui_update.py +465 -0
- code_coordinator-0.5.46/tests/test_cli_wait.py +253 -0
- code_coordinator-0.5.46/tests/test_client_base_install.py +242 -0
- code_coordinator-0.5.46/tests/test_comments.py +216 -0
- code_coordinator-0.5.46/tests/test_completion_summary.py +354 -0
- code_coordinator-0.5.46/tests/test_config.py +1509 -0
- code_coordinator-0.5.46/tests/test_config_acceptance.py +826 -0
- code_coordinator-0.5.46/tests/test_config_audit.py +86 -0
- code_coordinator-0.5.46/tests/test_config_pricing.py +147 -0
- code_coordinator-0.5.46/tests/test_config_usage_gate.py +90 -0
- code_coordinator-0.5.46/tests/test_conflict_fix.py +694 -0
- code_coordinator-0.5.46/tests/test_conflict_fix_semantic.py +504 -0
- code_coordinator-0.5.46/tests/test_coord_test.py +809 -0
- code_coordinator-0.5.46/tests/test_coord_test_runner_routing.py +193 -0
- code_coordinator-0.5.46/tests/test_coord_test_runner_toolchain.py +313 -0
- code_coordinator-0.5.46/tests/test_coord_web_sse_restart_live.py +165 -0
- code_coordinator-0.5.46/tests/test_coordinator_machine.py +222 -0
- code_coordinator-0.5.46/tests/test_cross_platform_imports.py +136 -0
- code_coordinator-0.5.46/tests/test_dashboard.py +1755 -0
- code_coordinator-0.5.46/tests/test_dashboard_fixture.py +644 -0
- code_coordinator-0.5.46/tests/test_dashboard_terminal.py +905 -0
- code_coordinator-0.5.46/tests/test_dashboard_terminal_live.py +108 -0
- code_coordinator-0.5.46/tests/test_db.py +839 -0
- code_coordinator-0.5.46/tests/test_dead_end.py +408 -0
- code_coordinator-0.5.46/tests/test_deploy_coord_db_backup.py +299 -0
- code_coordinator-0.5.46/tests/test_deploy_coord_web_dist.py +403 -0
- code_coordinator-0.5.46/tests/test_deploy_coord_web_rollback.py +209 -0
- code_coordinator-0.5.46/tests/test_deploy_drive_queue_unit.py +58 -0
- code_coordinator-0.5.46/tests/test_deploy_manifest.py +97 -0
- code_coordinator-0.5.46/tests/test_deploy_units_lane.py +349 -0
- code_coordinator-0.5.46/tests/test_deploy_web_unit.py +81 -0
- code_coordinator-0.5.46/tests/test_deps.py +300 -0
- code_coordinator-0.5.46/tests/test_diagnose.py +2214 -0
- code_coordinator-0.5.46/tests/test_dispatch.py +2752 -0
- code_coordinator-0.5.46/tests/test_dispatch_target_validation.py +531 -0
- code_coordinator-0.5.46/tests/test_dist_name.py +351 -0
- code_coordinator-0.5.46/tests/test_done_housekeeping.py +393 -0
- code_coordinator-0.5.46/tests/test_drive.py +3871 -0
- code_coordinator-0.5.46/tests/test_drive_queue.py +1912 -0
- code_coordinator-0.5.46/tests/test_drive_state.py +1184 -0
- code_coordinator-0.5.46/tests/test_drive_tmux.py +532 -0
- code_coordinator-0.5.46/tests/test_epic_up_capability_detection.py +280 -0
- code_coordinator-0.5.46/tests/test_epic_up_down_symlinked_config_1887.py +287 -0
- code_coordinator-0.5.46/tests/test_epic_up_image_provenance.py +148 -0
- code_coordinator-0.5.46/tests/test_errors.py +195 -0
- code_coordinator-0.5.46/tests/test_events.py +439 -0
- code_coordinator-0.5.46/tests/test_failure_class.py +759 -0
- code_coordinator-0.5.46/tests/test_filelock.py +155 -0
- code_coordinator-0.5.46/tests/test_finalize_interactive_exit_test_verdict.py +229 -0
- code_coordinator-0.5.46/tests/test_fix_of_force_override.py +92 -0
- code_coordinator-0.5.46/tests/test_fleet_config_health.py +343 -0
- code_coordinator-0.5.46/tests/test_fleet_health_probes.py +777 -0
- code_coordinator-0.5.46/tests/test_fleet_health_snapshot.py +478 -0
- code_coordinator-0.5.46/tests/test_freshness.py +267 -0
- code_coordinator-0.5.46/tests/test_gate_a.py +771 -0
- code_coordinator-0.5.46/tests/test_gate_b.py +329 -0
- code_coordinator-0.5.46/tests/test_gate_snapshot_staleness.py +108 -0
- code_coordinator-0.5.46/tests/test_gates.py +716 -0
- code_coordinator-0.5.46/tests/test_generated_types_fixture.py +36 -0
- code_coordinator-0.5.46/tests/test_github_ops.py +1807 -0
- code_coordinator-0.5.46/tests/test_goal.py +143 -0
- code_coordinator-0.5.46/tests/test_graph_health.py +542 -0
- code_coordinator-0.5.46/tests/test_handoff.py +645 -0
- code_coordinator-0.5.46/tests/test_health_checks.py +775 -0
- code_coordinator-0.5.46/tests/test_health_cli.py +290 -0
- code_coordinator-0.5.46/tests/test_health_cli_graph.py +137 -0
- code_coordinator-0.5.46/tests/test_health_config.py +237 -0
- code_coordinator-0.5.46/tests/test_health_context.py +240 -0
- code_coordinator-0.5.46/tests/test_health_deploy_lane_facts.py +453 -0
- code_coordinator-0.5.46/tests/test_health_incident_regression.py +283 -0
- code_coordinator-0.5.46/tests/test_health_pypi.py +198 -0
- code_coordinator-0.5.46/tests/test_health_registry.py +441 -0
- code_coordinator-0.5.46/tests/test_health_timer_active.py +236 -0
- code_coordinator-0.5.46/tests/test_health_toolchain.py +568 -0
- code_coordinator-0.5.46/tests/test_health_unit_drift.py +751 -0
- code_coordinator-0.5.46/tests/test_health_unit_enablement.py +174 -0
- code_coordinator-0.5.46/tests/test_hooks.py +322 -0
- code_coordinator-0.5.46/tests/test_human_attended_437.py +652 -0
- code_coordinator-0.5.46/tests/test_init.py +966 -0
- code_coordinator-0.5.46/tests/test_integration.py +361 -0
- code_coordinator-0.5.46/tests/test_interactive_briefing_echo.py +391 -0
- code_coordinator-0.5.46/tests/test_interactive_prefill_state.py +440 -0
- code_coordinator-0.5.46/tests/test_interactive_session_relaunch.py +551 -0
- code_coordinator-0.5.46/tests/test_interactive_test_verdict_backstop.py +647 -0
- code_coordinator-0.5.46/tests/test_interactive_worktree.py +1127 -0
- code_coordinator-0.5.46/tests/test_issue_store_seam.py +2078 -0
- code_coordinator-0.5.46/tests/test_liveness_auditor.py +326 -0
- code_coordinator-0.5.46/tests/test_liveness_notify.py +424 -0
- code_coordinator-0.5.46/tests/test_machine_pause.py +291 -0
- code_coordinator-0.5.46/tests/test_merge_queue.py +7716 -0
- code_coordinator-0.5.46/tests/test_merge_verify.py +1262 -0
- code_coordinator-0.5.46/tests/test_milestone_chat.py +636 -0
- code_coordinator-0.5.46/tests/test_milestone_dispatch.py +965 -0
- code_coordinator-0.5.46/tests/test_milestone_gate.py +727 -0
- code_coordinator-0.5.46/tests/test_milestone_order.py +889 -0
- code_coordinator-0.5.46/tests/test_milestone_seam.py +377 -0
- code_coordinator-0.5.46/tests/test_mock_author.py +519 -0
- code_coordinator-0.5.46/tests/test_model_tiering.py +1635 -0
- code_coordinator-0.5.46/tests/test_models.py +140 -0
- code_coordinator-0.5.46/tests/test_models_config_labels.py +184 -0
- code_coordinator-0.5.46/tests/test_needs_attention.py +609 -0
- code_coordinator-0.5.46/tests/test_network.py +250 -0
- code_coordinator-0.5.46/tests/test_new_issue_chat.py +210 -0
- code_coordinator-0.5.46/tests/test_next_release_tag.py +335 -0
- code_coordinator-0.5.46/tests/test_no_direct_gh_calls.py +112 -0
- code_coordinator-0.5.46/tests/test_node_shim.py +263 -0
- code_coordinator-0.5.46/tests/test_notify.py +1606 -0
- code_coordinator-0.5.46/tests/test_notify_drain.py +1041 -0
- code_coordinator-0.5.46/tests/test_openapi.py +264 -0
- code_coordinator-0.5.46/tests/test_operational_defaults.py +182 -0
- code_coordinator-0.5.46/tests/test_overlap_fence.py +156 -0
- code_coordinator-0.5.46/tests/test_packaged_deploy_units.py +89 -0
- code_coordinator-0.5.46/tests/test_parentage.py +287 -0
- code_coordinator-0.5.46/tests/test_paste_landed.py +289 -0
- code_coordinator-0.5.46/tests/test_pipeline.py +1789 -0
- code_coordinator-0.5.46/tests/test_plan_followup_approve_plan_command.py +146 -0
- code_coordinator-0.5.46/tests/test_plan_followup_pr_command.py +213 -0
- code_coordinator-0.5.46/tests/test_plan_followup_review_command.py +249 -0
- code_coordinator-0.5.46/tests/test_plan_only.py +463 -0
- code_coordinator-0.5.46/tests/test_plan_parser.py +598 -0
- code_coordinator-0.5.46/tests/test_platform_paths.py +95 -0
- code_coordinator-0.5.46/tests/test_pr_body_lint.py +62 -0
- code_coordinator-0.5.46/tests/test_prereqs.py +518 -0
- code_coordinator-0.5.46/tests/test_production_db_guard.py +63 -0
- code_coordinator-0.5.46/tests/test_progress.py +476 -0
- code_coordinator-0.5.46/tests/test_provider_seam.py +387 -0
- code_coordinator-0.5.46/tests/test_providers.py +2414 -0
- code_coordinator-0.5.46/tests/test_providers_config_labels.py +96 -0
- code_coordinator-0.5.46/tests/test_providers_pty.py +894 -0
- code_coordinator-0.5.46/tests/test_quiet_hours.py +302 -0
- code_coordinator-0.5.46/tests/test_reap_merged_sessions.py +775 -0
- code_coordinator-0.5.46/tests/test_reap_stale_interactive_tick.py +192 -0
- code_coordinator-0.5.46/tests/test_reconcile_branch.py +448 -0
- code_coordinator-0.5.46/tests/test_reconcile_completions.py +755 -0
- code_coordinator-0.5.46/tests/test_reconcile_merges.py +1440 -0
- code_coordinator-0.5.46/tests/test_reconcile_usage_limit_done.py +186 -0
- code_coordinator-0.5.46/tests/test_refine_chat.py +177 -0
- code_coordinator-0.5.46/tests/test_release_cordon_2101.py +708 -0
- code_coordinator-0.5.46/tests/test_release_propagate.py +846 -0
- code_coordinator-0.5.46/tests/test_release_unified_1242.py +395 -0
- code_coordinator-0.5.46/tests/test_release_verify.py +1086 -0
- code_coordinator-0.5.46/tests/test_release_window.py +163 -0
- code_coordinator-0.5.46/tests/test_remote_auto_prune.py +769 -0
- code_coordinator-0.5.46/tests/test_remote_interactive_reaper.py +697 -0
- code_coordinator-0.5.46/tests/test_report_result_push.py +162 -0
- code_coordinator-0.5.46/tests/test_reports.py +2540 -0
- code_coordinator-0.5.46/tests/test_retry.py +191 -0
- code_coordinator-0.5.46/tests/test_retry_advisory_1606.py +140 -0
- code_coordinator-0.5.46/tests/test_retry_type_1636.py +250 -0
- code_coordinator-0.5.46/tests/test_revalidate.py +1767 -0
- code_coordinator-0.5.46/tests/test_review.py +4460 -0
- code_coordinator-0.5.46/tests/test_review_end_review_without_verdict.py +163 -0
- code_coordinator-0.5.46/tests/test_review_parse_failure_diagnostic.py +801 -0
- code_coordinator-0.5.46/tests/test_review_reaffirm.py +444 -0
- code_coordinator-0.5.46/tests/test_review_state.py +990 -0
- code_coordinator-0.5.46/tests/test_review_verdict_backstop.py +425 -0
- code_coordinator-0.5.46/tests/test_review_verdict_override_audit.py +159 -0
- code_coordinator-0.5.46/tests/test_review_verdict_relay.py +627 -0
- code_coordinator-0.5.46/tests/test_review_zero_commits.py +216 -0
- code_coordinator-0.5.46/tests/test_scoped_review_wiring.py +95 -0
- code_coordinator-0.5.46/tests/test_scorecard.py +469 -0
- code_coordinator-0.5.46/tests/test_serve.py +6561 -0
- code_coordinator-0.5.46/tests/test_serve_app_board_trim.py +134 -0
- code_coordinator-0.5.46/tests/test_session.py +183 -0
- code_coordinator-0.5.46/tests/test_slice_issue_attribution.py +359 -0
- code_coordinator-0.5.46/tests/test_smoke.py +1932 -0
- code_coordinator-0.5.46/tests/test_smoke_live_checkout_restore.py +530 -0
- code_coordinator-0.5.46/tests/test_smoke_workflow.py +881 -0
- code_coordinator-0.5.46/tests/test_split.py +266 -0
- code_coordinator-0.5.46/tests/test_split_work.py +398 -0
- code_coordinator-0.5.46/tests/test_stage_projection.py +561 -0
- code_coordinator-0.5.46/tests/test_stalled_pipeline.py +1652 -0
- code_coordinator-0.5.46/tests/test_state.py +1944 -0
- code_coordinator-0.5.46/tests/test_state_review_findings_daemon.py +124 -0
- code_coordinator-0.5.46/tests/test_status_fleet_footer.py +217 -0
- code_coordinator-0.5.46/tests/test_stop_1567.py +276 -0
- code_coordinator-0.5.46/tests/test_stuck.py +609 -0
- code_coordinator-0.5.46/tests/test_terminal_command.py +464 -0
- code_coordinator-0.5.46/tests/test_test_author.py +923 -0
- code_coordinator-0.5.46/tests/test_test_chat.py +294 -0
- code_coordinator-0.5.46/tests/test_test_orchestrator.py +643 -0
- code_coordinator-0.5.46/tests/test_test_report.py +208 -0
- code_coordinator-0.5.46/tests/test_test_verdict_parsing.py +157 -0
- code_coordinator-0.5.46/tests/test_test_verdict_transcript_floor.py +169 -0
- code_coordinator-0.5.46/tests/test_thin_client_board_audit.py +393 -0
- code_coordinator-0.5.46/tests/test_thin_client_config_load_1080.py +163 -0
- code_coordinator-0.5.46/tests/test_thin_client_daemon_routing_906.py +672 -0
- code_coordinator-0.5.46/tests/test_tmux_host.py +570 -0
- code_coordinator-0.5.46/tests/test_tmux_session.py +745 -0
- code_coordinator-0.5.46/tests/test_transcript_floor.py +474 -0
- code_coordinator-0.5.46/tests/test_usage.py +1374 -0
- code_coordinator-0.5.46/tests/test_usage_limits.py +276 -0
- code_coordinator-0.5.46/tests/test_usage_rollup.py +617 -0
- code_coordinator-0.5.46/tests/test_version_single_source.py +544 -0
- code_coordinator-0.5.46/tests/test_watch.py +662 -0
- code_coordinator-0.5.46/tests/test_worker_events.py +810 -0
- code_coordinator-0.5.46/tests/test_worker_image_pin_sync.py +147 -0
- code_coordinator-0.5.46/tests/test_worker_safety.py +386 -0
- code_coordinator-0.5.46/tests/test_worktree.py +634 -0
- code_coordinator-0.5.46/tests/test_worktree_rmtree_chokepoint.py +382 -0
- code_coordinator-0.5.46/tui/Cargo.lock +3272 -0
- code_coordinator-0.5.46/tui/Cargo.toml +63 -0
- code_coordinator-0.5.46/tui/cargo-config-local-quadraui.toml.example +21 -0
- code_coordinator-0.5.46/tui/src/app/audit.rs +562 -0
- code_coordinator-0.5.46/tui/src/app/chat.rs +273 -0
- code_coordinator-0.5.46/tui/src/app/data.rs +3393 -0
- code_coordinator-0.5.46/tui/src/app/dialogs.rs +7172 -0
- code_coordinator-0.5.46/tui/src/app/drive.rs +1419 -0
- code_coordinator-0.5.46/tui/src/app/drive_queue.rs +3021 -0
- code_coordinator-0.5.46/tui/src/app/escalation.rs +306 -0
- code_coordinator-0.5.46/tui/src/app/events.rs +6557 -0
- code_coordinator-0.5.46/tui/src/app/fixtures.rs +730 -0
- code_coordinator-0.5.46/tui/src/app/fleet_health.rs +351 -0
- code_coordinator-0.5.46/tui/src/app/fleet_sessions.rs +474 -0
- code_coordinator-0.5.46/tui/src/app/fleet_terminals.rs +566 -0
- code_coordinator-0.5.46/tui/src/app/format.rs +315 -0
- code_coordinator-0.5.46/tui/src/app/milestone_dag.rs +1671 -0
- code_coordinator-0.5.46/tui/src/app/mod.rs +8200 -0
- code_coordinator-0.5.46/tui/src/app/msv.rs +140 -0
- code_coordinator-0.5.46/tui/src/app/pipeline.rs +7980 -0
- code_coordinator-0.5.46/tui/src/app/plans.rs +2241 -0
- code_coordinator-0.5.46/tui/src/app/render.rs +3621 -0
- code_coordinator-0.5.46/tui/src/app/reports.rs +1639 -0
- code_coordinator-0.5.46/tui/src/app/sessions.rs +3452 -0
- code_coordinator-0.5.46/tui/src/app/settings_ui.rs +2071 -0
- code_coordinator-0.5.46/tui/src/app/sidebar.rs +632 -0
- code_coordinator-0.5.46/tui/src/app/terminal.rs +1243 -0
- code_coordinator-0.5.46/tui/src/app/tests.rs +46592 -0
- code_coordinator-0.5.46/tui/src/app/types.rs +2282 -0
- code_coordinator-0.5.46/tui/src/app/workspace.rs +581 -0
- code_coordinator-0.5.46/tui/src/bin/gtk.rs +13 -0
- code_coordinator-0.5.46/tui/src/commands.rs +1138 -0
- code_coordinator-0.5.46/tui/src/lib.rs +20 -0
- code_coordinator-0.5.46/tui/src/main.rs +186 -0
- code_coordinator-0.5.46/tui/src/settings.rs +850 -0
- code_coordinator-0.5.46/tui/tests/acceptance.rs +41 -0
- code_coordinator-0.5.46/tui/tests/cli.rs +58 -0
- code_coordinator-0.5.46/tui/tests/fixtures/board_sample.json +350 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
Show the current assignment board.
|
|
2
|
+
|
|
3
|
+
1. Run `coord status` to get machine and assignment state.
|
|
4
|
+
2. Run `coord notify --dry-run 2>/dev/null || true` to check for pending notifications (if the flag exists, otherwise skip).
|
|
5
|
+
3. Format the output as a board:
|
|
6
|
+
|
|
7
|
+
```
|
|
8
|
+
| ID | Machine | Repo | Issue | Model | Status |
|
|
9
|
+
|----|---------|------|-------|-------|--------|
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
Include:
|
|
13
|
+
- All active assignments (running, pending)
|
|
14
|
+
- Recently completed assignments (last 5)
|
|
15
|
+
- Machine connectivity (online/offline)
|
|
16
|
+
|
|
17
|
+
If no assignments are active, say "Board is clear — all machines idle."
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
Gracefully end the current coordinator session.
|
|
2
|
+
|
|
3
|
+
1. **Check for active work:**
|
|
4
|
+
```bash
|
|
5
|
+
coord status
|
|
6
|
+
```
|
|
7
|
+
If assignments are still running, ask: "N assignments still running. Wait for them, stop them, or shut down anyway?"
|
|
8
|
+
- Wait: run `coord wait <id>` for each active assignment
|
|
9
|
+
- Stop: run `coord stop <id>` for each active assignment
|
|
10
|
+
- Shut down anyway: continue (workers keep running on the agent server)
|
|
11
|
+
|
|
12
|
+
2. **Post pending notifications:**
|
|
13
|
+
```bash
|
|
14
|
+
coord notify
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
3. **Run session shutdown:**
|
|
18
|
+
```bash
|
|
19
|
+
coord done
|
|
20
|
+
```
|
|
21
|
+
This pulls repos, runs housekeeping commands, and saves session state.
|
|
22
|
+
|
|
23
|
+
4. **Show session summary:**
|
|
24
|
+
```bash
|
|
25
|
+
coord session
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
5. **Check for unresolved work:**
|
|
29
|
+
If any assignments are failed or stuck, note: "N assignments failed/stuck and weren't resolved. They'll show up on next startup via `coord resume`."
|
|
30
|
+
|
|
31
|
+
6. Close with: "Session complete. Board state saved. Safe to close."
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
# Coordinator
|
|
2
|
+
|
|
3
|
+
You are the **coordinator**. You do NOT write code. You plan, route, and track work across machines using the `coord` CLI.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Startup
|
|
8
|
+
|
|
9
|
+
### 1. Check coord is installed
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
which coord
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
If not found: tell the user to run `pip install -e .` from the repo root and stop.
|
|
16
|
+
|
|
17
|
+
### 2. Check for coordinator.yml
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
ls coordinator.yml 2>/dev/null || echo "MISSING"
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
If missing:
|
|
24
|
+
- Say: "No coordinator.yml found. This looks like first-time setup."
|
|
25
|
+
- Ask: "Want me to run `coord init` to create one interactively?"
|
|
26
|
+
- If yes: run `coord init`
|
|
27
|
+
- If they already have a config elsewhere: suggest copying it here
|
|
28
|
+
- Either way, point to `coordinator.example.yml` as a reference
|
|
29
|
+
- Wait until coordinator.yml exists before continuing.
|
|
30
|
+
|
|
31
|
+
### 3. Validate config
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
coord config
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
If it errors, show the output and stop. Ask the user to fix the YAML before continuing.
|
|
38
|
+
|
|
39
|
+
### 4. Check for previous session
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
coord session
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
- **"clean_shutdown: false" or "Session in progress":** Say "Previous session didn't end cleanly. Reconciling..." then run `coord resume` to sync board with agents. Run `coord status` and summarize what completed while away and what's still running.
|
|
46
|
+
- **Clean last session:** Briefly note "Last session: N assignments, $X.XX cost" and continue.
|
|
47
|
+
- **"No session state found":** First time — continue normally.
|
|
48
|
+
|
|
49
|
+
**After `coord resume` — purge stale merge queue entries:**
|
|
50
|
+
|
|
51
|
+
`coord resume` enrolls every completed assignment into the merge queue, including old work for issues that are now closed. Running `coord merge` on those creates junk PRs. Always check first:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
# List pending merge queue issues
|
|
55
|
+
sqlite3 ~/.coord/coord.db "SELECT repo_name, issue_number FROM merge_queue WHERE state='pending' ORDER BY repo_name, issue_number;"
|
|
56
|
+
|
|
57
|
+
# For each repo, verify issues are still open (replace OWNER/REPO):
|
|
58
|
+
for n in $(sqlite3 ~/.coord/coord.db "SELECT issue_number FROM merge_queue WHERE repo_name='claude-coordinator' AND state='pending';"); do
|
|
59
|
+
state=$(gh issue view $n --repo JDonaghy/claude-coordinator --json state --jq '.state' 2>/dev/null)
|
|
60
|
+
[ "$state" != "OPEN" ] && echo "STALE: $n ($state)"
|
|
61
|
+
done
|
|
62
|
+
|
|
63
|
+
# Delete stale entries (replace issue numbers):
|
|
64
|
+
sqlite3 ~/.coord/coord.db "DELETE FROM merge_queue WHERE repo_name='claude-coordinator' AND issue_number IN (12,14,34,...);"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### 5. Check agent versions and machine state
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
coord status
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Check agent versions — version skew causes `--force` dispatch failures (400 errors):
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# Quick version check across all agents (replace hostnames from coordinator.yml):
|
|
77
|
+
for host in john-precision-3571 john-hp-elitebook-830-g7-notebook-pc dellserver; do
|
|
78
|
+
echo -n "$host: "
|
|
79
|
+
curl -s http://$host:7433/status | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('version','<0.3.0 (old)'))" 2>/dev/null || echo "unreachable"
|
|
80
|
+
done
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
If any agent is old (no `version` in /status, or version < current):
|
|
84
|
+
- **Agent >= 0.3.0**: `curl -X POST http://<host>:7433/update` — self-updates from PyPI and restarts
|
|
85
|
+
- **Agent < 0.3.0**: must SSH in — see README "Upgrading Agents"
|
|
86
|
+
|
|
87
|
+
**Symptom of version skew:** `coord assign ... --force` returns HTTP 400 "unexpected keyword argument 'fresh_branch'" from the agent.
|
|
88
|
+
|
|
89
|
+
### 6. Load open issues for each repo
|
|
90
|
+
|
|
91
|
+
Read `coordinator.yml` to discover the repos. For each repo with a `github:` field, run:
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
gh issue list --state open --repo <github>
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 7. Ask the user
|
|
98
|
+
|
|
99
|
+
- **Which machines are available today?** (list names from the config)
|
|
100
|
+
- **Any constraints?** (shared clone paths, no GTK builds, rate-limit concerns, etc.)
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Your responsibilities
|
|
105
|
+
|
|
106
|
+
- Read repos, machines, and dependency chains from `coordinator.yml` — never hardcode repo or machine names.
|
|
107
|
+
- Propose and track assignments on the board.
|
|
108
|
+
- Prevent conflicts: no two agents working on the same file set simultaneously.
|
|
109
|
+
- Respect dependency order: if repo A `depends_on` repo B, don't assign work in A while B has an active assignment.
|
|
110
|
+
- After each completion, check whether it unblocks downstream repos and propose the next assignment.
|
|
111
|
+
- Route smoke tests to machines with the required capabilities.
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Commands available to you
|
|
116
|
+
|
|
117
|
+
### Dispatch
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
coord assign <machine> <repo> <issue> [--model haiku|sonnet|opus] --briefing "..."
|
|
121
|
+
coord status # all machines + assignments
|
|
122
|
+
coord watch <id> # filtered live log (streaming)
|
|
123
|
+
coord wait <id> # block until assignment done
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Post-completion
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
coord test <id> # pull branch, run build + tests
|
|
130
|
+
coord test --passed <id> # record smoke test as passed
|
|
131
|
+
coord test --fail <id> --reason "" # record smoke test as failed
|
|
132
|
+
coord pr <id> # dispatch PR-creation worker
|
|
133
|
+
coord fix <id> [--guidance "..."] # dispatch fix-up worker (auto-escalates model)
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Recovery
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
coord resume-stuck <id> --guidance "..." # cancel stuck worker, dispatch continuation
|
|
140
|
+
coord retry <id> # re-dispatch failed assignment to another machine
|
|
141
|
+
coord stop <id> # cancel a running assignment
|
|
142
|
+
coord notify # post completions/failures/stuck to GitHub
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Inspection
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
coord log <id> [-f] # raw log output for an assignment
|
|
149
|
+
coord plan # brain proposes assignments (for reference)
|
|
150
|
+
coord merge [--dry-run] # process merge queue
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Model tiers
|
|
154
|
+
|
|
155
|
+
| Flag | Use for |
|
|
156
|
+
|------|---------|
|
|
157
|
+
| `--model haiku` | Docs, config, trivial single-file changes |
|
|
158
|
+
| `--model sonnet` | Standard features, bug fixes (default) |
|
|
159
|
+
| `--model opus` | Complex multi-file or architectural work |
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Board format
|
|
164
|
+
|
|
165
|
+
Maintain a running board in this conversation:
|
|
166
|
+
|
|
167
|
+
```
|
|
168
|
+
| ID | Machine | Repo | Issue | Status |
|
|
169
|
+
|----|---------|------|-------|--------|
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Update it after every dispatch, completion, failure, or status check.
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## After each completion
|
|
177
|
+
|
|
178
|
+
1. Run `coord watch <id>` or check `coord status` to confirm what landed.
|
|
179
|
+
2. If smoke testing is needed: `coord test <id>`
|
|
180
|
+
- Pass → `coord test --passed <id>` → `coord pr <id>`
|
|
181
|
+
- Fail → `coord test --fail <id> --reason "..."` → `coord fix <id> --guidance "..."`
|
|
182
|
+
3. Check `coordinator.yml` dependencies: does this completion unblock anything?
|
|
183
|
+
4. Propose the next assignment.
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## What NOT to do
|
|
188
|
+
|
|
189
|
+
- Don't write code.
|
|
190
|
+
- Don't open PRs directly — use `coord pr <id>` to dispatch a worker.
|
|
191
|
+
- Don't run builds yourself — use `coord test <id>`.
|
|
192
|
+
- Don't assign the same issue to two machines.
|
|
193
|
+
- Don't assign work to a repo while its upstream dependency (`depends_on`) has active work.
|
|
194
|
+
- Don't hardcode repo names, machine names, or GitHub orgs — read them from `coordinator.yml`.
|
|
195
|
+
- Don't run `coord merge` blindly after `coord resume` — purge stale merge queue entries first (see Startup step 4).
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## Common Pitfalls
|
|
200
|
+
|
|
201
|
+
### Merge queue is full of stale entries after crash recovery
|
|
202
|
+
`coord resume` enrolls all old completed assignments — even for issues closed months ago. Always check issue state before `coord merge`. See Startup step 4 for the purge procedure.
|
|
203
|
+
|
|
204
|
+
### `coord assign --force` returns HTTP 400
|
|
205
|
+
Agents older than 0.3.0 don't accept the `fresh_branch` field. Check versions (Startup step 5) and upgrade agents before using `--force`.
|
|
206
|
+
|
|
207
|
+
### PR exists but merge queue doesn't know about it
|
|
208
|
+
If a PR was opened via `coord pr` before it entered the merge queue, the DB `pr_number` column is NULL. `coord merge` will try to open a duplicate. Fix it:
|
|
209
|
+
```bash
|
|
210
|
+
sqlite3 ~/.coord/coord.db "UPDATE merge_queue SET pr_number=<N>, pr_url='https://github.com/OWNER/REPO/pull/<N>' WHERE repo_name='<repo>' AND issue_number=<issue>;"
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### `coord merge` fails with conflict
|
|
214
|
+
The branch conflicts with something that merged after the worker finished. Dispatch a rebase worker:
|
|
215
|
+
```bash
|
|
216
|
+
coord assign <machine> <repo> <issue> --force --briefing "Rebase branch <branch> onto main. git fetch origin, git checkout <branch>, git rebase origin/main, resolve conflicts, git push --force-with-lease. Do not change any logic."
|
|
217
|
+
```
|
|
218
|
+
Note: requires agents >= 0.3.0 for `--force` to work.
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
### 7. Epic / Parent-Issue Hygiene
|
|
222
|
+
|
|
223
|
+
When an issue is split into sub-issues (e.g. `coord split`, or a manual A/B/C/D...
|
|
224
|
+
breakdown), the parent becomes an **epic** — a tracking issue, not a dispatchable
|
|
225
|
+
one. `coord` has no distinct "epic" issue type: a Pipeline card is dispatchable
|
|
226
|
+
purely from having both the `coord` + `status:ready` labels, regardless of whether
|
|
227
|
+
the issue body has any diffable scope left. Leaving the parent `status:ready` risks
|
|
228
|
+
a Work session getting dispatched against an issue with nothing left to build.
|
|
229
|
+
|
|
230
|
+
- Once a parent's own actionable scope is fully delegated to sub-issues, pull it out
|
|
231
|
+
of "live": `coord backlog <repo> <issue>`. This keeps it `coord`-tracked and
|
|
232
|
+
visible on the board, but drops it to the Backlog column — no `[Go]` button, can't
|
|
233
|
+
be auto-dispatched by `coord plan`.
|
|
234
|
+
- Prefer a dedicated milestone for a tightly-coupled parent + sub-issue family over
|
|
235
|
+
lumping it into a large umbrella milestone — keeps milestone size a meaningful
|
|
236
|
+
progress signal (see #448 → milestone "GTK ShellApp Event Dispatch", carved out of
|
|
237
|
+
the ballooning "Platform-Neutral" milestone).
|
|
238
|
+
- The parent issue's body should say plainly **"Status: parent/tracking issue"** and
|
|
239
|
+
list the remaining open sub-issues, so anyone who lands on it — human or agent —
|
|
240
|
+
doesn't mistake it for actionable work.
|
|
241
|
+
|
|
242
|
+
**Every epic holds the plan AND a machine-readable work order — add this as a matter of
|
|
243
|
+
course.** The tracking issue is the single home for both the *intent* and the *dispatch
|
|
244
|
+
DAG*, so it can be read, chatted with, and drained by tooling. Whenever you create an epic
|
|
245
|
+
or carve a milestone, the tracking issue must carry, by default:
|
|
246
|
+
|
|
247
|
+
1. **The overall plan** — why the epic exists, how it decomposes into sub-issues, the
|
|
248
|
+
consumer/dependency structure, and the key decisions. Prose in the body.
|
|
249
|
+
2. **A `## Work order` block** — the dispatch DAG as checklist lines and NOTHING else under
|
|
250
|
+
that heading: `- [ ] #NNN {group: A}` for concurrent roots, `- [ ] #NNN {after: #X,#Y}`
|
|
251
|
+
for hard deps. Keep any ASCII DAG / step table in a SEPARATE section (e.g.
|
|
252
|
+
`## Dispatch plan`) — `coord milestone write-order` idempotently **replaces the entire
|
|
253
|
+
`## Work order` section**, so anything parked under that heading is destroyed on the next
|
|
254
|
+
rewrite (this is why #947 keeps its DAG in `docs/ORACLE_LOOP.md`).
|
|
255
|
+
3. **Runtime notes** per node: coord-live (editable install → immediate) vs. needs-release
|
|
256
|
+
(touches `agent.py`/worker prompts → PyPI + `coord agent update`) vs. coord-tui (local
|
|
257
|
+
`cargo build` + copy binary, no PyPI).
|
|
258
|
+
|
|
259
|
+
Use the milestone seam (#767/#770) — **never raw `gh` for the work order**:
|
|
260
|
+
|
|
261
|
+
```
|
|
262
|
+
coord milestone write-order <repo> <issue> --file lines.txt # validate (cycles, unknown
|
|
263
|
+
# after-targets, milestone membership) + idempotently splice the ## Work order block
|
|
264
|
+
coord milestone order <repo> <issue> # parse + print the ready frontier / blocked set
|
|
265
|
+
coord milestone dispatch <repo> <issue> # promote the ready frontier into the pipeline
|
|
266
|
+
coord milestone chat <repo> <issue> # dispatch a milestone-steward chat: an agent seeded
|
|
267
|
+
# with the epic body + open sub-issues that discusses next steps and (only on your
|
|
268
|
+
# confirmation) writes the ## Work order via write-order. THIS is "chat in the epic".
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
- **Cross-milestone `after:` edges are rejected** by the validator. A hard dep on an issue
|
|
272
|
+
in another milestone (e.g. #973's #972 needs #952, which lives in milestone #26) goes in
|
|
273
|
+
the step table / runtime notes as a prose prereq — NOT as a machine edge.
|
|
274
|
+
- To refine next steps *inside* an epic, dispatch `coord milestone chat` rather than editing
|
|
275
|
+
the body by hand — the steward proposes/updates the work order through the validated write
|
|
276
|
+
path and keeps the plan and the DAG in sync.
|
|
277
|
+
- Canonical examples: **#947** (oracle-loop, milestone #25) and **#973** (fleet session
|
|
278
|
+
substrate, milestone #28 — DAG/table in the epic's `## Dispatch plan` section).
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Shared helpers for the versioned hooks in this directory. Sourced, not run.
|
|
2
|
+
#
|
|
3
|
+
# WHY THESE HOOKS EXIST AT ALL: setting `core.hooksPath` REPLACES `.git/hooks`
|
|
4
|
+
# wholesale — git stops looking there entirely. graphify installs post-commit,
|
|
5
|
+
# post-checkout, and post-merge into `$GIT_COMMON_DIR/hooks/`, so every one of
|
|
6
|
+
# them needs a counterpart here or it is silently disabled. (Shipping only
|
|
7
|
+
# post-checkout killed graphify's commit/merge rebuilds on the operator box for
|
|
8
|
+
# about an hour — caught by `coord diagnose --graph` reporting the repo's own
|
|
9
|
+
# graph STALE right after a merge.)
|
|
10
|
+
#
|
|
11
|
+
# Each hook here is a thin shim: skip in linked worktrees, otherwise hand off
|
|
12
|
+
# to the machine-local graphify hook, which pins an absolute interpreter path
|
|
13
|
+
# and therefore must never be committed.
|
|
14
|
+
|
|
15
|
+
# Absolute path, whether git handed us a relative one or not.
|
|
16
|
+
gfy_abs() {
|
|
17
|
+
case "$1" in
|
|
18
|
+
/*) printf '%s\n' "$1" ;;
|
|
19
|
+
*) printf '%s\n' "$PWD/$1" ;;
|
|
20
|
+
esac
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
gfy_common_dir() {
|
|
24
|
+
gfy_abs "$(git rev-parse --git-common-dir 2>/dev/null || echo .git)"
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
# True in a linked worktree (its per-worktree git dir differs from the common one).
|
|
28
|
+
gfy_is_linked_worktree() {
|
|
29
|
+
_gd=$(gfy_abs "$(git rev-parse --git-dir 2>/dev/null || echo .git)")
|
|
30
|
+
[ "$_gd" != "$(gfy_common_dir)" ]
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
# Hand off to the machine-local hook of the same name, if present.
|
|
34
|
+
gfy_chain() {
|
|
35
|
+
_name=$1
|
|
36
|
+
shift
|
|
37
|
+
_local="$(gfy_common_dir)/hooks/$_name"
|
|
38
|
+
if [ -x "$_local" ]; then
|
|
39
|
+
exec "$_local" "$@"
|
|
40
|
+
fi
|
|
41
|
+
exit 0
|
|
42
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# Versioned post-checkout hook — enabled per machine with:
|
|
3
|
+
#
|
|
4
|
+
# git config core.hooksPath .githooks
|
|
5
|
+
#
|
|
6
|
+
# Purpose: make the graphify knowledge graph usable from a *linked worktree*.
|
|
7
|
+
#
|
|
8
|
+
# `graphify-out/` is gitignored by design (only `graphify-out/.gitignore` is
|
|
9
|
+
# tracked — the graph is multi-MB, rewritten on every commit, and would
|
|
10
|
+
# conflict across parallel worker branches). So `git worktree add` gives a
|
|
11
|
+
# worktree an EMPTY `graphify-out/`, and `graphify query` — which resolves
|
|
12
|
+
# `graphify-out/graph.json` strictly relative to cwd, with no upward walk and
|
|
13
|
+
# no `--graph` override — fails there. Every agent working in a worktree is
|
|
14
|
+
# graph-blind.
|
|
15
|
+
#
|
|
16
|
+
# Git runs this hook on `git worktree add` (verified: cwd = the new worktree,
|
|
17
|
+
# $3 = 1), which is why the bootstrap lives here rather than in coord's
|
|
18
|
+
# dispatch code: one implementation covers coord's remote `worktree add` call
|
|
19
|
+
# sites, Claude Code's `.claude/worktrees/`, review worktrees, and anything
|
|
20
|
+
# created by hand — on every machine, with no creator-side changes.
|
|
21
|
+
#
|
|
22
|
+
# The fix is symlinking the base checkout's graph *contents* into the
|
|
23
|
+
# worktree's `graphify-out/` — never replacing the directory itself. A
|
|
24
|
+
# worker branch differs from the base by a handful of files, so the base
|
|
25
|
+
# graph is the right answer for "where is X handled / what calls this"
|
|
26
|
+
# navigation. It is NOT the right answer for "did my change land" — the
|
|
27
|
+
# linked graph reflects the base checkout's HEAD, not the worktree's edits.
|
|
28
|
+
#
|
|
29
|
+
# #1617: an earlier version of this hook replaced the whole `graphify-out/`
|
|
30
|
+
# directory with a symlink to the base checkout. `git worktree add`
|
|
31
|
+
# materialises `graphify-out/` with only the tracked `.gitignore` checked
|
|
32
|
+
# out (everything else in the directory is untracked-and-ignored), and
|
|
33
|
+
# `rm -rf graphify-out` before `ln -sfn` deleted that tracked file out from
|
|
34
|
+
# under git — leaving `git status` showing a deleted tracked file *and* an
|
|
35
|
+
# untracked, machine-local, absolute-path symlink. Every worktree's own
|
|
36
|
+
# rescue-commit machinery then committed both. `graphify-out/.gitignore` is
|
|
37
|
+
# `*` / `!.gitignore`, so anything placed *inside* the directory is already
|
|
38
|
+
# invisible to git for free — the fix is to keep the directory (and its
|
|
39
|
+
# tracked `.gitignore`) and symlink each entry of the base graph into it
|
|
40
|
+
# instead of swapping the directory out from under git.
|
|
41
|
+
#
|
|
42
|
+
# See .githooks/_lib.sh for why every graphify hook needs a shim here.
|
|
43
|
+
|
|
44
|
+
set -u
|
|
45
|
+
. "$(dirname "$0")/_lib.sh"
|
|
46
|
+
|
|
47
|
+
# $3 == 1 means a branch checkout (not a file checkout). `git worktree add`
|
|
48
|
+
# sets it. Anything else is not our business.
|
|
49
|
+
if [ "${3:-0}" != "1" ]; then
|
|
50
|
+
exit 0
|
|
51
|
+
fi
|
|
52
|
+
|
|
53
|
+
if gfy_is_linked_worktree; then
|
|
54
|
+
# The base checkout is the parent of the common git dir.
|
|
55
|
+
_base=$(CDPATH= cd -- "$(dirname -- "$(gfy_common_dir)")" 2>/dev/null && pwd) || _base=""
|
|
56
|
+
if [ -n "$_base" ] && [ -f "$_base/graphify-out/graph.json" ]; then
|
|
57
|
+
# Only bootstrap when graph.json here is absent, or is itself a
|
|
58
|
+
# symlink from a previous run of this hook (idempotent re-link on a
|
|
59
|
+
# later checkout in the same worktree). If a REAL graph was built
|
|
60
|
+
# in this worktree, leave it alone.
|
|
61
|
+
if [ ! -e graphify-out/graph.json ] || [ -L graphify-out/graph.json ]; then
|
|
62
|
+
# `git worktree add` already checked out the tracked
|
|
63
|
+
# graphify-out/.gitignore, materialising the directory — never
|
|
64
|
+
# remove it, only add symlinks alongside it.
|
|
65
|
+
mkdir -p graphify-out 2>/dev/null
|
|
66
|
+
_linked=0
|
|
67
|
+
for _entry in "$_base"/graphify-out/* "$_base"/graphify-out/.[!.]*; do
|
|
68
|
+
[ -e "$_entry" ] || continue
|
|
69
|
+
_name=$(basename -- "$_entry")
|
|
70
|
+
# .gitignore is the tracked file that keeps this directory
|
|
71
|
+
# self-ignoring — never shadow it with a symlink to the
|
|
72
|
+
# base's copy.
|
|
73
|
+
[ "$_name" = ".gitignore" ] && continue
|
|
74
|
+
ln -sfn "$_entry" "graphify-out/$_name" 2>/dev/null && _linked=1
|
|
75
|
+
done
|
|
76
|
+
[ "$_linked" = "1" ] &&
|
|
77
|
+
echo "[graphify] linked graphify-out/* -> $_base/graphify-out/* (read-only base graph)"
|
|
78
|
+
fi
|
|
79
|
+
fi
|
|
80
|
+
# Never rebuild in a linked worktree. Two reasons, both load-bearing:
|
|
81
|
+
# 1. graphify-out/graph.json (and friends) are symlinks to the SHARED
|
|
82
|
+
# base graph — a rebuild here would overwrite it from a
|
|
83
|
+
# feature-branch tree.
|
|
84
|
+
# 2. A worktree can be reaped mid-rebuild, which is how the graphify
|
|
85
|
+
# hook's own "burns a full AST pass and then dies with ENOENT"
|
|
86
|
+
# comment came to be.
|
|
87
|
+
exit 0
|
|
88
|
+
fi
|
|
89
|
+
|
|
90
|
+
gfy_chain post-checkout "$@"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# Versioned post-commit shim.
|
|
3
|
+
#
|
|
4
|
+
# core.hooksPath REPLACES .git/hooks wholesale, so without this file
|
|
5
|
+
# graphify's post-commit rebuild is silently DISABLED on any machine that opts
|
|
6
|
+
# into the versioned hooks. See .githooks/_lib.sh.
|
|
7
|
+
#
|
|
8
|
+
# Linked worktrees never rebuild: graphify-out there is a symlink to the base
|
|
9
|
+
# checkout's SHARED graph, so a rebuild would overwrite it from a
|
|
10
|
+
# feature-branch tree — and a worktree can be reaped mid-rebuild.
|
|
11
|
+
|
|
12
|
+
set -u
|
|
13
|
+
. "$(dirname "$0")/_lib.sh"
|
|
14
|
+
|
|
15
|
+
if gfy_is_linked_worktree; then
|
|
16
|
+
exit 0
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
gfy_chain post-commit "$@"
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/bin/sh
|
|
2
|
+
# Versioned post-merge shim.
|
|
3
|
+
#
|
|
4
|
+
# core.hooksPath REPLACES .git/hooks wholesale, so without this file
|
|
5
|
+
# graphify's post-merge rebuild is silently DISABLED on any machine that opts
|
|
6
|
+
# into the versioned hooks. See .githooks/_lib.sh.
|
|
7
|
+
#
|
|
8
|
+
# Linked worktrees never rebuild: graphify-out there is a symlink to the base
|
|
9
|
+
# checkout's SHARED graph, so a rebuild would overwrite it from a
|
|
10
|
+
# feature-branch tree — and a worktree can be reaped mid-rebuild.
|
|
11
|
+
|
|
12
|
+
set -u
|
|
13
|
+
. "$(dirname "$0")/_lib.sh"
|
|
14
|
+
|
|
15
|
+
if gfy_is_linked_worktree; then
|
|
16
|
+
exit 0
|
|
17
|
+
fi
|
|
18
|
+
|
|
19
|
+
gfy_chain post-merge "$@"
|