code-coordinator 0.5.506__tar.gz → 0.5.508__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.
Files changed (904) hide show
  1. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/CLAUDE.md +37 -61
  2. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/PKG-INFO +1 -1
  3. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/code_coordinator.egg-info/PKG-INFO +1 -1
  4. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/code_coordinator.egg-info/scm_version.json +2 -2
  5. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/agent.py +134 -18
  6. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/notify.py +131 -0
  7. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/providers/claude.py +18 -20
  8. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/ARCHITECTURE.md +15 -0
  9. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/OPERATOR_GUIDES.md +23 -0
  10. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent.py +123 -3
  11. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_claude_md_budget.py +9 -5
  12. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_notify.py +152 -0
  13. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_providers.py +104 -0
  14. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/.claude/commands/board.md +0 -0
  15. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/.claude/commands/complete-session.md +0 -0
  16. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/.claude/commands/coordinator.md +0 -0
  17. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/.githooks/_lib.sh +0 -0
  18. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/.githooks/post-checkout +0 -0
  19. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/.githooks/post-commit +0 -0
  20. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/.githooks/post-merge +0 -0
  21. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  22. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/.github/coord-ci-acceptance.yml +0 -0
  23. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/.github/workflows/auto-release.yml +0 -0
  24. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/.github/workflows/publish.yml +0 -0
  25. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/.github/workflows/test.yml +0 -0
  26. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/.gitignore +0 -0
  27. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/GOAL.md +0 -0
  28. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/LICENSE +0 -0
  29. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/MANIFEST.in +0 -0
  30. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/README.md +0 -0
  31. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/code_coordinator.egg-info/SOURCES.txt +0 -0
  32. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/code_coordinator.egg-info/dependency_links.txt +0 -0
  33. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/code_coordinator.egg-info/entry_points.txt +0 -0
  34. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/code_coordinator.egg-info/requires.txt +0 -0
  35. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/code_coordinator.egg-info/scm_file_list.json +0 -0
  36. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/code_coordinator.egg-info/top_level.txt +0 -0
  37. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/__init__.py +0 -0
  38. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/_board_mapping.py +0 -0
  39. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/acceptance.py +0 -0
  40. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/acceptance_drivers.py +0 -0
  41. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/agent_app.py +0 -0
  42. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/agent_update.py +0 -0
  43. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/agents/opencode/.gitignore +0 -0
  44. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/agents/opencode/agents/work.md +0 -0
  45. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/agents/opencode/routing.jsonc +0 -0
  46. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/approved_work.py +0 -0
  47. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/audit.py +0 -0
  48. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/auto_loop.py +0 -0
  49. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/backup.py +0 -0
  50. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/block_log.py +0 -0
  51. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/board_schema.py +0 -0
  52. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/board_service.py +0 -0
  53. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/board_wire.py +0 -0
  54. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/brain.py +0 -0
  55. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/branch_model.py +0 -0
  56. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/bug_intake.py +0 -0
  57. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/cargo_cache.py +0 -0
  58. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/ci_fix.py +0 -0
  59. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/ci_github.py +0 -0
  60. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/ci_gitlab.py +0 -0
  61. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/ci_store.py +0 -0
  62. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/claim.py +0 -0
  63. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/claude_setup_token.py +0 -0
  64. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/cli.py +0 -0
  65. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/client.py +0 -0
  66. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/codegen.py +0 -0
  67. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/__init__.py +0 -0
  68. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/_common.py +0 -0
  69. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/acceptance.py +0 -0
  70. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/agent_ops.py +0 -0
  71. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/audit.py +0 -0
  72. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/backup.py +0 -0
  73. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/chat.py +0 -0
  74. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/ci.py +0 -0
  75. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/codegen.py +0 -0
  76. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/dispatch.py +0 -0
  77. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/dispatch_workers.py +0 -0
  78. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/dr.py +0 -0
  79. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/drive.py +0 -0
  80. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/drive_queue.py +0 -0
  81. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/gate_a.py +0 -0
  82. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/gates.py +0 -0
  83. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/issues.py +0 -0
  84. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/lifecycle.py +0 -0
  85. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/machine.py +0 -0
  86. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/merge.py +0 -0
  87. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/milestone.py +0 -0
  88. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/plan_followup.py +0 -0
  89. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/plans.py +0 -0
  90. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/portal.py +0 -0
  91. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/pr.py +0 -0
  92. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/release.py +0 -0
  93. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/repo.py +0 -0
  94. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/report.py +0 -0
  95. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/review.py +0 -0
  96. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/scorecard.py +0 -0
  97. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/sessions.py +0 -0
  98. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/setup.py +0 -0
  99. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/status.py +0 -0
  100. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/store_migrate.py +0 -0
  101. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/terminal.py +0 -0
  102. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/test_gate.py +0 -0
  103. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/commands/tui.py +0 -0
  104. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/comments.py +0 -0
  105. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/config.py +0 -0
  106. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/config_reload.py +0 -0
  107. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/confirm_test.py +0 -0
  108. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/conflict_fix.py +0 -0
  109. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/dao.py +0 -0
  110. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/dashboard/__init__.py +0 -0
  111. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/dashboard/fixture.py +0 -0
  112. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/dashboard/index.html +0 -0
  113. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/dashboard/server.py +0 -0
  114. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/dashboard/terminal.py +0 -0
  115. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/db.py +0 -0
  116. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/dead_end.py +0 -0
  117. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/decomposition_chat.py +0 -0
  118. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/README.md +0 -0
  119. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-agent.service +0 -0
  120. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-backup.service +0 -0
  121. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-backup.timer +0 -0
  122. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-db-backup.service +0 -0
  123. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-db-backup.sh +0 -0
  124. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-db-backup.timer +0 -0
  125. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-dr-verify.service +0 -0
  126. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-dr-verify.timer +0 -0
  127. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-drive-queue.service +0 -0
  128. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-drive-queue.timer +0 -0
  129. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-failure-notify.service +0 -0
  130. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-fleet-watchdog.service +0 -0
  131. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  132. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-notify.service +0 -0
  133. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-notify.timer +0 -0
  134. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-release-propagate.service +0 -0
  135. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-release-propagate.timer +0 -0
  136. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-release-window.service +0 -0
  137. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-release-window.timer +0 -0
  138. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-serve.service +0 -0
  139. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-web-dist-build.service +0 -0
  140. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-web-dist-build.timer +0 -0
  141. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy/coord-web.service +0 -0
  142. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy_manifest.py +0 -0
  143. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deploy_units.py +0 -0
  144. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deprecation_telemetry.py +0 -0
  145. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/deps.py +0 -0
  146. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/diagnose.py +0 -0
  147. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/dispatch.py +0 -0
  148. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/dispatch_liveness.py +0 -0
  149. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/dist_name.py +0 -0
  150. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/dr_promote.py +0 -0
  151. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/dr_verify.py +0 -0
  152. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/drive.py +0 -0
  153. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/drive_queue.py +0 -0
  154. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/drive_state.py +0 -0
  155. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/events.py +0 -0
  156. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/failure_class.py +0 -0
  157. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/failure_classifier.py +0 -0
  158. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/filelock.py +0 -0
  159. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/fleet_config_health.py +0 -0
  160. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/forge_availability.py +0 -0
  161. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/freshness.py +0 -0
  162. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/gate_a.py +0 -0
  163. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/gate_b.py +0 -0
  164. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/gate_snapshot.py +0 -0
  165. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/gates.py +0 -0
  166. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/gen_board_fixture.py +0 -0
  167. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/github_ops.py +0 -0
  168. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/github_throttle.py +0 -0
  169. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/goal.py +0 -0
  170. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/graph_health.py +0 -0
  171. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/__init__.py +0 -0
  172. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/aggregate.py +0 -0
  173. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/__init__.py +0 -0
  174. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/_ci_pin.py +0 -0
  175. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/agent_install.py +0 -0
  176. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/cargo_targets.py +0 -0
  177. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/claude_binary.py +0 -0
  178. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/config_drift.py +0 -0
  179. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  180. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/coord_web_ci_pin.py +0 -0
  181. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/deploy_lane_facts.py +0 -0
  182. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/disk.py +0 -0
  183. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/fleet_board.py +0 -0
  184. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  185. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/fleet_phantom.py +0 -0
  186. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/fleet_unit_drift.py +0 -0
  187. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/graph.py +0 -0
  188. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/graphify_cli.py +0 -0
  189. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/index_lock.py +0 -0
  190. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/issues_sync_staleness.py +0 -0
  191. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/plan_usage.py +0 -0
  192. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/pr_churn.py +0 -0
  193. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/release_cordon.py +0 -0
  194. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/repo_state.py +0 -0
  195. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/spawned_coord.py +0 -0
  196. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/stalled_pipeline.py +0 -0
  197. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/timer_active.py +0 -0
  198. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/toolchain.py +0 -0
  199. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/unit_drift.py +0 -0
  200. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/unit_enablement.py +0 -0
  201. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/wedged_drive_queue.py +0 -0
  202. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/checks/worktrees.py +0 -0
  203. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/cli.py +0 -0
  204. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/context.py +0 -0
  205. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/fleet_snapshot.py +0 -0
  206. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/models.py +0 -0
  207. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/pypi.py +0 -0
  208. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/registry.py +0 -0
  209. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/render.py +0 -0
  210. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/health/units.py +0 -0
  211. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/hooks.py +0 -0
  212. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/housekeeping.py +0 -0
  213. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/interactive.py +0 -0
  214. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/invariant_alarms.py +0 -0
  215. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/issue_store.py +0 -0
  216. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/issues_sync_status.py +0 -0
  217. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/liveness_auditor.py +0 -0
  218. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/machine_fault.py +0 -0
  219. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/machine_metrics.py +0 -0
  220. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/machine_onboard.py +0 -0
  221. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/machine_pause.py +0 -0
  222. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/machine_stats.py +0 -0
  223. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/merge_queue.py +0 -0
  224. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/milestone_chat.py +0 -0
  225. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/milestone_dispatch.py +0 -0
  226. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/milestone_gate.py +0 -0
  227. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/milestone_order.py +0 -0
  228. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/mock_author.py +0 -0
  229. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/models.py +0 -0
  230. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/network.py +0 -0
  231. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/new_issue_chat.py +0 -0
  232. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/notifier/__init__.py +0 -0
  233. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/notifier/baseline.py +0 -0
  234. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/notifier/cli.py +0 -0
  235. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/notifier/collect.py +0 -0
  236. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/notifier/digest.py +0 -0
  237. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/notifier/models.py +0 -0
  238. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/notifier/predicate.py +0 -0
  239. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/notifier/service.py +0 -0
  240. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/notifier/store.py +0 -0
  241. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/notifier/transport.py +0 -0
  242. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/openapi.py +0 -0
  243. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/overlap_fence.py +0 -0
  244. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/overlap_predict.py +0 -0
  245. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/parentage.py +0 -0
  246. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/parentage_github.py +0 -0
  247. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/pipeline.py +0 -0
  248. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/plan_parser.py +0 -0
  249. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/plans.py +0 -0
  250. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/platform_paths.py +0 -0
  251. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/portal_bridge.py +0 -0
  252. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/portal_store.py +0 -0
  253. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/portal_sync.py +0 -0
  254. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/pr_body_lint.py +0 -0
  255. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/prereqs.py +0 -0
  256. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/progress.py +0 -0
  257. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/providers/__init__.py +0 -0
  258. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/providers/base.py +0 -0
  259. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/providers/claude_pty.py +0 -0
  260. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/providers/opencode.py +0 -0
  261. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/queue_diagnose.py +0 -0
  262. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/reconcile.py +0 -0
  263. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/reconcile_tick.py +0 -0
  264. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/refine_chat.py +0 -0
  265. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/release_cordon.py +0 -0
  266. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/release_propagate.py +0 -0
  267. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/release_verify.py +0 -0
  268. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/release_window.py +0 -0
  269. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/repo_dormancy.py +0 -0
  270. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/repo_edit.py +0 -0
  271. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/repo_onboard.py +0 -0
  272. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/reports.py +0 -0
  273. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/rest_schema.py +0 -0
  274. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/restart_cmd.py +0 -0
  275. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/revalidate.py +0 -0
  276. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/review.py +0 -0
  277. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/scorecard.py +0 -0
  278. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/self_health.py +0 -0
  279. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/serve_app.py +0 -0
  280. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  281. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  282. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  283. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  284. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  285. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/skills/portal-followup/SKILL.md +0 -0
  286. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/skills/release-now/SKILL.md +0 -0
  287. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  288. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  289. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/skills/update-issue/SKILL.md +0 -0
  290. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/smoke.py +0 -0
  291. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/spend_ceiling.py +0 -0
  292. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/split_work.py +0 -0
  293. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/sql.py +0 -0
  294. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/stage_projection.py +0 -0
  295. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/state.py +0 -0
  296. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/store_migrate.py +0 -0
  297. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/store_parity.py +0 -0
  298. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/templates/deploy-cloudflare.node.yml +0 -0
  299. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/test_author.py +0 -0
  300. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/test_chat.py +0 -0
  301. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/test_orchestrator.py +0 -0
  302. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/test_report.py +0 -0
  303. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/tui_release.py +0 -0
  304. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/uat_checks.py +0 -0
  305. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/usage.py +0 -0
  306. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/usage_limits.py +0 -0
  307. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/usage_rollup.py +0 -0
  308. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coord/worker_events.py +0 -0
  309. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/coordinator.example.yml +0 -0
  310. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-agent.service +0 -0
  311. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-backup.service +0 -0
  312. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-backup.timer +0 -0
  313. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-db-backup.service +0 -0
  314. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-db-backup.sh +0 -0
  315. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-db-backup.timer +0 -0
  316. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-dr-verify.service +0 -0
  317. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-dr-verify.timer +0 -0
  318. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-drive-queue.service +0 -0
  319. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-drive-queue.timer +0 -0
  320. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-failure-notify.service +0 -0
  321. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-failure-notify.sh +0 -0
  322. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-fleet-watchdog.service +0 -0
  323. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-fleet-watchdog.timer +0 -0
  324. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-notify.service +0 -0
  325. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-notify.timer +0 -0
  326. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-release-propagate.service +0 -0
  327. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-release-propagate.timer +0 -0
  328. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-release-window.service +0 -0
  329. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-release-window.timer +0 -0
  330. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-serve.service +0 -0
  331. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-web-dist-build.service +0 -0
  332. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-web-dist-build.sh +0 -0
  333. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-web-dist-build.timer +0 -0
  334. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-web-rollback.sh +0 -0
  335. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/coord-web.service +0 -0
  336. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/deploy/node-shim.sh +0 -0
  337. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/ADR_COORD_TUI_CI.md +0 -0
  338. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  339. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/ADR_COORD_WEB_CI.md +0 -0
  340. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/ADR_COORD_WEB_DIST.md +0 -0
  341. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  342. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/AGENT_OPERATIONS.md +0 -0
  343. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/ARCH_SECURITY_GATES.md +0 -0
  344. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/COCKPIT.md +0 -0
  345. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/CONTROL_CENTER.md +0 -0
  346. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/COST_DISCIPLINE.md +0 -0
  347. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/CROSS_PLATFORM.md +0 -0
  348. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/CUSTOMER_FACING_APPS.md +0 -0
  349. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/CUSTOMER_PORTAL.md +0 -0
  350. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/DATA_STORE_SELECTION.md +0 -0
  351. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/DISASTER_RECOVERY.md +0 -0
  352. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/DRIVE_QUEUE.md +0 -0
  353. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/EPHEMERAL_WORKERS.md +0 -0
  354. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/FORGE_MIGRATION.md +0 -0
  355. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/GRAPHIFY_SETUP.md +0 -0
  356. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/ISSUE_GUIDANCE.md +0 -0
  357. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/MAC_MINI.md +0 -0
  358. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  359. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/NOTIFIER.md +0 -0
  360. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/OPENCODE_VERIFICATION.md +0 -0
  361. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/OPERATING_GOTCHAS.md +0 -0
  362. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/ORACLE_LOOP.md +0 -0
  363. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/PHONE_WEBAPP.md +0 -0
  364. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/PIPELINE_V2.md +0 -0
  365. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/PLATFORM_EVOLUTION.md +0 -0
  366. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/SECOND_BACKEND.md +0 -0
  367. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/STORE_SERVICE.md +0 -0
  368. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  369. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/WEB_CONTROL_CENTER.md +0 -0
  370. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/WSL_WINDOWS_WORKER.md +0 -0
  371. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/mocks/web/README.md +0 -0
  372. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/mocks/web/_tokens.css +0 -0
  373. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/mocks/web/issue-detail.html +0 -0
  374. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/mocks/web/pipeline-narrow.html +0 -0
  375. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/docs/mocks/web/pipeline-wide.html +0 -0
  376. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/graphify-out/.gitignore +0 -0
  377. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/install-agent.sh +0 -0
  378. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/pyproject.toml +0 -0
  379. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/audit_review_verdict_overrides.py +0 -0
  380. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  381. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/azure-workers/build-worker-image.sh +0 -0
  382. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/azure-workers/coordinator-machine.py +0 -0
  383. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/azure-workers/dr-down.sh +0 -0
  384. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/azure-workers/dr-up.sh +0 -0
  385. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/azure-workers/epic-down.sh +0 -0
  386. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/azure-workers/epic-up.sh +0 -0
  387. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/azure-workers/preflight.sh +0 -0
  388. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/azure-workers/provision-server.sh +0 -0
  389. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/azure-workers/provision-worker.sh +0 -0
  390. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  391. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  392. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/azure-workers/throwaway-vm.sh +0 -0
  393. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/azure-workers/verify-github-token.sh +0 -0
  394. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/check_gh_argv_containment.py +0 -0
  395. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/codegen.py +0 -0
  396. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/coord-test-runner.sh +0 -0
  397. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  398. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  399. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  400. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  401. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/coord-venv-rollback.sh +0 -0
  402. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/drive-batch.sh +0 -0
  403. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/extract-coord-tui.sh +0 -0
  404. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/fleet_watchdog.py +0 -0
  405. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/gen_board_fixture.py +0 -0
  406. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/gen_mock_index.py +0 -0
  407. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/lib/provision-core.sh +0 -0
  408. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/next_release_tag.py +0 -0
  409. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/provision-machine.sh +0 -0
  410. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/run_tests_in_populated_home.sh +0 -0
  411. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/run_tests_without_gh.sh +0 -0
  412. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/setup-macmini.sh +0 -0
  413. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/smoke_437_interactive.py +0 -0
  414. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/verify-provision-noble.sh +0 -0
  415. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/verify_878_review_capture.py +0 -0
  416. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/verify_release_published.py +0 -0
  417. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/scripts/verify_release_wheel.py +0 -0
  418. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/setup.cfg +0 -0
  419. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/SMOKE_SET.md +0 -0
  420. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/__init__.py +0 -0
  421. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/acceptance/ms-37/conftest.py +0 -0
  422. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/acceptance/ms-37/contract.md +0 -0
  423. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/acceptance/ms-37/manifest.yml +0 -0
  424. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  425. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  426. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/acceptance/ms-51/contract.md +0 -0
  427. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  428. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  429. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/acceptance/ms-51/manifest.yml +0 -0
  430. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  431. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/acceptance/ms-51/tsconfig.json +0 -0
  432. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  433. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/backends.py +0 -0
  434. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/conftest.py +0 -0
  435. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/board-pipeline-basic.json +0 -0
  436. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  437. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  438. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  439. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  440. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/playwright/all_pass.json +0 -0
  441. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  442. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/playwright/mixed_fail.json +0 -0
  443. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  444. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  445. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/playwright/skip.json +0 -0
  446. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/playwright/truncated.json +0 -0
  447. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  448. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  449. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  450. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  451. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  452. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  453. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  454. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  455. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_acceptance.py +0 -0
  456. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_acceptance_drivers.py +0 -0
  457. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_api_error.py +0 -0
  458. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_app.py +0 -0
  459. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_branch_base.py +0 -0
  460. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_branch_capture.py +0 -0
  461. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_config_free_1712.py +0 -0
  462. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_deploy_units_endpoint.py +0 -0
  463. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_dirty_worktree.py +0 -0
  464. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  465. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_graph_self_heal.py +0 -0
  466. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_health_h3.py +0 -0
  467. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_idle_restart.py +0 -0
  468. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_push_failure.py +0 -0
  469. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_reap.py +0 -0
  470. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_repos_and_pull.py +0 -0
  471. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_restart_services_endpoint.py +0 -0
  472. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_skills_self_heal.py +0 -0
  473. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_startup_diagnostics.py +0 -0
  474. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_update.py +0 -0
  475. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_update_bluegreen.py +0 -0
  476. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_usage_limit.py +0 -0
  477. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_agent_zero_commit.py +0 -0
  478. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_ambient_home_isolation.py +0 -0
  479. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_approve_capability_reroute_3241.py +0 -0
  480. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_approve_dependency_busy_2804.py +0 -0
  481. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_approve_reject_plan.py +0 -0
  482. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_approve_usage_gate.py +0 -0
  483. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_approved_work_2532.py +0 -0
  484. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_approved_work_2996.py +0 -0
  485. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_assignment_already_recorded_daemon.py +0 -0
  486. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_audit_log.py +0 -0
  487. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_audit_outcome.py +0 -0
  488. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_audit_query.py +0 -0
  489. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_auto_loop.py +0 -0
  490. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_auto_release_publish_2035.py +0 -0
  491. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_backend_selection.py +0 -0
  492. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_backup.py +0 -0
  493. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_base_checkout_restore.py +0 -0
  494. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_block_log.py +0 -0
  495. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_board_cap_762.py +0 -0
  496. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_board_fixture.py +0 -0
  497. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_board_read_path.py +0 -0
  498. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_board_schema.py +0 -0
  499. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_board_service.py +0 -0
  500. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_board_state.py +0 -0
  501. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_board_wire.py +0 -0
  502. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_brain.py +0 -0
  503. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_branch_model.py +0 -0
  504. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_bug_intake.py +0 -0
  505. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_build_worker_image_env_update.py +0 -0
  506. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cargo_cache.py +0 -0
  507. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_check_gh_argv_containment.py +0 -0
  508. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_ci_acceptance_gate_1950.py +0 -0
  509. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_ci_fix.py +0 -0
  510. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_ci_github.py +0 -0
  511. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_ci_gitlab.py +0 -0
  512. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_ci_parity_2091.py +0 -0
  513. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_ci_store.py +0 -0
  514. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_claim.py +0 -0
  515. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_claude_setup_token.py +0 -0
  516. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_acceptance.py +0 -0
  517. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_assign.py +0 -0
  518. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  519. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_assign_interactive_remote.py +0 -0
  520. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_assign_provider.py +0 -0
  521. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  522. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_audit.py +0 -0
  523. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_chat_continue.py +0 -0
  524. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_ci.py +0 -0
  525. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_codegen.py +0 -0
  526. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_decide.py +0 -0
  527. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_diagnose_capability_rules.py +0 -0
  528. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_diagnose_config_provenance.py +0 -0
  529. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_diagnose_forge_availability.py +0 -0
  530. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_diagnose_graph.py +0 -0
  531. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_diagnose_self.py +0 -0
  532. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_diagnose_test_coverage.py +0 -0
  533. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_doctor.py +0 -0
  534. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_doctor_config_free_1801.py +0 -0
  535. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  536. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  537. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_drive.py +0 -0
  538. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_drive_queue.py +0 -0
  539. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_escalate.py +0 -0
  540. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_fix_headless_review.py +0 -0
  541. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_gate_a.py +0 -0
  542. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_install_drift.py +0 -0
  543. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_install_skills.py +0 -0
  544. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_issue_comment.py +0 -0
  545. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_issue_create_label.py +0 -0
  546. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_issue_reopen.py +0 -0
  547. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_issue_view_list.py +0 -0
  548. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_merge.py +0 -0
  549. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_milestone_assign.py +0 -0
  550. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_milestone_capture.py +0 -0
  551. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_milestone_chat_add_child.py +0 -0
  552. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_milestone_dispatch.py +0 -0
  553. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_milestone_gate_b.py +0 -0
  554. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_milestone_gate_c.py +0 -0
  555. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_milestone_order.py +0 -0
  556. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  557. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_milestone_ship.py +0 -0
  558. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_network.py +0 -0
  559. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_new_issue_chat.py +0 -0
  560. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_plans.py +0 -0
  561. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_portal.py +0 -0
  562. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_pr.py +0 -0
  563. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_pull_artifact.py +0 -0
  564. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_queue.py +0 -0
  565. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_reattach_sessions.py +0 -0
  566. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_refine_board.py +0 -0
  567. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_release_preflight.py +0 -0
  568. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_release_propagate.py +0 -0
  569. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_release_window.py +0 -0
  570. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_repo_2220.py +0 -0
  571. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  572. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_scorecard.py +0 -0
  573. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_serve_store_backend_3084.py +0 -0
  574. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_set_review_findings.py +0 -0
  575. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_status_advisory_terminal.py +0 -0
  576. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_status_contested_tag.py +0 -0
  577. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_status_invariant_alarms.py +0 -0
  578. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_status_machine_fault.py +0 -0
  579. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_status_merge_queue.py +0 -0
  580. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_status_provider.py +0 -0
  581. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_status_retried_3340.py +0 -0
  582. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_status_review_finalizing.py +0 -0
  583. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_status_supervisor_3366.py +0 -0
  584. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_status_test_failed_tag.py +0 -0
  585. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_status_usage_limit.py +0 -0
  586. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_sync_comments_873.py +0 -0
  587. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_test_plan.py +0 -0
  588. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_track.py +0 -0
  589. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_tui_update.py +0 -0
  590. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cli_wait.py +0 -0
  591. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_client.py +0 -0
  592. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_client_base_install.py +0 -0
  593. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_client_config_cache_atomic_3052.py +0 -0
  594. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_client_resource_migration_1946.py +0 -0
  595. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_commands_common.py +0 -0
  596. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_comments.py +0 -0
  597. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_completion_summary.py +0 -0
  598. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_config.py +0 -0
  599. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_config_acceptance.py +0 -0
  600. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_config_audit.py +0 -0
  601. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_config_drift_check.py +0 -0
  602. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_config_effective.py +0 -0
  603. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_config_pricing.py +0 -0
  604. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  605. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_config_usage_gate.py +0 -0
  606. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_confirm_test.py +0 -0
  607. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_conflict_fix.py +0 -0
  608. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_conflict_fix_semantic.py +0 -0
  609. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  610. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_coord_test.py +0 -0
  611. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  612. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_coord_test_runner_baseline.py +0 -0
  613. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_coord_test_runner_populated_home.py +0 -0
  614. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_coord_test_runner_routing.py +0 -0
  615. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_coord_test_runner_toolchain.py +0 -0
  616. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_coord_uat.py +0 -0
  617. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_coord_web_sse_restart_live.py +0 -0
  618. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_coordinator_machine.py +0 -0
  619. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_cross_platform_imports.py +0 -0
  620. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dao.py +0 -0
  621. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dashboard.py +0 -0
  622. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dashboard_api.py +0 -0
  623. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dashboard_fixture.py +0 -0
  624. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dashboard_server.py +0 -0
  625. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dashboard_terminal.py +0 -0
  626. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dashboard_terminal_live.py +0 -0
  627. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_db.py +0 -0
  628. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dead_end.py +0 -0
  629. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_decomposition_chat.py +0 -0
  630. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_deploy_coord_db_backup.py +0 -0
  631. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_deploy_coord_web_dist.py +0 -0
  632. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_deploy_coord_web_rollback.py +0 -0
  633. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_deploy_db_backup_unit.py +0 -0
  634. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_deploy_drive_queue_unit.py +0 -0
  635. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_deploy_failure_notify_unit.py +0 -0
  636. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_deploy_manifest.py +0 -0
  637. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_deploy_notify_unit.py +0 -0
  638. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_deploy_units_lane.py +0 -0
  639. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_deploy_web_unit.py +0 -0
  640. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_deprecation_telemetry.py +0 -0
  641. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_deps.py +0 -0
  642. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_diagnose.py +0 -0
  643. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dispatch.py +0 -0
  644. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dispatch_liveness.py +0 -0
  645. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dispatch_target_validation.py +0 -0
  646. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dispatch_workers.py +0 -0
  647. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dist_name.py +0 -0
  648. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_done_housekeeping.py +0 -0
  649. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dr_azure_scripts.py +0 -0
  650. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dr_promote.py +0 -0
  651. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_dr_verify.py +0 -0
  652. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_drive.py +0 -0
  653. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_drive_machine_fault.py +0 -0
  654. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_drive_queue.py +0 -0
  655. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_drive_queue_blocked_rendering.py +0 -0
  656. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_drive_queue_launch_argv.py +0 -0
  657. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_drive_queue_max_parallel_config.py +0 -0
  658. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  659. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_drive_queue_roll_pending.py +0 -0
  660. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  661. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_drive_state.py +0 -0
  662. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_drive_tmux.py +0 -0
  663. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_epic_up_capability_detection.py +0 -0
  664. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  665. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_epic_up_image_provenance.py +0 -0
  666. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_errors.py +0 -0
  667. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_events.py +0 -0
  668. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_failure_class.py +0 -0
  669. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_failure_classifier.py +0 -0
  670. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_filelock.py +0 -0
  671. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  672. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_fix_escalation_classifier.py +0 -0
  673. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_fix_of_force_override.py +0 -0
  674. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_fleet_config_health.py +0 -0
  675. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_fleet_health_probes.py +0 -0
  676. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_fleet_health_snapshot.py +0 -0
  677. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_fleet_watchdog.py +0 -0
  678. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_forge_availability.py +0 -0
  679. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_freshness.py +0 -0
  680. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_gate_a.py +0 -0
  681. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_gate_b.py +0 -0
  682. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_gate_snapshot_staleness.py +0 -0
  683. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_gates.py +0 -0
  684. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  685. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_gen_mock_index.py +0 -0
  686. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_generated_rust_fixture.py +0 -0
  687. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_generated_rust_requests.py +0 -0
  688. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_generated_types_fixture.py +0 -0
  689. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_github_ops.py +0 -0
  690. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_github_throttle.py +0 -0
  691. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_goal.py +0 -0
  692. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_graph_health.py +0 -0
  693. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_graph_selfheal_absent_2237.py +0 -0
  694. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_handoff.py +0 -0
  695. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_checks.py +0 -0
  696. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_cli.py +0 -0
  697. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_cli_graph.py +0 -0
  698. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_config.py +0 -0
  699. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_context.py +0 -0
  700. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_coord_tui_ci_pin.py +0 -0
  701. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_coord_web_ci_pin.py +0 -0
  702. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_deploy_lane_facts.py +0 -0
  703. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_fix.py +0 -0
  704. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_incident_regression.py +0 -0
  705. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_issues_sync_staleness.py +0 -0
  706. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_pr_churn.py +0 -0
  707. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_pypi.py +0 -0
  708. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_registry.py +0 -0
  709. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_release_cordon_probe.py +0 -0
  710. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_timer_active.py +0 -0
  711. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_toolchain.py +0 -0
  712. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_unit_drift.py +0 -0
  713. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_unit_enablement.py +0 -0
  714. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_health_wedged_drive_queue.py +0 -0
  715. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_hooks.py +0 -0
  716. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_housekeeping.py +0 -0
  717. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_human_attended_437.py +0 -0
  718. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_init.py +0 -0
  719. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_install_agent_venv_2911.py +0 -0
  720. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_integration.py +0 -0
  721. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_interactive_briefing_echo.py +0 -0
  722. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_interactive_pane_log_2541.py +0 -0
  723. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_interactive_prefill_state.py +0 -0
  724. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_interactive_session_relaunch.py +0 -0
  725. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_interactive_test_verdict_backstop.py +0 -0
  726. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_interactive_token_attribution.py +0 -0
  727. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_interactive_worktree.py +0 -0
  728. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_invariant_alarms.py +0 -0
  729. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_issue_store_seam.py +0 -0
  730. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_issues_sync_status.py +0 -0
  731. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_liveness_auditor.py +0 -0
  732. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_liveness_notify.py +0 -0
  733. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_lock_contention_ratchet.py +0 -0
  734. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_machine_fault.py +0 -0
  735. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_machine_metrics.py +0 -0
  736. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_machine_onboard.py +0 -0
  737. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_machine_pause.py +0 -0
  738. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_machine_stats.py +0 -0
  739. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_merge_queue.py +0 -0
  740. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_merge_verify.py +0 -0
  741. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_milestone_chat.py +0 -0
  742. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_milestone_dispatch.py +0 -0
  743. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_milestone_gate.py +0 -0
  744. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_milestone_order.py +0 -0
  745. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_milestone_seam.py +0 -0
  746. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_mock_author.py +0 -0
  747. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_model_tiering.py +0 -0
  748. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_models.py +0 -0
  749. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_models_config_labels.py +0 -0
  750. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_needs_attention.py +0 -0
  751. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_network.py +0 -0
  752. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_new_issue_chat.py +0 -0
  753. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_next_release_tag.py +0 -0
  754. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_node_shim.py +0 -0
  755. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_notifier_baseline.py +0 -0
  756. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_notifier_cli.py +0 -0
  757. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_notifier_collect.py +0 -0
  758. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_notifier_config.py +0 -0
  759. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_notifier_drive_seam.py +0 -0
  760. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_notifier_isolation.py +0 -0
  761. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_notifier_predicate.py +0 -0
  762. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_notifier_quiet_hours.py +0 -0
  763. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_notifier_service.py +0 -0
  764. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_notify_drain.py +0 -0
  765. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_openapi.py +0 -0
  766. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_operational_defaults.py +0 -0
  767. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_overlap_fence.py +0 -0
  768. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_overlap_predict.py +0 -0
  769. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_packaged_deploy_units.py +0 -0
  770. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_parentage.py +0 -0
  771. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_paste_landed.py +0 -0
  772. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  773. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_pipeline.py +0 -0
  774. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_plan_followup_approve_plan_command.py +0 -0
  775. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_plan_followup_pr_command.py +0 -0
  776. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_plan_followup_review_command.py +0 -0
  777. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_plan_only.py +0 -0
  778. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_plan_parser.py +0 -0
  779. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_platform_paths.py +0 -0
  780. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_portal_bridge.py +0 -0
  781. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_portal_config.py +0 -0
  782. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_portal_store.py +0 -0
  783. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_portal_sync.py +0 -0
  784. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_pr_body_lint.py +0 -0
  785. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_prereqs.py +0 -0
  786. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_production_db_guard.py +0 -0
  787. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_progress.py +0 -0
  788. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_provider_seam.py +0 -0
  789. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_providers_config_labels.py +0 -0
  790. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_providers_pty.py +0 -0
  791. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_provision_core.py +0 -0
  792. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_provision_machine.py +0 -0
  793. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_py_rust_mirror_inventory.py +0 -0
  794. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_quiet_hours.py +0 -0
  795. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_quiet_hours_store_2146.py +0 -0
  796. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_reap_merged_sessions.py +0 -0
  797. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_reap_stale_interactive_tick.py +0 -0
  798. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_reconcile.py +0 -0
  799. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_reconcile_branch.py +0 -0
  800. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_reconcile_completions.py +0 -0
  801. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  802. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_reconcile_merges.py +0 -0
  803. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_reconcile_no_agent_record.py +0 -0
  804. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_reconcile_tick.py +0 -0
  805. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_reconcile_usage_limit_done.py +0 -0
  806. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_refine_chat.py +0 -0
  807. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_release_cordon_2101.py +0 -0
  808. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  809. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_release_cordon_deadlock_2240.py +0 -0
  810. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  811. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_release_cordon_stuck_2490.py +0 -0
  812. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_release_propagate.py +0 -0
  813. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_release_propagate_threshold.py +0 -0
  814. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_release_roll_between_legs_2854.py +0 -0
  815. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_release_roll_window_handoff.py +0 -0
  816. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_release_unified_1242.py +0 -0
  817. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_release_verify.py +0 -0
  818. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_release_window.py +0 -0
  819. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_remote_auto_prune.py +0 -0
  820. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_remote_interactive_reaper.py +0 -0
  821. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_repo_add.py +0 -0
  822. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_repo_dormancy.py +0 -0
  823. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_repo_edit_2220.py +0 -0
  824. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_repo_graph_fleet_2237.py +0 -0
  825. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_repo_onboard_2220.py +0 -0
  826. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_report_result_push.py +0 -0
  827. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_reports.py +0 -0
  828. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_restart_cmd.py +0 -0
  829. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_retry.py +0 -0
  830. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_retry_advisory_1606.py +0 -0
  831. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_retry_escalation_classify_3360.py +0 -0
  832. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_retry_type_1636.py +0 -0
  833. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_revalidate.py +0 -0
  834. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_review.py +0 -0
  835. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_review_end_review_without_verdict.py +0 -0
  836. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_review_parse_failure_diagnostic.py +0 -0
  837. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_review_reaffirm.py +0 -0
  838. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_review_state.py +0 -0
  839. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_review_verdict_backstop.py +0 -0
  840. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_review_verdict_override_audit.py +0 -0
  841. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_review_verdict_relay.py +0 -0
  842. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_review_zero_commits.py +0 -0
  843. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_scoped_review_wiring.py +0 -0
  844. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_scorecard.py +0 -0
  845. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_self_health.py +0 -0
  846. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_serve.py +0 -0
  847. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_serve_app.py +0 -0
  848. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_serve_app_board_trim.py +0 -0
  849. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_serve_rest_routes.py +0 -0
  850. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_session.py +0 -0
  851. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_slice_issue_attribution.py +0 -0
  852. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_smoke.py +0 -0
  853. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  854. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_smoke_live_checkout_restore.py +0 -0
  855. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_smoke_workflow.py +0 -0
  856. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_spend_ceiling.py +0 -0
  857. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_spend_ceiling_coordinator.py +0 -0
  858. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_split.py +0 -0
  859. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_split_work.py +0 -0
  860. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_sql_dialect.py +0 -0
  861. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_sqlite_connect_ratchet.py +0 -0
  862. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_stage_projection.py +0 -0
  863. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_stale_busy_reviewer_697.py +0 -0
  864. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_stalled_pipeline.py +0 -0
  865. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_state.py +0 -0
  866. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_state_review_findings_daemon.py +0 -0
  867. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_status_fleet_footer.py +0 -0
  868. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_stop_1567.py +0 -0
  869. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_store_contract.py +0 -0
  870. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_store_migrate.py +0 -0
  871. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_stuck.py +0 -0
  872. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  873. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_terminal_command.py +0 -0
  874. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_test_author.py +0 -0
  875. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_test_chat.py +0 -0
  876. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_test_orchestrator.py +0 -0
  877. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_test_report.py +0 -0
  878. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_test_verdict_parsing.py +0 -0
  879. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_test_verdict_transcript_floor.py +0 -0
  880. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_text_io_encoding_audit.py +0 -0
  881. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_thin_client_board_audit.py +0 -0
  882. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_thin_client_config_load_1080.py +0 -0
  883. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_thin_client_daemon_routing_906.py +0 -0
  884. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_throwaway_vm.py +0 -0
  885. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_tmux_host.py +0 -0
  886. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_tmux_session.py +0 -0
  887. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_transcript_floor.py +0 -0
  888. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_uat_checks.py +0 -0
  889. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_usage.py +0 -0
  890. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_usage_limits.py +0 -0
  891. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_usage_rollup.py +0 -0
  892. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_venv_live_install_2121.py +0 -0
  893. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_version_single_source.py +0 -0
  894. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_watch.py +0 -0
  895. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  896. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_worker_env_venv_isolation.py +0 -0
  897. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_worker_events.py +0 -0
  898. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_worker_image_pin_sync.py +0 -0
  899. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_worker_safety.py +0 -0
  900. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_worker_test_scoping.py +0 -0
  901. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_worktree.py +0 -0
  902. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  903. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/test_write_parity.py +0 -0
  904. {code_coordinator-0.5.506 → code_coordinator-0.5.508}/tests/write_parity.py +0 -0
@@ -2,20 +2,21 @@
2
2
 
3
3
  CLI tool + per-machine agent server that coordinates Claude Code workers across multiple machines and repos over Tailscale.
4
4
 
5
- > **Scope of this file (#2195).** This is the **worker- and reviewer-facing** rulebook: it is
6
- > loaded into every worker leg, every review leg, and every coordinator session — and re-read on
7
- > every turn of each — so it holds only what someone *editing this repo* must act on. Operator
8
- > runbooks live in [`docs/`](docs/), indexed by
9
- > [`docs/OPERATOR_GUIDES.md`](docs/OPERATOR_GUIDES.md). Settled design rationale lives in
10
- > [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md#design-decisions--the-settled-rationale).
11
- > Keep it that way: **if a new rule does not change what a worker does, it belongs in `docs/`.**
12
- > Operator sessions — the "dispatch, don't do" rule now lives in
13
- > [`docs/COST_DISCIPLINE.md`](docs/COST_DISCIPLINE.md); read it before hand-editing any tracked
14
- > repo. If you're a worker or reviewer leg, that one isn't for you.
15
-
16
- ## Current Goal — read first
17
-
18
- **[`GOAL.md`](GOAL.md) holds the current north-star objective** — the living, cross-repo / cross-machine goal that should bias all planning, triage, and dispatch. It is meta-level (above any single issue, repo, or session) and changes as priorities evolve: read it first, plan against it, and keep it current. `coordinator.yml` is the source of truth for *topology*; `GOAL.md` is the source of truth for *intent*.
5
+ > **Scope of this file (#2195, #2817).** This is the **worker- and reviewer-facing**
6
+ > rulebook: it is loaded into every worker leg, every review leg and every coordinator
7
+ > session — and re-read on **every turn** of each, so every byte here is a recurring
8
+ > fleet-wide cost. It holds only what someone *editing this repo* must act on.
9
+ > **If a new rule does not change what a worker does, it belongs in [`docs/`](docs/).**
10
+ > `tests/test_claude_md_budget.py` enforces that with a byte cap — move a section out
11
+ > rather than raise it.
12
+ >
13
+ > Not here: operator runbooks ([`docs/OPERATOR_GUIDES.md`](docs/OPERATOR_GUIDES.md)) ·
14
+ > settled design rationale
15
+ > ([`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md#design-decisions--the-settled-rationale)) ·
16
+ > the `coord` command reference (`coord <cmd> --help`) · operator cost rules and
17
+ > "dispatch, don't do" ([`docs/COST_DISCIPLINE.md`](docs/COST_DISCIPLINE.md)) ·
18
+ > the current north-star objective ([`GOAL.md`](GOAL.md) — read it in a coordinator
19
+ > session when planning or triaging; a worker or reviewer leg does not need it).
19
20
 
20
21
  ## Codebase navigation — query the graph first
21
22
 
@@ -64,22 +65,11 @@ Query the **graphify graph** (`graphify-out/`) for the full module map + relatio
64
65
 
65
66
  ## Commands
66
67
 
67
- `coord <cmd> --help` documents every command + flags. The core loop:
68
-
69
- ```bash
70
- coord plan # Brain proposes assignments for idle machines
71
- coord approve 1,3 # Dispatch approved proposals (comma-separated IDs)
72
- coord assign <machine> <repo> <issue> [--briefing TEXT | --briefing-file F] [--dry-run] # Direct dispatch
73
- coord status [--freshness] # Machines, assignments, connectivity (+ repo freshness vs GitHub HEADs)
74
- coord log <id> [-f] [--machine NAME] # claude -p output (remote logs need --machine)
75
- coord notify # Poll agents, post completion/failure comments to GitHub
76
- coord test --passed|--fail|--skipped <id> # Record the Test-gate verdict (bare `coord test <id>` builds+tests locally)
77
- coord merge [--dry-run] [--repo NAME] [--method rebase|squash|merge] [--order IDs] [--force-merge]
78
- coord reconcile-merges # Backfill missing branches + record out-of-band merges (#609/#611)
79
- coord retry|stop|resume <id> # Recovery; `coord done` ends the session
80
- ```
81
-
82
- Setup / diagnostics (discoverable via `--help`): `coord init`, `coord config`, `coord agent`, `coord serve`, `coord web`, `coord diagnose`, `coord sessions [--remote]`, `coord split`, `coord notifier`, `coord repo add` / `coord repo doctor`.
68
+ `coord <cmd> --help` documents every command and flag — that is the reference, not this
69
+ file. The operator-facing core loop (`plan`/`approve`/`assign`/`status`/`merge`/...) is in
70
+ [`docs/OPERATOR_GUIDES.md`](docs/OPERATOR_GUIDES.md#the-core-loop). The one `coord` command
71
+ a **worker** runs is `coord acceptance run --issue N`, in an oracle-loop round (see Testing
72
+ below).
83
73
 
84
74
  ## Development
85
75
 
@@ -133,34 +123,22 @@ computes the routing without actually building or testing anything.
133
123
 
134
124
  ## Key Design Decisions
135
125
 
136
- One line each — the reasoning behind them is in
137
- [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md#design-decisions--the-settled-rationale).
138
-
139
- - **No API key needed.** Everything uses `claude -p`, which runs on a Max/Pro subscription via OAuth.
140
- - **Agent servers are dumb dispatchers.** They spawn `claude -p` and track the subprocess; all intelligence is in the coordinator brain.
141
- - **GitHub issue comments are the message bus.** Briefings, completion notices and failure reports are comments, carrying `<!-- coord:... -->` markers for machine parsing.
142
- - **`coordinator.yml` is the single source of truth** for repo topology, machine capabilities, dependencies, concurrency limits, review settings, smoke-test rules, and the pipeline gate order (`pipeline.default_gates`). It lives in `~/.coord/`, **not** the repo checkout.
143
- - **User approves everything.** `coord plan` proposes, the user reviews, `coord approve` dispatches. No autonomous dispatch.
144
- - **Claim detection prevents duplicate work.** Before dispatching, the coordinator checks the board for active assignments and the remote for `issue-{N}-*` branches.
145
- - **Conflict rules are inferred, not configured.** There is no `file_groups`/`exclusive_files` config and never will be. `coord drive-queue add` compares an issue's own `## Files` declaration against the **real diffs** of in-flight branches in that repo (`coord/overlap_predict.py`, #2247) and, on an overlap, chains the newcomer `--after` the incumbent. **It ORDERS, never refuses** — a false positive costs latency, a refusal costs work. Accuracy is measured, not assumed: `coord drive-queue overlap-report`.
146
- - **Adversarial reviews are rule-enforcing, not rubber-stamping.** On worker completion a fresh `claude -p` session on a *different* machine reviews the PR diff against this file and the review checklist, with zero shared context with the worker — that's the whole point.
147
- - **The pipeline order is `Work → Test → Review → Merge`.** Test precedes Review; the headless auto-loop holds review dispatch until there is a `passed`/`skipped` test verdict.
148
- - **Merge is gated on CI checks (#240).** `coord merge` refuses when a check failed or is still running — and a PR with *zero* reported checks is not automatically clear either (#1904).
149
- - **Mechanical merge conflicts auto-rebase (#241).** A `type="conflict-fix"` worker rebases and resolves additive merges; semantic conflicts are left for a human.
150
- - **Smoke tests validate on capable hardware.** `smoke_tests.capability_rules` map changed files to required machine capabilities (e.g. GTK changes → a machine with GTK).
151
- - **Progress streaming from workers.** Workers emit `STATUS:` and `STUCK:` lines; the coordinator parses these for real-time progress in `coord status` and the dashboard.
152
- - **The notifier tells you when NOBODY IS COMING — and nothing else (#1632).** Advisory, isolated, off by default; it is not an error channel and not a progress feed.
153
-
154
- ## Review Prompt Assembly
155
-
156
- The reviewer gets a prompt built from:
157
- 1. **Repo's CLAUDE.md** — the project rules (source of truth, not duplicated)
158
- 2. **Generic checklist** — "did you add tests?", "did you stay in file scope?", "any security issues?"
159
- 3. **Repo overrides** — project-specific patterns from `coordinator.yml` `reviews.repo_overrides`
160
- 4. **The diff** — `gh pr diff` of the worker's branch vs base
161
- 5. **The issue** — title and body for intent verification
162
-
163
- The reviewer reads the rules and enforces them against the diff. It does not have the worker's session context — genuinely independent.
126
+ These are the ones a **diff** can violate. The full set, with the reasoning behind each, is
127
+ in [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md#design-decisions--the-settled-rationale).
128
+
129
+ - **`coordinator.yml` is the single source of truth** for repo topology, machine
130
+ capabilities, dependencies, concurrency limits, review settings, smoke-test rules and the
131
+ pipeline gate order (`pipeline.default_gates`). It lives in `~/.coord/`, **not** the repo
132
+ checkout.
133
+ - **Conflict rules are inferred, not configured.** There is no `file_groups` /
134
+ `exclusive_files` config and never will be — `coord drive-queue add` compares an issue's
135
+ own `## Files` declaration against the **real diffs** of in-flight branches
136
+ (`coord/overlap_predict.py`, #2247). **It ORDERS, never refuses.** Do not add such config.
137
+ - **The pipeline order is `Work → Test → Review → Merge`.** Test precedes Review; the
138
+ headless auto-loop holds review dispatch until there is a `passed`/`skipped` verdict.
139
+ - **Adversarial reviews are rule-enforcing, not rubber-stamping.** A fresh `claude -p`
140
+ session on a *different* machine reviews your diff against this file, with **zero shared
141
+ context with you** — so your diff and final message must stand on their own.
164
142
 
165
143
  ## Rules for workers
166
144
 
@@ -212,7 +190,5 @@ versus keep in the coordinator session, and the coordinator session's own
212
190
 
213
191
  ## Operating the fleet — operator-facing
214
192
 
215
- **Not needed to work on this repo.** A worker or reviewer can stop reading here. Every operator
216
- runbook — the pre-flight gotchas, agent installs and releases, the drive queue, the customer
217
- portal, and the two deploy facts that bite most often — is indexed in
193
+ **Not needed to work on this repo.** Every operator runbook is indexed in
218
194
  [`docs/OPERATOR_GUIDES.md`](docs/OPERATOR_GUIDES.md).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.506
3
+ Version: 0.5.508
4
4
  Summary: Coordinate Claude Code workers across multiple machines and repos.
5
5
  Author-email: John Donaghy <johnfdonaghy@gmail.com>
6
6
  License-Expression: LicenseRef-FSL-1.1-MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.506
3
+ Version: 0.5.508
4
4
  Summary: Coordinate Claude Code workers across multiple machines and repos.
5
5
  Author-email: John Donaghy <johnfdonaghy@gmail.com>
6
6
  License-Expression: LicenseRef-FSL-1.1-MIT
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.506",
2
+ "tag": "0.5.508",
3
3
  "distance": 0,
4
- "node": "g10b3e0961d928aad40e02740533266e5814d0edd",
4
+ "node": "g8afe10d6337d6c249497f95932b1a6acd5596222",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-09-20"
@@ -5062,6 +5062,136 @@ def _claude_md_system_prompt_suffix(repo_path: str) -> str:
5062
5062
  return "\n\n## Project rules (from CLAUDE.md)\n\n" + claude_md.strip() + "\n"
5063
5063
 
5064
5064
 
5065
+ # #3420: every `claude -p` leg loads the full JSON schema for all built-in
5066
+ # tools regardless of `--allowedTools`, which is a *permission* filter, not a
5067
+ # tool-surface one — a leg with `Read,Bash` in `--allowedTools` still pays
5068
+ # the prompt-token cost of the `Workflow`/`Skill`/etc. schemas it can never
5069
+ # call. Measured with controlled `claude -p` probes on this repo's own
5070
+ # `default_worker_command` flags (Claude Code 2.1.278, `type="work"`): the
5071
+ # schemas for these tools cost 12,134 tokens/turn (44% of the static
5072
+ # prefix), re-read at cache-read rates on every turn of every leg. None of
5073
+ # them has a legitimate use from a headless coord leg:
5074
+ # - `Workflow`: requires explicit user opt-in; a headless leg has no user.
5075
+ # - `Skill`: all `coord` skills are operator-only runbooks.
5076
+ # - `ScheduleWakeup`: every leg is one-shot (WORKER_SYSTEM_PROMPT's
5077
+ # ONE-SHOT section, #1394) — there is no future turn to wake up into.
5078
+ # - `Task`: CLAUDE.md mandates `graphify query` + grep for navigation
5079
+ # instead of spawning a subagent.
5080
+ # - `ReportFindings`, `ListAgents`: unreferenced by any coord system
5081
+ # prompt; no fleet-messaging or review-findings-reporting surface is
5082
+ # exposed to a leg.
5083
+ # - The remainder (`Cron*`, `DesignSync`, `EnterWorktree`/`ExitWorktree`,
5084
+ # `NotebookEdit`, `PushNotification`, `RemoteTrigger`, `SendMessage`):
5085
+ # operator/coordinator-session tools with no worker-leg counterpart —
5086
+ # already deferred behind `ToolSearch` so each costs only ~6-9 tokens,
5087
+ # but included for a consistent, minimal tool surface.
5088
+ #
5089
+ # Deliberately EXCLUDED, despite being equally unusable:
5090
+ # - `Monitor`: 0 marginal token cost, and WORKER_SYSTEM_PROMPT's ONE-SHOT
5091
+ # polling guidance depends on it (it's the sanctioned way to await a
5092
+ # backgrounded command in bounded steps).
5093
+ # - `ToolSearch`: cheap on its own, and removing it is untested — it's the
5094
+ # mechanism that resolves every deferred tool name at all.
5095
+ # - `TaskOutput`/`TaskStop`: look like `Task`'s output/cancel pair at
5096
+ # first glance, but WORKER_SYSTEM_PROMPT's ONE-SHOT section and
5097
+ # coord/smoke.py's SMOKE_SYSTEM_PROMPT both explicitly teach
5098
+ # `TaskOutput` as the bounded-poll alternative to `Monitor` for a
5099
+ # backgrounded Bash command (`run_in_background`) — disallowing it
5100
+ # would make that documented guidance a dead end. `TaskStop` is kept
5101
+ # alongside it since it's the same background-job-management pair.
5102
+ # - `WebFetch`/`WebSearch`: ~6 tokens each either way (negligible), and a
5103
+ # worker may legitimately need to look up library docs or an error
5104
+ # message mid-task — kept allowed rather than trading real capability
5105
+ # for a rounding error in prompt size.
5106
+ UNUSABLE_TOOL_SCHEMAS: list[str] = [
5107
+ "Workflow",
5108
+ "Skill",
5109
+ "ScheduleWakeup",
5110
+ "Task",
5111
+ "ReportFindings",
5112
+ "ListAgents",
5113
+ "CronCreate",
5114
+ "CronDelete",
5115
+ "CronList",
5116
+ "DesignSync",
5117
+ "EnterWorktree",
5118
+ "ExitWorktree",
5119
+ "NotebookEdit",
5120
+ "PushNotification",
5121
+ "RemoteTrigger",
5122
+ "SendMessage",
5123
+ ]
5124
+
5125
+
5126
+ def worker_disallowed_tools(spec: AssignmentSpec, allowed_tools: str) -> list[str]:
5127
+ """Return the ordered ``--disallowedTools`` entries for *spec*.
5128
+
5129
+ **Single source of truth.** Both argv builders that emit
5130
+ ``--disallowedTools`` — :func:`default_worker_command` and
5131
+ :meth:`coord.providers.claude.ClaudeProvider.build_command` — call
5132
+ this, rather than each reimplementing the same four-layer stack. The
5133
+ two previously transcribed the logic independently, which is exactly
5134
+ how #3420's ``UNUSABLE_TOOL_SCHEMAS`` layer landed in one and not the
5135
+ other; the parity suite in ``tests/test_providers.py`` caught it, but
5136
+ a shared function makes the divergence unrepresentable instead of
5137
+ merely detectable.
5138
+
5139
+ Layers, in argv order (each skips entries an earlier layer already
5140
+ added, so the result is de-duplicated but order-stable):
5141
+
5142
+ 1. #3420 ``UNUSABLE_TOOL_SCHEMAS`` — unconditional, every spec type.
5143
+ 2. #1315 sealed-oracle write guard, from ``spec.files_forbidden``.
5144
+ 3. #1642 base-checkout write guard — only when *allowed_tools*
5145
+ actually grants ``Edit``; for the Read/Bash-only chat types the
5146
+ guard would be a no-op cluttering the argv.
5147
+ 4. #2461 ``REVIEW_DENY_COMMANDS`` — only for ``spec.type ==
5148
+ "review"``, wiring the mutating-command deny list into the
5149
+ CLI-enforced flag and not just the soft prompt reminder.
5150
+
5151
+ Args:
5152
+ spec: The assignment being dispatched.
5153
+ allowed_tools: The ``--allowedTools`` value computed for this
5154
+ spec — inspected for ``Edit`` to decide layer 3. Passing the
5155
+ caller's own computed value (rather than re-deriving it here)
5156
+ keeps the two flags consistent even when a caller overrides
5157
+ ``--allowedTools`` explicitly, as ``build_command`` allows.
5158
+
5159
+ Returns:
5160
+ A fresh list; callers may mutate it. Empty only in the
5161
+ impossible case where every layer contributes nothing — since
5162
+ #3420, layer 1 is unconditional, so in practice this is always
5163
+ non-empty and ``--disallowedTools`` is always emitted.
5164
+ """
5165
+ # #3420: strip the unusable-tool schemas from every spec type, including
5166
+ # the Read/Bash-only chat legs (plan, refinement, test-chat,
5167
+ # new-issue-chat, smoke, review) — they carry the same
5168
+ # Workflow/Skill/Task/etc. schemas as a work leg and benefit identically.
5169
+ # This is FIRST so the guards below, which each append to this same
5170
+ # list, keep working unchanged.
5171
+ disallowed_tools = list(UNUSABLE_TOOL_SCHEMAS)
5172
+ # #1315: structural sealing enforcement — see _sealed_write_guard_tools.
5173
+ for pattern in _sealed_write_guard_tools(spec.files_forbidden):
5174
+ if pattern not in disallowed_tools:
5175
+ disallowed_tools.append(pattern)
5176
+ # #1642: block Edit/Write on the shared base checkout for any spec.type
5177
+ # that actually gets Edit/Write in --allowedTools — the Read/Bash-only
5178
+ # chat types can't touch files regardless, and adding the guard there
5179
+ # would be a no-op cluttering their argv for nothing.
5180
+ if "Edit" in allowed_tools:
5181
+ for pattern in _base_checkout_write_guard_tools(spec.repo_path):
5182
+ if pattern not in disallowed_tools:
5183
+ disallowed_tools.append(pattern)
5184
+ # #2461: review gets its mutating-command deny list wired into
5185
+ # --disallowedTools too, not just the soft system-prompt reminder from
5186
+ # build_deny_prompt — the CLI enforces this one even if the model
5187
+ # decides to ignore its own prompt.
5188
+ if spec.type == "review":
5189
+ for pattern in REVIEW_DENY_COMMANDS:
5190
+ if pattern not in disallowed_tools:
5191
+ disallowed_tools.append(pattern)
5192
+ return disallowed_tools
5193
+
5194
+
5065
5195
  def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER_BINARY) -> list[str]:
5066
5196
  """Build the argv for invoking the worker on this assignment.
5067
5197
 
@@ -5347,24 +5477,10 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
5347
5477
  ]
5348
5478
  if spec.model:
5349
5479
  argv.extend(["--model", spec.model])
5350
- # #1315: structural sealing enforcement — see _sealed_write_guard_tools.
5351
- disallowed_tools = _sealed_write_guard_tools(spec.files_forbidden)
5352
- # #1642: block Edit/Write on the shared base checkout for any spec.type
5353
- # that actually gets Edit/Write in --allowedTools — the Read/Bash-only
5354
- # chat types above can't touch files regardless, and adding the guard
5355
- # there would be a no-op cluttering their argv for nothing.
5356
- if "Edit" in allowed_tools:
5357
- for pattern in _base_checkout_write_guard_tools(spec.repo_path):
5358
- if pattern not in disallowed_tools:
5359
- disallowed_tools.append(pattern)
5360
- # #2461: review gets its mutating-command deny list wired into
5361
- # --disallowedTools too, not just the soft system-prompt reminder from
5362
- # build_deny_prompt above — the CLI enforces this one even if the model
5363
- # decides to ignore its own prompt.
5364
- if spec.type == "review":
5365
- for pattern in REVIEW_DENY_COMMANDS:
5366
- if pattern not in disallowed_tools:
5367
- disallowed_tools.append(pattern)
5480
+ # #3420 / #1315 / #1642 / #2461: all four --disallowedTools layers live
5481
+ # in worker_disallowed_tools, shared with ClaudeProvider.build_command so
5482
+ # the two argv builders cannot drift apart (see that function's docstring).
5483
+ disallowed_tools = worker_disallowed_tools(spec, allowed_tools)
5368
5484
  if disallowed_tools:
5369
5485
  argv.extend(["--disallowedTools", ",".join(disallowed_tools)])
5370
5486
  # #315: when resuming a prior chat session, load the prior conversation so
@@ -2477,6 +2477,114 @@ def _confirmed_pass_verdict(
2477
2477
  )
2478
2478
 
2479
2479
 
2480
+ def _mechanical_mute_verdict(
2481
+ transition: Transition, entry: dict, parent_id: str,
2482
+ ) -> tuple[str, str, str] | None:
2483
+ """#3415: for a MUTE Test-stage leg (no `SMOKE:` marker at all, clean
2484
+ session exit), attempt the same out-of-band mechanical re-run #2464 uses
2485
+ to double-check a *claimed* pass — except here there is no claim to
2486
+ confirm, so a decisive result becomes the verdict directly.
2487
+
2488
+ Why this exists: sampling every #3376 "reached done with no verdict"
2489
+ alarm found the identical shape 7 times out of 7 — a headless Test-stage
2490
+ worker backgrounds a suite that exceeds the Bash ceiling, correctly
2491
+ states the rule ("I'll poll with bounded waits"), and then ends its turn
2492
+ anyway. That is not a coord bug to patch around with a sterner prompt;
2493
+ ending a one-shot `claude -p` turn ends the session permanently, so no
2494
+ notification the backgrounded suite eventually produces can ever reach
2495
+ it. The prompt already spends two capitalized bullets on this (#2272,
2496
+ #2301) and the observed compliance rate is 0/7 — more emphasis cannot
2497
+ raise a structural non-starter to a rate the Test gate can depend on.
2498
+
2499
+ `coord.confirm_test.confirm_branch` needs no LLM and no waiting: it
2500
+ re-runs the repo's own build/test command in a throwaway worktree and
2501
+ reads the real exit code. Reusing it here — instead of only as the
2502
+ pass-claim backstop — deletes the mute leg's reason to exist for every
2503
+ repo whose suite this machine can actually run, rather than bounding it
2504
+ with a bigger retry budget.
2505
+
2506
+ Returns ``None`` when the run is inconclusive or unavailable (disabled,
2507
+ no local checkout, no test_command, a timeout, ...) — the existing
2508
+ mute-leg tally (count the leg, clear for one retry, then park at the
2509
+ budget) is exactly the right fallback for "still no answer either way",
2510
+ and this never invents one it doesn't have.
2511
+ """
2512
+ from coord.confirm_test import ( # noqa: PLC0415
2513
+ BASELINE_RED_REASON_PREFIX,
2514
+ TEST_CONFIRMATION_BASELINE_RED,
2515
+ TEST_CONFIRMATION_CONFIRMED,
2516
+ TEST_CONFIRMATION_REFUTED,
2517
+ write_confirmation_output,
2518
+ )
2519
+ from coord.state import load_assignment_review_verdict # noqa: PLC0415
2520
+
2521
+ result = _run_pass_confirmation(transition, entry)
2522
+ if result is None or result.inconclusive:
2523
+ return None # no decisive answer — fall back to the mute-leg tally
2524
+
2525
+ try:
2526
+ write_confirmation_output(parent_id, result)
2527
+ except Exception as exc: # noqa: BLE001
2528
+ log.warning(
2529
+ "smoke %s: could not persist mechanical confirmation output for "
2530
+ "parent %s (%s) — a later fix briefing will fall back to the "
2531
+ "one-line reason (#2563/#3415).",
2532
+ transition.assignment_id, parent_id, exc,
2533
+ )
2534
+
2535
+ if result.refuted:
2536
+ log.warning(
2537
+ "smoke %s: mute Test-stage leg for %s — the mechanical fallback "
2538
+ "re-run (#3415) says FAILED: %s\n%s",
2539
+ transition.assignment_id, transition.repo_name, result.reason,
2540
+ result.output,
2541
+ )
2542
+ # #2579: same race as `_confirmed_pass_verdict` — a review can
2543
+ # approve before this out-of-band run lands (review dispatch gates
2544
+ # on `test_state`, not on confirmation). Plain "failed" would then
2545
+ # be indistinguishable from an ordinary Test-stage failure and
2546
+ # silently bounce an already-approved branch to a fix worker.
2547
+ _review_state, _review_verdict = load_assignment_review_verdict(parent_id)
2548
+ if _review_verdict == "approve":
2549
+ return (
2550
+ TEST_STATE_CONTESTED,
2551
+ f"CONTESTED (#2579/#3415): the Test-stage worker "
2552
+ f"{transition.assignment_id} ended mute (no verdict marker "
2553
+ "line), and the mechanical fallback re-run REFUTED the "
2554
+ f"branch AFTER its review had already approved it "
2555
+ f"(review_state={_review_state!r}) — {result.reason}. The "
2556
+ "merge gate stays shut, but no fix round is auto-dispatched "
2557
+ f"— recover with `coord fix --force --guidance <what's "
2558
+ f"broken> {parent_id}` or re-dispatch the Test stage by "
2559
+ "hand.",
2560
+ TEST_CONFIRMATION_REFUTED,
2561
+ )
2562
+ return (
2563
+ "failed",
2564
+ "headless smoke ended mute (no verdict marker line) — the "
2565
+ f"mechanical fallback re-run (#3415) ran the real suite and it "
2566
+ f"FAILED: {result.reason}",
2567
+ TEST_CONFIRMATION_REFUTED,
2568
+ )
2569
+
2570
+ if result.baseline_red:
2571
+ return (
2572
+ "skipped",
2573
+ f"{BASELINE_RED_REASON_PREFIX}, found by the mechanical fallback "
2574
+ f"re-run after a mute Test-stage leg (#3415): {result.reason}",
2575
+ TEST_CONFIRMATION_BASELINE_RED,
2576
+ )
2577
+
2578
+ # result.confirmed
2579
+ return (
2580
+ "passed",
2581
+ "headless smoke ended mute (no verdict marker line), but the "
2582
+ f"mechanical fallback re-run (#3415) independently ran the real "
2583
+ f"suite and it passed: {result.reason}",
2584
+ TEST_CONFIRMATION_CONFIRMED,
2585
+ )
2586
+
2587
+
2480
2588
  def _record_smoke_verdict(
2481
2589
  transition: Transition, entry: dict, parent_id: str,
2482
2590
  ) -> None:
@@ -2658,6 +2766,29 @@ def _record_smoke_verdict(
2658
2766
 
2659
2767
  # No verdict line, clean session exit. NOT a pass.
2660
2768
  #
2769
+ # #3415: before treating this as "no answer, retry", ask the mechanical
2770
+ # fallback (`coord.confirm_test.confirm_branch`, no LLM, no waiting) for
2771
+ # a real one. 7/7 sampled mute legs backgrounded the suite, correctly
2772
+ # stated the polling rule, and ended their turn anyway — that is a
2773
+ # structural property of a one-shot session, not something a bigger
2774
+ # retry budget fixes. A decisive mechanical result is recorded straight
2775
+ # away, with no leg spent and no tally incremented.
2776
+ mechanical = _mechanical_mute_verdict(transition, entry, parent_id)
2777
+ if mechanical is not None:
2778
+ state, reason, confirmation = mechanical
2779
+ record_test_verdict(
2780
+ assignment_id=parent_id,
2781
+ test_state=state,
2782
+ test_reason=reason,
2783
+ test_confirmation=confirmation,
2784
+ )
2785
+ log.info(
2786
+ "smoke %s: mute Test-stage leg — the #3415 mechanical fallback "
2787
+ "reached a decisive verdict %r with no retry needed.",
2788
+ transition.assignment_id, state,
2789
+ )
2790
+ return
2791
+
2661
2792
  # #2272: count the legs, don't just test for the marker's presence. The
2662
2793
  # tally lives at the FRONT of `test_reason` so a bounded `/board` preview
2663
2794
  # still carries it, and `dispatch_smoke` re-states it across the `running`
@@ -2,10 +2,13 @@
2
2
 
3
3
  Parity requirement: ``ClaudeProvider().build_command(spec)`` produces the
4
4
  **same argv** as ``coord.agent.default_worker_command(spec)`` for the same
5
- inputs. The logic is a direct transcription of that function's body with
6
- the ``resolved_model`` / ``system_prompt`` / ``allowed_tools`` /
7
- ``permission_mode`` kwargs spliced in; the parity tests in
8
- ``tests/test_providers.py`` enforce this mechanically.
5
+ inputs. The ``spec.type`` → prompt/allowed-tools branches are a direct
6
+ transcription of that function's body with the ``resolved_model`` /
7
+ ``system_prompt`` / ``allowed_tools`` / ``permission_mode`` kwargs spliced
8
+ in; the parity tests in ``tests/test_providers.py`` enforce this
9
+ mechanically. The ``--disallowedTools`` stack is **not** transcribed —
10
+ both builders call the shared ``coord.agent.worker_disallowed_tools``, so
11
+ a new deny layer lands in both without a sync step (#3420).
9
12
 
10
13
  Imports from ``coord.agent`` are **deferred** (inside method bodies) to keep
11
14
  the import cycle latent until the wiring issue lands. At that point
@@ -119,10 +122,9 @@ class ClaudeProvider(Provider):
119
122
  TEST_CHAT_SYSTEM_PROMPT,
120
123
  WORKER_PLAN_PROMPT,
121
124
  WORKER_SYSTEM_PROMPT,
122
- _base_checkout_write_guard_tools,
123
125
  _claude_md_system_prompt_suffix,
124
- _sealed_write_guard_tools,
125
126
  build_deny_prompt,
127
+ worker_disallowed_tools,
126
128
  )
127
129
  from coord.review import REVIEWER_SYSTEM_PROMPT # noqa: PLC0415
128
130
  from coord.smoke import SMOKE_SYSTEM_PROMPT # noqa: PLC0415
@@ -285,20 +287,16 @@ class ClaudeProvider(Provider):
285
287
  ]
286
288
  if effective_model:
287
289
  argv.extend(["--model", effective_model])
288
- # #1315 / #1642: same structural write guards as
289
- # default_worker_command — sealed-oracle prefix plus (for any type
290
- # with Edit in --allowedTools) the shared base checkout.
291
- disallowed_tools = _sealed_write_guard_tools(spec.files_forbidden)
292
- if "Edit" in allowed_tools:
293
- for pattern in _base_checkout_write_guard_tools(spec.repo_path):
294
- if pattern not in disallowed_tools:
295
- disallowed_tools.append(pattern)
296
- # #2461: same CLI-enforced hard block as default_worker_command —
297
- # see REVIEW_DENY_COMMANDS.
298
- if spec.type == "review":
299
- for pattern in REVIEW_DENY_COMMANDS:
300
- if pattern not in disallowed_tools:
301
- disallowed_tools.append(pattern)
290
+ # #3420 / #1315 / #1642 / #2461: NOT transcribed from
291
+ # default_worker_command like the branches above — both builders call
292
+ # the one shared `worker_disallowed_tools`, so a new deny layer lands
293
+ # in both by construction. It previously WAS transcribed here, and
294
+ # #3420's unusable-tool-schema layer went into default_worker_command
295
+ # only; the parity suite caught the drift, but the shared call means
296
+ # there is nothing left to keep in sync. Pass this method's own
297
+ # `allowed_tools` (possibly a caller override) so the two flags stay
298
+ # consistent.
299
+ disallowed_tools = worker_disallowed_tools(spec, allowed_tools)
302
300
  if disallowed_tools:
303
301
  argv.extend(["--disallowedTools", ",".join(disallowed_tools)])
304
302
  if spec.resume_session_id:
@@ -250,6 +250,21 @@ which is why it lives here rather than in the file every worker leg loads. The o
250
250
  statements of these rules remain in `CLAUDE.md`'s "Key Design Decisions"; the reasoning is
251
251
  here.
252
252
 
253
+ ### How the review prompt is assembled
254
+
255
+ The reviewer gets a prompt built from:
256
+ 1. **Repo's CLAUDE.md** — the project rules (source of truth, not duplicated)
257
+ 2. **Generic checklist** — "did you add tests?", "did you stay in file scope?", "any security issues?"
258
+ 3. **Repo overrides** — project-specific patterns from `coordinator.yml` `reviews.repo_overrides`
259
+ 4. **The diff** — `gh pr diff` of the worker's branch vs base
260
+ 5. **The issue** — title and body for intent verification
261
+
262
+ The reviewer reads the rules and enforces them against the diff. It does not have the worker's session context — genuinely independent.
263
+
264
+ Moved here from [`CLAUDE.md`](../CLAUDE.md) (#3422). The reviewer does not need a description
265
+ of how its own prompt was built, and neither does a worker — this is for someone editing
266
+ `coord/review.py`.
267
+
253
268
  ### Agent servers are dumb dispatchers
254
269
 
255
270
  They spawn `claude -p` and track the subprocess. All intelligence is in the coordinator
@@ -19,6 +19,29 @@ in `docs/`.*
19
19
  still manual. Epic #3117.
20
20
  - [`DRIVE_QUEUE.md`](DRIVE_QUEUE.md) — the durable, board-backed driver (`coord drive-queue`, #1750). **Read the top section before queuing more than ~2 issues on one repo.**
21
21
 
22
+ ## The core loop
23
+
24
+ Moved here from [`CLAUDE.md`](../CLAUDE.md) (#3422): a worker cannot run any of these —
25
+ the coordinator owns dispatch and GitHub — so it was pure operator surface being re-read
26
+ on every turn of every leg. `coord <cmd> --help` remains the authoritative reference.
27
+
28
+ `coord <cmd> --help` documents every command + flags. The core loop:
29
+
30
+ ```bash
31
+ coord plan # Brain proposes assignments for idle machines
32
+ coord approve 1,3 # Dispatch approved proposals (comma-separated IDs)
33
+ coord assign <machine> <repo> <issue> [--briefing TEXT | --briefing-file F] [--dry-run] # Direct dispatch
34
+ coord status [--freshness] # Machines, assignments, connectivity (+ repo freshness vs GitHub HEADs)
35
+ coord log <id> [-f] [--machine NAME] # claude -p output (remote logs need --machine)
36
+ coord notify # Poll agents, post completion/failure comments to GitHub
37
+ coord test --passed|--fail|--skipped <id> # Record the Test-gate verdict (bare `coord test <id>` builds+tests locally)
38
+ coord merge [--dry-run] [--repo NAME] [--method rebase|squash|merge] [--order IDs] [--force-merge]
39
+ coord reconcile-merges # Backfill missing branches + record out-of-band merges (#609/#611)
40
+ coord retry|stop|resume <id> # Recovery; `coord done` ends the session
41
+ ```
42
+
43
+ Setup / diagnostics (discoverable via `--help`): `coord init`, `coord config`, `coord agent`, `coord serve`, `coord web`, `coord diagnose`, `coord sessions [--remote]`, `coord split`, `coord notifier`, `coord repo add` / `coord repo doctor`.
44
+
22
45
  ## Reference
23
46
 
24
47
  - [`ARCHITECTURE.md`](ARCHITECTURE.md) — how it all fits together, plus the settled design rationale. Two diagnostic entry points: [why a merge/review isn't happening](ARCHITECTURE.md#when-a-merge-isnt-happening) (**check here first when "Go does nothing"**) and [why an issue is in the Pipeline you never dispatched](ARCHITECTURE.md#when-an-issue-is-sitting-in-the-pipeline-you-never-dispatched).