code-coordinator 0.5.512__tar.gz → 0.5.514__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 (908) hide show
  1. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/code_coordinator.egg-info/SOURCES.txt +1 -0
  4. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/code_coordinator.egg-info/scm_file_list.json +1 -0
  5. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/code_coordinator.egg-info/scm_version.json +2 -2
  6. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/claim.py +30 -12
  7. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/issues.py +63 -1
  8. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/milestone.py +52 -38
  9. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/dispatch.py +11 -7
  10. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/dispatch_liveness.py +23 -16
  11. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/milestone_dispatch.py +6 -4
  12. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/reconcile.py +33 -18
  13. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/smoke.py +13 -6
  14. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_claim.py +34 -0
  15. code_coordinator-0.5.514/tests/test_cli_issues.py +274 -0
  16. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_network.py +1 -1
  17. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dispatch.py +29 -7
  18. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dispatch_liveness.py +20 -2
  19. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_reconcile.py +56 -3
  20. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_smoke.py +44 -5
  21. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/.claude/commands/board.md +0 -0
  22. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/.claude/commands/complete-session.md +0 -0
  23. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/.claude/commands/coordinator.md +0 -0
  24. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/.githooks/_lib.sh +0 -0
  25. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/.githooks/post-checkout +0 -0
  26. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/.githooks/post-commit +0 -0
  27. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/.githooks/post-merge +0 -0
  28. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  29. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/.github/coord-ci-acceptance.yml +0 -0
  30. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/.github/workflows/auto-release.yml +0 -0
  31. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/.github/workflows/publish.yml +0 -0
  32. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/.github/workflows/test.yml +0 -0
  33. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/.gitignore +0 -0
  34. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/CLAUDE.md +0 -0
  35. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/GOAL.md +0 -0
  36. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/LICENSE +0 -0
  37. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/MANIFEST.in +0 -0
  38. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/README.md +0 -0
  39. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/code_coordinator.egg-info/dependency_links.txt +0 -0
  40. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/code_coordinator.egg-info/entry_points.txt +0 -0
  41. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/code_coordinator.egg-info/requires.txt +0 -0
  42. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/code_coordinator.egg-info/top_level.txt +0 -0
  43. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/__init__.py +0 -0
  44. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/_board_mapping.py +0 -0
  45. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/acceptance.py +0 -0
  46. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/acceptance_drivers.py +0 -0
  47. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/agent.py +0 -0
  48. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/agent_app.py +0 -0
  49. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/agent_update.py +0 -0
  50. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/agents/opencode/.gitignore +0 -0
  51. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/agents/opencode/agents/work.md +0 -0
  52. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/agents/opencode/routing.jsonc +0 -0
  53. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/approved_work.py +0 -0
  54. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/audit.py +0 -0
  55. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/auto_loop.py +0 -0
  56. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/backup.py +0 -0
  57. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/block_log.py +0 -0
  58. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/board_schema.py +0 -0
  59. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/board_service.py +0 -0
  60. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/board_wire.py +0 -0
  61. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/brain.py +0 -0
  62. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/branch_model.py +0 -0
  63. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/bug_intake.py +0 -0
  64. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/cargo_cache.py +0 -0
  65. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/ci_fix.py +0 -0
  66. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/ci_github.py +0 -0
  67. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/ci_gitlab.py +0 -0
  68. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/ci_store.py +0 -0
  69. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/claude_setup_token.py +0 -0
  70. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/cli.py +0 -0
  71. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/client.py +0 -0
  72. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/codegen.py +0 -0
  73. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/__init__.py +0 -0
  74. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/_common.py +0 -0
  75. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/acceptance.py +0 -0
  76. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/agent_ops.py +0 -0
  77. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/audit.py +0 -0
  78. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/backup.py +0 -0
  79. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/chat.py +0 -0
  80. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/ci.py +0 -0
  81. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/codegen.py +0 -0
  82. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/dispatch.py +0 -0
  83. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/dispatch_workers.py +0 -0
  84. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/dr.py +0 -0
  85. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/drive.py +0 -0
  86. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/drive_queue.py +0 -0
  87. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/gate_a.py +0 -0
  88. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/gates.py +0 -0
  89. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/lifecycle.py +0 -0
  90. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/machine.py +0 -0
  91. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/merge.py +0 -0
  92. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/plan_followup.py +0 -0
  93. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/plans.py +0 -0
  94. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/portal.py +0 -0
  95. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/pr.py +0 -0
  96. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/release.py +0 -0
  97. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/repo.py +0 -0
  98. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/report.py +0 -0
  99. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/review.py +0 -0
  100. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/scorecard.py +0 -0
  101. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/sessions.py +0 -0
  102. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/setup.py +0 -0
  103. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/status.py +0 -0
  104. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/store_migrate.py +0 -0
  105. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/terminal.py +0 -0
  106. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/test_gate.py +0 -0
  107. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/commands/tui.py +0 -0
  108. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/comments.py +0 -0
  109. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/config.py +0 -0
  110. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/config_reload.py +0 -0
  111. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/confirm_test.py +0 -0
  112. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/conflict_fix.py +0 -0
  113. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/dao.py +0 -0
  114. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/dashboard/__init__.py +0 -0
  115. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/dashboard/fixture.py +0 -0
  116. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/dashboard/index.html +0 -0
  117. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/dashboard/server.py +0 -0
  118. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/dashboard/terminal.py +0 -0
  119. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/db.py +0 -0
  120. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/dead_end.py +0 -0
  121. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/decomposition_chat.py +0 -0
  122. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/README.md +0 -0
  123. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-agent.service +0 -0
  124. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-backup.service +0 -0
  125. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-backup.timer +0 -0
  126. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-db-backup.service +0 -0
  127. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-db-backup.sh +0 -0
  128. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-db-backup.timer +0 -0
  129. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-dr-verify.service +0 -0
  130. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-dr-verify.timer +0 -0
  131. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-drive-queue.service +0 -0
  132. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-drive-queue.timer +0 -0
  133. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-failure-notify.service +0 -0
  134. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-fleet-watchdog.service +0 -0
  135. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  136. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-notify.service +0 -0
  137. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-notify.timer +0 -0
  138. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-release-propagate.service +0 -0
  139. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-release-propagate.timer +0 -0
  140. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-release-window.service +0 -0
  141. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-release-window.timer +0 -0
  142. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-serve.service +0 -0
  143. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-web-dist-build.service +0 -0
  144. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-web-dist-build.timer +0 -0
  145. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy/coord-web.service +0 -0
  146. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy_manifest.py +0 -0
  147. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deploy_units.py +0 -0
  148. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deprecation_telemetry.py +0 -0
  149. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/deps.py +0 -0
  150. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/diagnose.py +0 -0
  151. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/dist_name.py +0 -0
  152. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/dr_promote.py +0 -0
  153. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/dr_verify.py +0 -0
  154. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/drive.py +0 -0
  155. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/drive_queue.py +0 -0
  156. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/drive_sessions_snapshot.py +0 -0
  157. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/drive_state.py +0 -0
  158. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/events.py +0 -0
  159. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/failure_class.py +0 -0
  160. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/failure_classifier.py +0 -0
  161. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/filelock.py +0 -0
  162. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/fleet_config_health.py +0 -0
  163. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/forge_availability.py +0 -0
  164. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/freshness.py +0 -0
  165. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/gate_a.py +0 -0
  166. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/gate_b.py +0 -0
  167. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/gate_snapshot.py +0 -0
  168. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/gates.py +0 -0
  169. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/gen_board_fixture.py +0 -0
  170. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/github_ops.py +0 -0
  171. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/github_throttle.py +0 -0
  172. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/goal.py +0 -0
  173. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/graph_health.py +0 -0
  174. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/__init__.py +0 -0
  175. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/aggregate.py +0 -0
  176. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/__init__.py +0 -0
  177. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/_ci_pin.py +0 -0
  178. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/agent_install.py +0 -0
  179. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/cargo_targets.py +0 -0
  180. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/claude_binary.py +0 -0
  181. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/config_drift.py +0 -0
  182. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  183. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/coord_web_ci_pin.py +0 -0
  184. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/deploy_lane_facts.py +0 -0
  185. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/disk.py +0 -0
  186. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/fleet_board.py +0 -0
  187. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  188. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/fleet_phantom.py +0 -0
  189. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/fleet_unit_drift.py +0 -0
  190. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/graph.py +0 -0
  191. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/graphify_cli.py +0 -0
  192. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/index_lock.py +0 -0
  193. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/issues_sync_staleness.py +0 -0
  194. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/plan_usage.py +0 -0
  195. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/pr_churn.py +0 -0
  196. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/release_cordon.py +0 -0
  197. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/repo_state.py +0 -0
  198. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/spawned_coord.py +0 -0
  199. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/stalled_pipeline.py +0 -0
  200. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/timer_active.py +0 -0
  201. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/toolchain.py +0 -0
  202. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/unit_drift.py +0 -0
  203. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/unit_enablement.py +0 -0
  204. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/wedged_drive_queue.py +0 -0
  205. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/checks/worktrees.py +0 -0
  206. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/cli.py +0 -0
  207. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/context.py +0 -0
  208. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/fleet_snapshot.py +0 -0
  209. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/models.py +0 -0
  210. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/pypi.py +0 -0
  211. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/registry.py +0 -0
  212. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/render.py +0 -0
  213. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/health/units.py +0 -0
  214. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/hooks.py +0 -0
  215. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/housekeeping.py +0 -0
  216. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/interactive.py +0 -0
  217. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/invariant_alarms.py +0 -0
  218. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/issue_store.py +0 -0
  219. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/issues_sync_status.py +0 -0
  220. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/liveness_auditor.py +0 -0
  221. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/machine_fault.py +0 -0
  222. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/machine_metrics.py +0 -0
  223. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/machine_onboard.py +0 -0
  224. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/machine_pause.py +0 -0
  225. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/machine_stats.py +0 -0
  226. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/merge_queue.py +0 -0
  227. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/milestone_chat.py +0 -0
  228. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/milestone_gate.py +0 -0
  229. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/milestone_order.py +0 -0
  230. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/mock_author.py +0 -0
  231. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/models.py +0 -0
  232. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/network.py +0 -0
  233. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/new_issue_chat.py +0 -0
  234. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/notifier/__init__.py +0 -0
  235. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/notifier/baseline.py +0 -0
  236. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/notifier/cli.py +0 -0
  237. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/notifier/collect.py +0 -0
  238. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/notifier/digest.py +0 -0
  239. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/notifier/models.py +0 -0
  240. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/notifier/predicate.py +0 -0
  241. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/notifier/service.py +0 -0
  242. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/notifier/store.py +0 -0
  243. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/notifier/transport.py +0 -0
  244. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/notify.py +0 -0
  245. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/openapi.py +0 -0
  246. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/overlap_fence.py +0 -0
  247. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/overlap_predict.py +0 -0
  248. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/parentage.py +0 -0
  249. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/parentage_github.py +0 -0
  250. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/pipeline.py +0 -0
  251. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/plan_parser.py +0 -0
  252. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/plans.py +0 -0
  253. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/platform_paths.py +0 -0
  254. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/portal_bridge.py +0 -0
  255. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/portal_store.py +0 -0
  256. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/portal_sync.py +0 -0
  257. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/pr_body_lint.py +0 -0
  258. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/prereqs.py +0 -0
  259. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/progress.py +0 -0
  260. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/providers/__init__.py +0 -0
  261. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/providers/base.py +0 -0
  262. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/providers/claude.py +0 -0
  263. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/providers/claude_pty.py +0 -0
  264. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/providers/opencode.py +0 -0
  265. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/queue_diagnose.py +0 -0
  266. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/reconcile_tick.py +0 -0
  267. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/refine_chat.py +0 -0
  268. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/release_cordon.py +0 -0
  269. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/release_propagate.py +0 -0
  270. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/release_verify.py +0 -0
  271. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/release_window.py +0 -0
  272. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/repo_dormancy.py +0 -0
  273. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/repo_edit.py +0 -0
  274. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/repo_onboard.py +0 -0
  275. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/reports.py +0 -0
  276. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/rest_schema.py +0 -0
  277. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/restart_cmd.py +0 -0
  278. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/revalidate.py +0 -0
  279. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/review.py +0 -0
  280. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/scorecard.py +0 -0
  281. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/self_health.py +0 -0
  282. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/serve_app.py +0 -0
  283. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  284. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  285. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  286. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  287. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  288. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/skills/portal-followup/SKILL.md +0 -0
  289. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/skills/release-now/SKILL.md +0 -0
  290. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  291. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  292. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/skills/update-issue/SKILL.md +0 -0
  293. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/spend_ceiling.py +0 -0
  294. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/split_work.py +0 -0
  295. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/sql.py +0 -0
  296. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/stage_projection.py +0 -0
  297. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/state.py +0 -0
  298. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/store_migrate.py +0 -0
  299. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/store_parity.py +0 -0
  300. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/templates/deploy-cloudflare.node.yml +0 -0
  301. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/test_author.py +0 -0
  302. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/test_chat.py +0 -0
  303. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/test_orchestrator.py +0 -0
  304. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/test_report.py +0 -0
  305. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/tui_release.py +0 -0
  306. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/uat_checks.py +0 -0
  307. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/usage.py +0 -0
  308. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/usage_limits.py +0 -0
  309. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/usage_rollup.py +0 -0
  310. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coord/worker_events.py +0 -0
  311. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/coordinator.example.yml +0 -0
  312. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-agent.service +0 -0
  313. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-backup.service +0 -0
  314. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-backup.timer +0 -0
  315. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-db-backup.service +0 -0
  316. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-db-backup.sh +0 -0
  317. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-db-backup.timer +0 -0
  318. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-dr-verify.service +0 -0
  319. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-dr-verify.timer +0 -0
  320. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-drive-queue.service +0 -0
  321. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-drive-queue.timer +0 -0
  322. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-failure-notify.service +0 -0
  323. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-failure-notify.sh +0 -0
  324. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-fleet-watchdog.service +0 -0
  325. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-fleet-watchdog.timer +0 -0
  326. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-notify.service +0 -0
  327. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-notify.timer +0 -0
  328. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-release-propagate.service +0 -0
  329. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-release-propagate.timer +0 -0
  330. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-release-window.service +0 -0
  331. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-release-window.timer +0 -0
  332. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-serve.service +0 -0
  333. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-web-dist-build.service +0 -0
  334. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-web-dist-build.sh +0 -0
  335. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-web-dist-build.timer +0 -0
  336. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-web-rollback.sh +0 -0
  337. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/coord-web.service +0 -0
  338. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/deploy/node-shim.sh +0 -0
  339. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/ADR_COORD_TUI_CI.md +0 -0
  340. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  341. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/ADR_COORD_WEB_CI.md +0 -0
  342. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/ADR_COORD_WEB_DIST.md +0 -0
  343. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  344. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/AGENT_OPERATIONS.md +0 -0
  345. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/ARCHITECTURE.md +0 -0
  346. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/ARCH_SECURITY_GATES.md +0 -0
  347. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/COCKPIT.md +0 -0
  348. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/CONTROL_CENTER.md +0 -0
  349. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/COST_DISCIPLINE.md +0 -0
  350. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/CROSS_PLATFORM.md +0 -0
  351. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/CUSTOMER_FACING_APPS.md +0 -0
  352. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/CUSTOMER_PORTAL.md +0 -0
  353. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/DATA_STORE_SELECTION.md +0 -0
  354. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/DISASTER_RECOVERY.md +0 -0
  355. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/DRIVE_QUEUE.md +0 -0
  356. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/EPHEMERAL_WORKERS.md +0 -0
  357. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/FORGE_MIGRATION.md +0 -0
  358. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/GRAPHIFY_SETUP.md +0 -0
  359. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/ISSUE_GUIDANCE.md +0 -0
  360. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/MAC_MINI.md +0 -0
  361. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  362. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/NOTIFIER.md +0 -0
  363. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/OPENCODE_VERIFICATION.md +0 -0
  364. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/OPERATING_GOTCHAS.md +0 -0
  365. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/OPERATOR_GUIDES.md +0 -0
  366. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/ORACLE_LOOP.md +0 -0
  367. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/PHONE_WEBAPP.md +0 -0
  368. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/PIPELINE_V2.md +0 -0
  369. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/PLATFORM_EVOLUTION.md +0 -0
  370. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/SECOND_BACKEND.md +0 -0
  371. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/STORE_SERVICE.md +0 -0
  372. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  373. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/WEB_CONTROL_CENTER.md +0 -0
  374. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/WSL_WINDOWS_WORKER.md +0 -0
  375. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/mocks/web/README.md +0 -0
  376. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/mocks/web/_tokens.css +0 -0
  377. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/mocks/web/issue-detail.html +0 -0
  378. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/mocks/web/pipeline-narrow.html +0 -0
  379. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/docs/mocks/web/pipeline-wide.html +0 -0
  380. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/graphify-out/.gitignore +0 -0
  381. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/install-agent.sh +0 -0
  382. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/pyproject.toml +0 -0
  383. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/audit_review_verdict_overrides.py +0 -0
  384. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  385. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/azure-workers/build-worker-image.sh +0 -0
  386. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/azure-workers/coordinator-machine.py +0 -0
  387. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/azure-workers/dr-down.sh +0 -0
  388. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/azure-workers/dr-up.sh +0 -0
  389. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/azure-workers/epic-down.sh +0 -0
  390. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/azure-workers/epic-up.sh +0 -0
  391. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/azure-workers/preflight.sh +0 -0
  392. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/azure-workers/provision-server.sh +0 -0
  393. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/azure-workers/provision-worker.sh +0 -0
  394. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  395. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  396. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/azure-workers/throwaway-vm.sh +0 -0
  397. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/azure-workers/verify-github-token.sh +0 -0
  398. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/check_gh_argv_containment.py +0 -0
  399. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/codegen.py +0 -0
  400. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/coord-test-runner.sh +0 -0
  401. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  402. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  403. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  404. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  405. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/coord-venv-rollback.sh +0 -0
  406. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/drive-batch.sh +0 -0
  407. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/extract-coord-tui.sh +0 -0
  408. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/fleet_watchdog.py +0 -0
  409. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/gen_board_fixture.py +0 -0
  410. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/gen_mock_index.py +0 -0
  411. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/lib/provision-core.sh +0 -0
  412. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/next_release_tag.py +0 -0
  413. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/provision-machine.sh +0 -0
  414. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/run_tests_in_populated_home.sh +0 -0
  415. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/run_tests_without_gh.sh +0 -0
  416. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/setup-macmini.sh +0 -0
  417. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/smoke_437_interactive.py +0 -0
  418. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/verify-provision-noble.sh +0 -0
  419. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/verify_878_review_capture.py +0 -0
  420. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/verify_release_published.py +0 -0
  421. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/scripts/verify_release_wheel.py +0 -0
  422. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/setup.cfg +0 -0
  423. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/SMOKE_SET.md +0 -0
  424. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/__init__.py +0 -0
  425. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/acceptance/ms-37/conftest.py +0 -0
  426. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/acceptance/ms-37/contract.md +0 -0
  427. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/acceptance/ms-37/manifest.yml +0 -0
  428. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  429. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  430. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/acceptance/ms-51/contract.md +0 -0
  431. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  432. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  433. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/acceptance/ms-51/manifest.yml +0 -0
  434. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  435. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/acceptance/ms-51/tsconfig.json +0 -0
  436. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  437. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/backends.py +0 -0
  438. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/conftest.py +0 -0
  439. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/board-pipeline-basic.json +0 -0
  440. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  441. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  442. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  443. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  444. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/playwright/all_pass.json +0 -0
  445. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  446. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/playwright/mixed_fail.json +0 -0
  447. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  448. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  449. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/playwright/skip.json +0 -0
  450. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/playwright/truncated.json +0 -0
  451. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  452. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  453. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  454. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  455. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  456. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  457. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  458. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  459. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_acceptance.py +0 -0
  460. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_acceptance_drivers.py +0 -0
  461. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent.py +0 -0
  462. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_api_error.py +0 -0
  463. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_app.py +0 -0
  464. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_branch_base.py +0 -0
  465. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_branch_capture.py +0 -0
  466. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_config_free_1712.py +0 -0
  467. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_deploy_units_endpoint.py +0 -0
  468. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_dirty_worktree.py +0 -0
  469. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  470. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_graph_self_heal.py +0 -0
  471. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_health_h3.py +0 -0
  472. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_idle_restart.py +0 -0
  473. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_push_failure.py +0 -0
  474. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_reap.py +0 -0
  475. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_repos_and_pull.py +0 -0
  476. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_restart_services_endpoint.py +0 -0
  477. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_skills_self_heal.py +0 -0
  478. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_startup_diagnostics.py +0 -0
  479. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_update.py +0 -0
  480. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_update_bluegreen.py +0 -0
  481. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_usage_limit.py +0 -0
  482. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_agent_zero_commit.py +0 -0
  483. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_ambient_home_isolation.py +0 -0
  484. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_approve_capability_reroute_3241.py +0 -0
  485. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_approve_dependency_busy_2804.py +0 -0
  486. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_approve_reject_plan.py +0 -0
  487. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_approve_usage_gate.py +0 -0
  488. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_approved_work_2532.py +0 -0
  489. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_approved_work_2996.py +0 -0
  490. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_assignment_already_recorded_daemon.py +0 -0
  491. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_audit_log.py +0 -0
  492. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_audit_outcome.py +0 -0
  493. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_audit_query.py +0 -0
  494. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_auto_loop.py +0 -0
  495. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_auto_release_publish_2035.py +0 -0
  496. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_backend_selection.py +0 -0
  497. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_backup.py +0 -0
  498. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_base_checkout_restore.py +0 -0
  499. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_block_log.py +0 -0
  500. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_board_cap_762.py +0 -0
  501. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_board_fixture.py +0 -0
  502. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_board_read_path.py +0 -0
  503. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_board_schema.py +0 -0
  504. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_board_service.py +0 -0
  505. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_board_state.py +0 -0
  506. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_board_wire.py +0 -0
  507. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_brain.py +0 -0
  508. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_branch_model.py +0 -0
  509. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_bug_intake.py +0 -0
  510. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_build_worker_image_env_update.py +0 -0
  511. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cargo_cache.py +0 -0
  512. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_check_gh_argv_containment.py +0 -0
  513. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_ci_acceptance_gate_1950.py +0 -0
  514. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_ci_fix.py +0 -0
  515. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_ci_github.py +0 -0
  516. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_ci_gitlab.py +0 -0
  517. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_ci_parity_2091.py +0 -0
  518. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_ci_store.py +0 -0
  519. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_claude_md_budget.py +0 -0
  520. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_claude_setup_token.py +0 -0
  521. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_acceptance.py +0 -0
  522. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_assign.py +0 -0
  523. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  524. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_assign_interactive_remote.py +0 -0
  525. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_assign_provider.py +0 -0
  526. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  527. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_audit.py +0 -0
  528. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_chat_continue.py +0 -0
  529. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_ci.py +0 -0
  530. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_codegen.py +0 -0
  531. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_decide.py +0 -0
  532. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_diagnose_capability_rules.py +0 -0
  533. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_diagnose_config_provenance.py +0 -0
  534. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_diagnose_forge_availability.py +0 -0
  535. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_diagnose_graph.py +0 -0
  536. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_diagnose_self.py +0 -0
  537. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_diagnose_test_coverage.py +0 -0
  538. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_doctor.py +0 -0
  539. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_doctor_config_free_1801.py +0 -0
  540. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  541. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  542. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_drive.py +0 -0
  543. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_drive_queue.py +0 -0
  544. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_escalate.py +0 -0
  545. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_fix_headless_review.py +0 -0
  546. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_gate_a.py +0 -0
  547. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_install_drift.py +0 -0
  548. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_install_skills.py +0 -0
  549. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_issue_comment.py +0 -0
  550. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_issue_create_label.py +0 -0
  551. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_issue_reopen.py +0 -0
  552. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_issue_view_list.py +0 -0
  553. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_merge.py +0 -0
  554. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_milestone_assign.py +0 -0
  555. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_milestone_capture.py +0 -0
  556. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_milestone_chat_add_child.py +0 -0
  557. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_milestone_dispatch.py +0 -0
  558. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_milestone_gate_b.py +0 -0
  559. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_milestone_gate_c.py +0 -0
  560. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_milestone_order.py +0 -0
  561. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  562. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_milestone_ship.py +0 -0
  563. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_new_issue_chat.py +0 -0
  564. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_plans.py +0 -0
  565. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_portal.py +0 -0
  566. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_pr.py +0 -0
  567. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_pull_artifact.py +0 -0
  568. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_queue.py +0 -0
  569. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_reattach_sessions.py +0 -0
  570. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_refine_board.py +0 -0
  571. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_release_preflight.py +0 -0
  572. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_release_propagate.py +0 -0
  573. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_release_window.py +0 -0
  574. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_repo_2220.py +0 -0
  575. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  576. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_scorecard.py +0 -0
  577. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_serve_store_backend_3084.py +0 -0
  578. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_set_review_findings.py +0 -0
  579. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_status_advisory_terminal.py +0 -0
  580. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_status_contested_tag.py +0 -0
  581. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_status_invariant_alarms.py +0 -0
  582. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_status_machine_fault.py +0 -0
  583. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_status_merge_queue.py +0 -0
  584. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_status_provider.py +0 -0
  585. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_status_retried_3340.py +0 -0
  586. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_status_review_finalizing.py +0 -0
  587. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_status_supervisor_3366.py +0 -0
  588. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_status_test_failed_tag.py +0 -0
  589. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_status_usage_limit.py +0 -0
  590. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_sync_comments_873.py +0 -0
  591. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_test_plan.py +0 -0
  592. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_track.py +0 -0
  593. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_tui_update.py +0 -0
  594. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cli_wait.py +0 -0
  595. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_client.py +0 -0
  596. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_client_base_install.py +0 -0
  597. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_client_config_cache_atomic_3052.py +0 -0
  598. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_client_resource_migration_1946.py +0 -0
  599. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_commands_common.py +0 -0
  600. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_comments.py +0 -0
  601. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_completion_summary.py +0 -0
  602. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_config.py +0 -0
  603. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_config_acceptance.py +0 -0
  604. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_config_audit.py +0 -0
  605. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_config_drift_check.py +0 -0
  606. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_config_effective.py +0 -0
  607. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_config_pricing.py +0 -0
  608. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  609. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_config_usage_gate.py +0 -0
  610. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_confirm_test.py +0 -0
  611. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_conflict_fix.py +0 -0
  612. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_conflict_fix_semantic.py +0 -0
  613. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  614. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_coord_test.py +0 -0
  615. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  616. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_coord_test_runner_baseline.py +0 -0
  617. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_coord_test_runner_populated_home.py +0 -0
  618. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_coord_test_runner_routing.py +0 -0
  619. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_coord_test_runner_toolchain.py +0 -0
  620. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_coord_uat.py +0 -0
  621. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_coord_web_sse_restart_live.py +0 -0
  622. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_coordinator_machine.py +0 -0
  623. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_cross_platform_imports.py +0 -0
  624. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dao.py +0 -0
  625. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dashboard.py +0 -0
  626. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dashboard_api.py +0 -0
  627. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dashboard_fixture.py +0 -0
  628. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dashboard_server.py +0 -0
  629. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dashboard_terminal.py +0 -0
  630. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dashboard_terminal_live.py +0 -0
  631. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_db.py +0 -0
  632. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dead_end.py +0 -0
  633. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_decomposition_chat.py +0 -0
  634. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_deploy_coord_db_backup.py +0 -0
  635. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_deploy_coord_web_dist.py +0 -0
  636. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_deploy_coord_web_rollback.py +0 -0
  637. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_deploy_db_backup_unit.py +0 -0
  638. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_deploy_drive_queue_unit.py +0 -0
  639. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_deploy_failure_notify_unit.py +0 -0
  640. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_deploy_manifest.py +0 -0
  641. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_deploy_notify_unit.py +0 -0
  642. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_deploy_units_lane.py +0 -0
  643. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_deploy_web_unit.py +0 -0
  644. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_deprecation_telemetry.py +0 -0
  645. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_deps.py +0 -0
  646. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_diagnose.py +0 -0
  647. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dispatch_target_validation.py +0 -0
  648. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dispatch_workers.py +0 -0
  649. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dist_name.py +0 -0
  650. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_done_housekeeping.py +0 -0
  651. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dr_azure_scripts.py +0 -0
  652. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dr_promote.py +0 -0
  653. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_dr_verify.py +0 -0
  654. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_drive.py +0 -0
  655. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_drive_machine_fault.py +0 -0
  656. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_drive_queue.py +0 -0
  657. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_drive_queue_blocked_rendering.py +0 -0
  658. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_drive_queue_launch_argv.py +0 -0
  659. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_drive_queue_max_parallel_config.py +0 -0
  660. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  661. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_drive_queue_roll_pending.py +0 -0
  662. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  663. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_drive_sessions_snapshot.py +0 -0
  664. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_drive_state.py +0 -0
  665. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_drive_tmux.py +0 -0
  666. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_epic_up_capability_detection.py +0 -0
  667. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  668. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_epic_up_image_provenance.py +0 -0
  669. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_errors.py +0 -0
  670. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_events.py +0 -0
  671. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_failure_class.py +0 -0
  672. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_failure_classifier.py +0 -0
  673. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_filelock.py +0 -0
  674. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  675. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_fix_escalation_classifier.py +0 -0
  676. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_fix_of_force_override.py +0 -0
  677. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_fleet_config_health.py +0 -0
  678. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_fleet_health_probes.py +0 -0
  679. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_fleet_health_snapshot.py +0 -0
  680. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_fleet_watchdog.py +0 -0
  681. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_forge_availability.py +0 -0
  682. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_freshness.py +0 -0
  683. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_gate_a.py +0 -0
  684. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_gate_b.py +0 -0
  685. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_gate_snapshot_staleness.py +0 -0
  686. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_gates.py +0 -0
  687. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  688. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_gen_mock_index.py +0 -0
  689. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_generated_rust_fixture.py +0 -0
  690. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_generated_rust_requests.py +0 -0
  691. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_generated_types_fixture.py +0 -0
  692. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_github_ops.py +0 -0
  693. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_github_throttle.py +0 -0
  694. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_goal.py +0 -0
  695. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_graph_health.py +0 -0
  696. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_graph_selfheal_absent_2237.py +0 -0
  697. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_handoff.py +0 -0
  698. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_checks.py +0 -0
  699. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_cli.py +0 -0
  700. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_cli_graph.py +0 -0
  701. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_config.py +0 -0
  702. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_context.py +0 -0
  703. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_coord_tui_ci_pin.py +0 -0
  704. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_coord_web_ci_pin.py +0 -0
  705. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_deploy_lane_facts.py +0 -0
  706. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_fix.py +0 -0
  707. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_incident_regression.py +0 -0
  708. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_issues_sync_staleness.py +0 -0
  709. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_pr_churn.py +0 -0
  710. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_pypi.py +0 -0
  711. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_registry.py +0 -0
  712. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_release_cordon_probe.py +0 -0
  713. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_timer_active.py +0 -0
  714. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_toolchain.py +0 -0
  715. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_unit_drift.py +0 -0
  716. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_unit_enablement.py +0 -0
  717. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_health_wedged_drive_queue.py +0 -0
  718. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_hooks.py +0 -0
  719. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_housekeeping.py +0 -0
  720. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_human_attended_437.py +0 -0
  721. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_init.py +0 -0
  722. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_install_agent_venv_2911.py +0 -0
  723. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_integration.py +0 -0
  724. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_interactive_briefing_echo.py +0 -0
  725. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_interactive_pane_log_2541.py +0 -0
  726. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_interactive_prefill_state.py +0 -0
  727. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_interactive_session_relaunch.py +0 -0
  728. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_interactive_test_verdict_backstop.py +0 -0
  729. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_interactive_token_attribution.py +0 -0
  730. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_interactive_worktree.py +0 -0
  731. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_invariant_alarms.py +0 -0
  732. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_issue_store_seam.py +0 -0
  733. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_issues_sync_status.py +0 -0
  734. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_liveness_auditor.py +0 -0
  735. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_liveness_notify.py +0 -0
  736. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_lock_contention_ratchet.py +0 -0
  737. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_machine_fault.py +0 -0
  738. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_machine_metrics.py +0 -0
  739. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_machine_onboard.py +0 -0
  740. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_machine_pause.py +0 -0
  741. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_machine_stats.py +0 -0
  742. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_merge_queue.py +0 -0
  743. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_merge_verify.py +0 -0
  744. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_milestone_chat.py +0 -0
  745. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_milestone_dispatch.py +0 -0
  746. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_milestone_gate.py +0 -0
  747. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_milestone_order.py +0 -0
  748. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_milestone_seam.py +0 -0
  749. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_mock_author.py +0 -0
  750. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_model_tiering.py +0 -0
  751. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_models.py +0 -0
  752. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_models_config_labels.py +0 -0
  753. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_needs_attention.py +0 -0
  754. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_network.py +0 -0
  755. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_new_issue_chat.py +0 -0
  756. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_next_release_tag.py +0 -0
  757. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_node_shim.py +0 -0
  758. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_notifier_baseline.py +0 -0
  759. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_notifier_cli.py +0 -0
  760. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_notifier_collect.py +0 -0
  761. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_notifier_config.py +0 -0
  762. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_notifier_drive_seam.py +0 -0
  763. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_notifier_isolation.py +0 -0
  764. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_notifier_predicate.py +0 -0
  765. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_notifier_quiet_hours.py +0 -0
  766. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_notifier_service.py +0 -0
  767. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_notify.py +0 -0
  768. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_notify_drain.py +0 -0
  769. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_openapi.py +0 -0
  770. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_operational_defaults.py +0 -0
  771. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_overlap_fence.py +0 -0
  772. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_overlap_predict.py +0 -0
  773. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_packaged_deploy_units.py +0 -0
  774. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_parentage.py +0 -0
  775. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_paste_landed.py +0 -0
  776. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  777. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_pipeline.py +0 -0
  778. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_plan_followup_approve_plan_command.py +0 -0
  779. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_plan_followup_pr_command.py +0 -0
  780. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_plan_followup_review_command.py +0 -0
  781. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_plan_only.py +0 -0
  782. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_plan_parser.py +0 -0
  783. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_platform_paths.py +0 -0
  784. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_portal_bridge.py +0 -0
  785. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_portal_config.py +0 -0
  786. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_portal_store.py +0 -0
  787. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_portal_sync.py +0 -0
  788. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_pr_body_lint.py +0 -0
  789. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_prereqs.py +0 -0
  790. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_production_db_guard.py +0 -0
  791. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_progress.py +0 -0
  792. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_provider_seam.py +0 -0
  793. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_providers.py +0 -0
  794. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_providers_config_labels.py +0 -0
  795. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_providers_pty.py +0 -0
  796. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_provision_core.py +0 -0
  797. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_provision_machine.py +0 -0
  798. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_py_rust_mirror_inventory.py +0 -0
  799. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_quiet_hours.py +0 -0
  800. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_quiet_hours_store_2146.py +0 -0
  801. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_reap_merged_sessions.py +0 -0
  802. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_reap_stale_interactive_tick.py +0 -0
  803. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_reconcile_branch.py +0 -0
  804. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_reconcile_completions.py +0 -0
  805. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  806. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_reconcile_merges.py +0 -0
  807. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_reconcile_no_agent_record.py +0 -0
  808. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_reconcile_tick.py +0 -0
  809. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_reconcile_usage_limit_done.py +0 -0
  810. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_refine_chat.py +0 -0
  811. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_release_cordon_2101.py +0 -0
  812. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  813. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_release_cordon_deadlock_2240.py +0 -0
  814. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  815. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_release_cordon_stuck_2490.py +0 -0
  816. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_release_propagate.py +0 -0
  817. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_release_propagate_threshold.py +0 -0
  818. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_release_roll_between_legs_2854.py +0 -0
  819. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_release_roll_window_handoff.py +0 -0
  820. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_release_unified_1242.py +0 -0
  821. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_release_verify.py +0 -0
  822. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_release_window.py +0 -0
  823. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_remote_auto_prune.py +0 -0
  824. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_remote_interactive_reaper.py +0 -0
  825. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_repo_add.py +0 -0
  826. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_repo_dormancy.py +0 -0
  827. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_repo_edit_2220.py +0 -0
  828. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_repo_graph_fleet_2237.py +0 -0
  829. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_repo_max_parallel_3423.py +0 -0
  830. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_repo_onboard_2220.py +0 -0
  831. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_report_result_push.py +0 -0
  832. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_reports.py +0 -0
  833. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_restart_cmd.py +0 -0
  834. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_retry.py +0 -0
  835. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_retry_advisory_1606.py +0 -0
  836. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_retry_escalation_classify_3360.py +0 -0
  837. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_retry_type_1636.py +0 -0
  838. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_revalidate.py +0 -0
  839. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_review.py +0 -0
  840. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_review_end_review_without_verdict.py +0 -0
  841. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_review_parse_failure_diagnostic.py +0 -0
  842. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_review_reaffirm.py +0 -0
  843. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_review_state.py +0 -0
  844. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_review_verdict_backstop.py +0 -0
  845. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_review_verdict_override_audit.py +0 -0
  846. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_review_verdict_relay.py +0 -0
  847. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_review_zero_commits.py +0 -0
  848. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_scoped_review_wiring.py +0 -0
  849. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_scorecard.py +0 -0
  850. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_self_health.py +0 -0
  851. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_serve.py +0 -0
  852. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_serve_app.py +0 -0
  853. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_serve_app_board_trim.py +0 -0
  854. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_serve_rest_routes.py +0 -0
  855. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_session.py +0 -0
  856. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_slice_issue_attribution.py +0 -0
  857. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  858. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_smoke_live_checkout_restore.py +0 -0
  859. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_smoke_workflow.py +0 -0
  860. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_spend_ceiling.py +0 -0
  861. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_spend_ceiling_coordinator.py +0 -0
  862. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_split.py +0 -0
  863. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_split_work.py +0 -0
  864. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_sql_dialect.py +0 -0
  865. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_sqlite_connect_ratchet.py +0 -0
  866. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_stage_projection.py +0 -0
  867. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_stale_busy_reviewer_697.py +0 -0
  868. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_stalled_pipeline.py +0 -0
  869. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_state.py +0 -0
  870. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_state_review_findings_daemon.py +0 -0
  871. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_status_fleet_footer.py +0 -0
  872. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_stop_1567.py +0 -0
  873. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_store_contract.py +0 -0
  874. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_store_migrate.py +0 -0
  875. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_stuck.py +0 -0
  876. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  877. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_terminal_command.py +0 -0
  878. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_test_author.py +0 -0
  879. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_test_chat.py +0 -0
  880. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_test_orchestrator.py +0 -0
  881. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_test_report.py +0 -0
  882. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_test_verdict_parsing.py +0 -0
  883. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_test_verdict_transcript_floor.py +0 -0
  884. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_text_io_encoding_audit.py +0 -0
  885. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_thin_client_board_audit.py +0 -0
  886. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_thin_client_config_load_1080.py +0 -0
  887. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_thin_client_daemon_routing_906.py +0 -0
  888. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_throwaway_vm.py +0 -0
  889. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_tmux_host.py +0 -0
  890. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_tmux_session.py +0 -0
  891. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_transcript_floor.py +0 -0
  892. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_uat_checks.py +0 -0
  893. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_usage.py +0 -0
  894. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_usage_limits.py +0 -0
  895. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_usage_rollup.py +0 -0
  896. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_venv_live_install_2121.py +0 -0
  897. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_version_single_source.py +0 -0
  898. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_watch.py +0 -0
  899. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  900. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_worker_env_venv_isolation.py +0 -0
  901. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_worker_events.py +0 -0
  902. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_worker_image_pin_sync.py +0 -0
  903. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_worker_safety.py +0 -0
  904. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_worker_test_scoping.py +0 -0
  905. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_worktree.py +0 -0
  906. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  907. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/test_write_parity.py +0 -0
  908. {code_coordinator-0.5.512 → code_coordinator-0.5.514}/tests/write_parity.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.512
3
+ Version: 0.5.514
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.512
3
+ Version: 0.5.514
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
@@ -510,6 +510,7 @@ tests/test_cli_issue_comment.py
510
510
  tests/test_cli_issue_create_label.py
511
511
  tests/test_cli_issue_reopen.py
512
512
  tests/test_cli_issue_view_list.py
513
+ tests/test_cli_issues.py
513
514
  tests/test_cli_merge.py
514
515
  tests/test_cli_milestone_assign.py
515
516
  tests/test_cli_milestone_capture.py
@@ -536,6 +536,7 @@
536
536
  "tests/test_cli_issue_create_label.py",
537
537
  "tests/test_cli_issue_reopen.py",
538
538
  "tests/test_cli_issue_view_list.py",
539
+ "tests/test_cli_issues.py",
539
540
  "tests/test_cli_merge.py",
540
541
  "tests/test_cli_milestone_assign.py",
541
542
  "tests/test_cli_milestone_capture.py",
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.512",
2
+ "tag": "0.5.514",
3
3
  "distance": 0,
4
- "node": "g51bbafd70baf84cb0ed6d0a735815b56ea39f604",
4
+ "node": "g1db1111f52a074ffa43d96868edfe6dd44b84b97",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-09-21"
@@ -454,20 +454,38 @@ def _default_branch_lookup(repo_github: str, issue_number: int) -> list[str]:
454
454
  return _drop_merged_branches(repo_github, branches)
455
455
 
456
456
 
457
- def any_matching_branch_merged(repo_github: str, issue_number: int) -> bool:
458
- """#3376: True when at least one remote branch matching `issue-{N}-*`
459
- has already merged into the repo's default branch — the `branch_merged`
460
- predicate `coord.dispatch_liveness.check_dispatch_liveness` needs,
461
- backed by a live GitHub check.
462
-
463
- Reuses the exact merge-detection `_drop_merged_branches` already
464
- performs for claim detection (PR-merged OR `ahead_by == 0` ancestry,
465
- survives squash merges — #3103): this is just "did filtering drop
466
- anything", with the fail-open direction flipped to match a REFUSAL
467
- predicate rather than a claim-signal — no matching branch at all, or
468
- any lookup failure, returns `False` ("not merged, don't refuse
457
+ def any_matching_branch_merged(
458
+ repo_github: str, issue_number: int, *, branch: str | None = None
459
+ ) -> bool:
460
+ """#3376: True when the branch a dispatch is about to act on has already
461
+ merged into the repo's default branch — the `branch_merged` predicate
462
+ `coord.dispatch_liveness.check_dispatch_liveness` needs, backed by a
463
+ live GitHub check.
464
+
465
+ #3436: when *branch* is given — the exact branch the dispatch targets,
466
+ e.g. an `Assignment.branch` or `Proposal.target_branch` — this checks
467
+ ONLY that branch and ignores every other `issue-{N}-*` sibling. Without
468
+ this, the issue-scoped fallback below answers "has ANY branch for this
469
+ issue merged", which a single zero-commit review-leg branch (cut from
470
+ the then-current default-branch tip and never diverged — routine
471
+ residue of a review/scoped-review leg, not evidence the real work
472
+ landed) trips forever, permanently refusing dispatch for an issue whose
473
+ actual work branch sits unmerged with real commits on it.
474
+
475
+ Falls back to the original issue-scoped "has ANY matching branch
476
+ merged" behaviour only when *branch* is `None` — a caller with nothing
477
+ assigned yet (a pre-dispatch check before any branch exists) has no
478
+ single branch to ask about, so the issue-scoped signal is the best one
479
+ available. Reuses the exact merge-detection `_drop_merged_branches`
480
+ already performs for claim detection (PR-merged OR `ahead_by == 0`
481
+ ancestry, survives squash merges — #3103): this is just "did filtering
482
+ drop anything", with the fail-open direction flipped to match a
483
+ REFUSAL predicate rather than a claim-signal — no matching branch at
484
+ all, or any lookup failure, returns `False` ("not merged, don't refuse
469
485
  dispatch on this"), never `True`.
470
486
  """
487
+ if branch is not None:
488
+ return not _drop_merged_branches(repo_github, [branch])
471
489
  branches = list_matching_remote_branches(repo_github, issue_number)
472
490
  if not branches:
473
491
  return False
@@ -418,7 +418,13 @@ def issue_comment_cmd(
418
418
  "instead of a single freeform paragraph, so a later contract.md "
419
419
  "author (hand or agent) doesn't have to re-derive them from prose. "
420
420
  "All four are required together, and mutually exclusive with "
421
- "--body/--body-file."
421
+ "--body/--body-file.\n\n"
422
+ "--milestone (number or title, resolved the same way as `coord "
423
+ "milestone assign`) attaches the new issue to a milestone in the "
424
+ "same step, routed through the same daemon seam "
425
+ "(`POST /issue-milestone`) so the local issues cache is updated "
426
+ "immediately. An unresolvable milestone is reported *before* the "
427
+ "issue is created (#3432)."
422
428
  ),
423
429
  )
424
430
  @click.argument("repo")
@@ -436,6 +442,16 @@ def issue_comment_cmd(
436
442
  multiple=True,
437
443
  help="Label to add (repeatable). The label must already exist in the repo.",
438
444
  )
445
+ @click.option(
446
+ "--milestone",
447
+ default=None,
448
+ help=(
449
+ "Milestone number or title to attach the new issue to. Resolved "
450
+ "before the issue is created — an unresolvable milestone (bad "
451
+ "number, unmatched or ambiguous title) is an error and no issue is "
452
+ "created."
453
+ ),
454
+ )
439
455
  @click.option(
440
456
  "--expected", default=None,
441
457
  help="Bug-lane intake field: what should happen, in observable terms.",
@@ -462,6 +478,7 @@ def issue_create_cmd(
462
478
  body: str | None,
463
479
  body_file: Path | None,
464
480
  labels: tuple[str, ...],
481
+ milestone: str | None,
465
482
  expected: str | None,
466
483
  actual: str | None,
467
484
  repro: str | None,
@@ -496,6 +513,26 @@ def issue_create_cmd(
496
513
  slug = _resolve_repo_slug(cfg, repo)
497
514
  if body_file is not None:
498
515
  body = sys.stdin.read() if str(body_file) == "-" else Path(body_file).read_text()
516
+
517
+ # Resolve --milestone *before* creating the issue (#3432) — creating the
518
+ # issue and then failing to attach it would silently reproduce the bug
519
+ # this closes (an issue that looks healthy but is unreachable from
520
+ # `coord.plans.aggregate_repo_plans`, which keys on milestone
521
+ # membership).
522
+ milestone_number: int | None = None
523
+ milestone_title: str | None = None
524
+ if milestone is not None:
525
+ from coord.commands.milestone import ( # noqa: PLC0415
526
+ MilestoneResolutionError,
527
+ resolve_milestone_ref,
528
+ )
529
+
530
+ try:
531
+ milestone_number, milestone_title = resolve_milestone_ref(slug, milestone)
532
+ except MilestoneResolutionError as e:
533
+ click.echo(f"error: {e}", err=True)
534
+ sys.exit(1)
535
+
499
536
  from coord.state import create_issue as _create_issue # noqa: PLC0415
500
537
 
501
538
  try:
@@ -509,6 +546,31 @@ def issue_create_cmd(
509
546
  sys.exit(1)
510
547
  click.echo(f"#{result['number']} ({slug}) created")
511
548
 
549
+ if milestone_number is not None:
550
+ from coord.state import assign_issue_milestone # noqa: PLC0415
551
+
552
+ try:
553
+ assign_issue_milestone(
554
+ repo,
555
+ result["number"],
556
+ milestone_number,
557
+ milestone_title=milestone_title,
558
+ repo_github=slug,
559
+ )
560
+ except Exception as e: # noqa: BLE001
561
+ click.echo(
562
+ f"error: issue #{result['number']} created but milestone "
563
+ f"assign failed: {e}",
564
+ err=True,
565
+ )
566
+ sys.exit(1)
567
+ ms_label = (
568
+ f"{milestone_title!r} (#{milestone_number})"
569
+ if milestone_title
570
+ else f"#{milestone_number}"
571
+ )
572
+ click.echo(f"#{result['number']} ({slug}) assigned to milestone {ms_label}")
573
+
512
574
 
513
575
  @issue_group.command(
514
576
  "label",
@@ -165,6 +165,52 @@ def milestone_edit_cmd(
165
165
  click.echo(f"milestone #{number} updated ({repo_entry.github})")
166
166
 
167
167
 
168
+ class MilestoneResolutionError(Exception):
169
+ """Raised by :func:`resolve_milestone_ref` when MILESTONE can't be
170
+ resolved to a number."""
171
+
172
+
173
+ def resolve_milestone_ref(repo_github: str, milestone: str) -> tuple[int, str | None]:
174
+ """Resolve a milestone CLI argument (number or title) to ``(number,
175
+ title)`` against ``repo_github``'s open milestones.
176
+
177
+ Shared by `coord milestone assign` and `coord issue create --milestone`
178
+ (#3432) so there is exactly one place milestone-reference resolution
179
+ happens — raises :class:`MilestoneResolutionError` (never exits) on any
180
+ failure: an unfetchable numeric milestone, an unmatched title, or an
181
+ ambiguous title. Callers decide how to report/exit.
182
+ """
183
+ from coord import github_ops # noqa: PLC0415
184
+
185
+ try:
186
+ milestone_number = int(milestone)
187
+ except ValueError:
188
+ try:
189
+ all_ms = github_ops.get_repo_milestones(repo_github)
190
+ except RuntimeError as e:
191
+ raise MilestoneResolutionError(f"could not list milestones: {e}") from e
192
+ matches = [m for m in all_ms if m.get("title") == milestone]
193
+ if not matches:
194
+ raise MilestoneResolutionError(
195
+ f"no open milestone with title {milestone!r} in {repo_github}"
196
+ )
197
+ if len(matches) > 1:
198
+ raise MilestoneResolutionError(
199
+ f"multiple open milestones match {milestone!r} — use the "
200
+ "milestone number instead"
201
+ )
202
+ return matches[0]["number"], matches[0].get("title")
203
+
204
+ # Resolve the title from the number so the cache can store it.
205
+ try:
206
+ ms_data = github_ops.get_milestone(repo_github, milestone_number)
207
+ except RuntimeError as e:
208
+ raise MilestoneResolutionError(
209
+ f"could not fetch milestone #{milestone_number}: {e}"
210
+ ) from e
211
+ return milestone_number, ms_data.get("title")
212
+
213
+
168
214
  @milestone_group.command(
169
215
  "assign",
170
216
  help=(
@@ -194,47 +240,15 @@ def milestone_assign_cmd(
194
240
  click.echo(f"error: unknown repo {repo!r}", err=True)
195
241
  sys.exit(2)
196
242
 
197
- from coord import github_ops # noqa: PLC0415
198
243
  from coord.state import assign_issue_milestone # noqa: PLC0415
199
244
 
200
- # Resolve milestone argument: numeric → number, string → title lookup.
201
- milestone_number: int
202
- milestone_title: str | None
203
-
204
245
  try:
205
- milestone_number = int(milestone)
206
- # Resolve the title from the number so the cache can store it.
207
- try:
208
- ms_data = github_ops.get_milestone(repo_entry.github, milestone_number)
209
- milestone_title = ms_data.get("title")
210
- except RuntimeError as e:
211
- click.echo(
212
- f"error: could not fetch milestone #{milestone_number}: {e}", err=True
213
- )
214
- sys.exit(1)
215
- except ValueError:
216
- # Treat the argument as a title and resolve to a number.
217
- try:
218
- all_ms = github_ops.get_repo_milestones(repo_entry.github)
219
- except RuntimeError as e:
220
- click.echo(f"error: could not list milestones: {e}", err=True)
221
- sys.exit(1)
222
- matches = [m for m in all_ms if m.get("title") == milestone]
223
- if not matches:
224
- click.echo(
225
- f"error: no open milestone with title {milestone!r} in {repo_entry.github}",
226
- err=True,
227
- )
228
- sys.exit(1)
229
- if len(matches) > 1:
230
- click.echo(
231
- f"error: multiple open milestones match {milestone!r} — "
232
- "use the milestone number instead",
233
- err=True,
234
- )
235
- sys.exit(1)
236
- milestone_number = matches[0]["number"]
237
- milestone_title = matches[0].get("title")
246
+ milestone_number, milestone_title = resolve_milestone_ref(
247
+ repo_entry.github, milestone
248
+ )
249
+ except MilestoneResolutionError as e:
250
+ click.echo(f"error: {e}", err=True)
251
+ sys.exit(1)
238
252
 
239
253
  try:
240
254
  assign_issue_milestone(
@@ -653,12 +653,16 @@ def dispatch(
653
653
  like every caller that predates this parameter — same opt-in shape as
654
654
  *status_fetcher*.
655
655
 
656
- *issue_liveness_fetcher* (#3376) is `(repo_name: str, issue_number: int)
657
- -> (issue_closed: bool, branch_merged: bool)` — the other two
658
- predicates of the same STRUCTURAL DISPATCH-LIVENESS GATE. `None` (the
659
- default) performs no check at all and refuses nothing, same opt-in
660
- shape as *credential_fetcher*. See `coord.dispatch_liveness` for the
661
- single function all three predicates funnel through.
656
+ *issue_liveness_fetcher* (#3376) is `(repo_name: str, issue_number: int,
657
+ branch: str | None) -> (issue_closed: bool, branch_merged: bool)` — the
658
+ other two predicates of the same STRUCTURAL DISPATCH-LIVENESS GATE.
659
+ `None` (the default) performs no check at all and refuses nothing, same
660
+ opt-in shape as *credential_fetcher*. `branch` (#3436) is
661
+ `proposal.target_branch` — the exact branch THIS dispatch would land
662
+ on, not merely some `issue-{N}-*` sibling — so a zero-commit review-leg
663
+ branch cut from the default branch never masquerades as "this issue's
664
+ work already merged". See `coord.dispatch_liveness` for the single
665
+ function all three predicates funnel through.
662
666
  """
663
667
  machine = next(
664
668
  (m for m in config.machines if m.name == proposal.machine_name), None
@@ -865,7 +869,7 @@ def dispatch(
865
869
  branch_merged: bool | None = None
866
870
  if issue_liveness_fetcher is not None:
867
871
  issue_closed, branch_merged = issue_liveness_fetcher(
868
- proposal.repo_name, proposal.issue_number
872
+ proposal.repo_name, proposal.issue_number, proposal.target_branch
869
873
  )
870
874
  machine_healthy: bool | None = None
871
875
  if credential_fetcher is not None:
@@ -148,8 +148,8 @@ def check_dispatch_liveness(
148
148
 
149
149
  def github_issue_liveness_fetcher(
150
150
  config: "Config",
151
- ) -> Callable[[str, int], tuple[bool, bool]]:
152
- """Build a REAL `(repo_name, issue_number) -> (issue_closed,
151
+ ) -> Callable[[str, int, str | None], tuple[bool, bool]]:
152
+ """Build a REAL `(repo_name, issue_number, branch) -> (issue_closed,
153
153
  branch_merged)` fetcher, backed by live GitHub calls — the piece #3376
154
154
  review round 1 found missing: `check_dispatch_liveness`'s two new
155
155
  predicates existed and were unit-tested, but every actual dispatch
@@ -165,30 +165,37 @@ def github_issue_liveness_fetcher(
165
165
 
166
166
  Resolves `repo_name` (coordinator.yml's internal name) to `owner/repo`
167
167
  via *config* — every fetcher call inside `coord.dispatch.dispatch()`
168
- only ever hands this `(proposal.repo_name, proposal.issue_number)`, so
169
- the GitHub-repo mapping has to happen inside the closure, not at the
170
- call site.
168
+ only ever hands this `(proposal.repo_name, proposal.issue_number,
169
+ proposal.target_branch)`, so the GitHub-repo mapping has to happen
170
+ inside the closure, not at the call site.
171
171
 
172
172
  issue_closed: `coord.github_ops.issue_is_closed` — one `gh` call.
173
- branch_merged: `coord.claim.any_matching_branch_merged` — is there a
174
- remote `issue-{N}-*` branch (any slug, not a title-guessed one — a
175
- dispatch site has no reliable way to know which title a PRIOR dispatch
176
- used to slugify its branch, and issue titles can be edited after the
177
- fact) whose current tip has already merged. Both fail open (`False`) on
178
- any GitHub/network hiccup — same "never refuse on evidence we don't
179
- have" posture `claude_credential_reachable` documents for the third
180
- predicate, and matching `issue_is_closed`'s/`pr_is_merged`'s own
181
- documented fail-open contracts.
173
+ branch_merged: `coord.claim.any_matching_branch_merged` — #3436: when
174
+ *branch* is given (the dispatch's actual target — e.g. `Assignment.
175
+ branch`/`Proposal.target_branch`), asks whether THAT branch has merged
176
+ and ignores every other `issue-{N}-*` sibling, so a zero-commit
177
+ review-leg branch cut from the default-branch tip can no longer
178
+ permanently refuse dispatch for the issue's real, unmerged work
179
+ branch. `branch=None` (a caller with nothing dispatched yet) falls
180
+ back to the original issue-scoped "any matching branch merged" check.
181
+ Both fail open (`False`) on any GitHub/network hiccup — same "never
182
+ refuse on evidence we don't have" posture `claude_credential_reachable`
183
+ documents for the third predicate, and matching `issue_is_closed`'s/
184
+ `pr_is_merged`'s own documented fail-open contracts.
182
185
  """
183
186
 
184
- def fetcher(repo_name: str, issue_number: int) -> tuple[bool, bool]:
187
+ def fetcher(
188
+ repo_name: str, issue_number: int, branch: str | None = None
189
+ ) -> tuple[bool, bool]:
185
190
  from coord import github_ops # noqa: PLC0415
186
191
  from coord.claim import any_matching_branch_merged # noqa: PLC0415
187
192
 
188
193
  repo_cfg = config.repo(repo_name)
189
194
  repo_github = repo_cfg.github if repo_cfg is not None else repo_name
190
195
  issue_closed = github_ops.issue_is_closed(repo_github, issue_number)
191
- branch_merged = any_matching_branch_merged(repo_github, issue_number)
196
+ branch_merged = any_matching_branch_merged(
197
+ repo_github, issue_number, branch=branch
198
+ )
192
199
  return issue_closed, branch_merged
193
200
 
194
201
  return fetcher
@@ -1092,10 +1092,12 @@ def dispatch_entry(
1092
1092
  assign`), matching the same check ``_dispatch_headless`` performs.
1093
1093
 
1094
1094
  *issue_liveness_fetcher* (#3376) is an optional ``(repo_name: str,
1095
- issue_number: int) -> (issue_closed: bool, branch_merged: bool)``
1096
- callable threaded straight through to :func:`coord.dispatch.dispatch`'s
1097
- parameter of the same name — the STRUCTURAL DISPATCH-LIVENESS GATE's
1098
- other two predicates. ``None`` (the default) performs no check and
1095
+ issue_number: int, branch: str | None) -> (issue_closed: bool,
1096
+ branch_merged: bool)`` callable threaded straight through to
1097
+ :func:`coord.dispatch.dispatch`'s parameter of the same name — the
1098
+ STRUCTURAL DISPATCH-LIVENESS GATE's other two predicates (#3436:
1099
+ ``dispatch()`` itself supplies the branch, from ``proposal.
1100
+ target_branch``). ``None`` (the default) performs no check and
1099
1101
  refuses nothing, same opt-in shape as every other fetcher in this
1100
1102
  module; the daemon's auto-drain/gate ticks (``coord.serve_app``'s
1101
1103
  ``_milestone_drain_tick``/``_milestone_gate_tick``) are the production
@@ -1752,7 +1752,10 @@ def _resolve_retry_provider(
1752
1752
 
1753
1753
 
1754
1754
  def _issue_liveness_from_cache(
1755
- board: Board, repo_name: str, issue_number: int
1755
+ board: Board,
1756
+ repo_name: str,
1757
+ issue_number: int,
1758
+ branch: str | None = None,
1756
1759
  ) -> tuple[bool, bool]:
1757
1760
  """#3376: local-only ``issue_liveness_fetcher`` for `_reassign` —
1758
1761
  "issue closed" from the local `issues` cache table (`coord.state.
@@ -1763,6 +1766,14 @@ def _issue_liveness_from_cache(
1763
1766
  ``"merged"``). Neither call touches GitHub — same "no live probe from
1764
1767
  a passive tick" posture as the ``cached_labels`` lookup beside this
1765
1768
  function's one caller.
1769
+
1770
+ #3436: when *branch* is given (the failed row's own `Assignment.
1771
+ branch` — the branch a retry would actually land on), the "merged"
1772
+ scan is additionally scoped to rows on THAT branch, not merely any
1773
+ completed row for the issue — a merged review-leg row for the same
1774
+ issue on a *different*, zero-commit branch must not read as "this
1775
+ issue's work already merged" and block a retry of the real, unmerged
1776
+ work branch. `branch=None` keeps the original issue-scoped behaviour.
1766
1777
  """
1767
1778
  from coord.state import get_cached_issue_state # noqa: PLC0415
1768
1779
 
@@ -1771,6 +1782,7 @@ def _issue_liveness_from_cache(
1771
1782
  a.repo_name == repo_name
1772
1783
  and a.issue_number == issue_number
1773
1784
  and a.status == "merged"
1785
+ and (branch is None or a.branch == branch)
1774
1786
  for a in board.completed
1775
1787
  )
1776
1788
  return issue_closed, branch_merged
@@ -1812,20 +1824,23 @@ def _reassign(
1812
1824
  entry point.
1813
1825
 
1814
1826
  *issue_liveness_fetcher* (#3376) is an optional ``(repo_name: str,
1815
- issue_number: int) -> (issue_closed: bool, branch_merged: bool)``
1816
- callable — the other two predicates of the same STRUCTURAL DISPATCH-
1817
- LIVENESS GATE `coord.dispatch.dispatch()` itself checks (see
1818
- `coord.dispatch_liveness`). `None` (the default here) performs no
1819
- check and skips nothing — same opt-in shape as *credential_fetcher*
1820
- above, for the same reason: the real wiring happens at `reconcile()`'s
1821
- own call site. Unlike *credential_fetcher* (a machine FILTER — an
1822
- unhealthy machine is simply excluded from *candidates*), a positive
1823
- hit here means the auto-reassign attempt itself is pointless — #3367's
1824
- own incident was exactly this shape one layer up (four auto-retried
1825
- review dispatches against a dead host); #3376 generalizes it to "is
1826
- the thing being retried still real at all", so this returns ``None``
1827
- (skip, exactly like "no candidate machines") rather than trying
1828
- another machine.
1827
+ issue_number: int, branch: str | None) -> (issue_closed: bool,
1828
+ branch_merged: bool)`` callable — the other two predicates of the same
1829
+ STRUCTURAL DISPATCH-LIVENESS GATE `coord.dispatch.dispatch()` itself
1830
+ checks (see `coord.dispatch_liveness`). `None` (the default here)
1831
+ performs no check and skips nothing — same opt-in shape as
1832
+ *credential_fetcher* above, for the same reason: the real wiring
1833
+ happens at `reconcile()`'s own call site. Unlike *credential_fetcher*
1834
+ (a machine FILTER — an unhealthy machine is simply excluded from
1835
+ *candidates*), a positive hit here means the auto-reassign attempt
1836
+ itself is pointless — #3367's own incident was exactly this shape one
1837
+ layer up (four auto-retried review dispatches against a dead host);
1838
+ #3376 generalizes it to "is the thing being retried still real at
1839
+ all", so this returns ``None`` (skip, exactly like "no candidate
1840
+ machines") rather than trying another machine. #3436: *branch* is
1841
+ ``failed.branch`` — the exact branch a retry would land on — so a
1842
+ merged sibling branch for the same issue no longer masquerades as
1843
+ "this issue's work already merged".
1829
1844
 
1830
1845
  Raises :class:`UnsupportedRetryType` when ``failed.type`` is not in
1831
1846
  :data:`coord.models.WORK_LIKE_TYPES` — a ``smoke``/``review``/other
@@ -1842,7 +1857,7 @@ def _reassign(
1842
1857
 
1843
1858
  if issue_liveness_fetcher is not None:
1844
1859
  issue_closed, branch_merged = issue_liveness_fetcher(
1845
- failed.repo_name, failed.issue_number
1860
+ failed.repo_name, failed.issue_number, failed.branch
1846
1861
  )
1847
1862
  refusal = check_dispatch_liveness(
1848
1863
  repo_name=failed.repo_name,
@@ -2797,8 +2812,8 @@ def reconcile(board: Board, config: Config) -> list[str]:
2797
2812
  reassigned = _reassign(
2798
2813
  failed_a, board, config, issue_labels=cached_labels,
2799
2814
  credential_fetcher=claude_credential_reachable,
2800
- issue_liveness_fetcher=lambda repo, num: (
2801
- _issue_liveness_from_cache(board, repo, num)
2815
+ issue_liveness_fetcher=lambda repo, num, branch=None: (
2816
+ _issue_liveness_from_cache(board, repo, num, branch)
2802
2817
  ),
2803
2818
  )
2804
2819
  except RetryProviderMismatch:
@@ -3033,7 +3033,9 @@ def dispatch_pending_smoke(
3033
3033
  *,
3034
3034
  now: float | None = None,
3035
3035
  gh_ops: "GhOps | None" = None,
3036
- issue_liveness_fetcher: Callable[[str, int], tuple[bool, bool]] | None = None,
3036
+ issue_liveness_fetcher: (
3037
+ Callable[[str, int, str | None], tuple[bool, bool]] | None
3038
+ ) = None,
3037
3039
  ) -> list[Assignment]:
3038
3040
  """Bulk Test-stage dispatch — the smoke analogue of
3039
3041
  :func:`coord.review.dispatch_pending_reviews`.
@@ -3066,10 +3068,15 @@ def dispatch_pending_smoke(
3066
3068
  live gate check in this codebase hands `merge_queue`'s gate functions.
3067
3069
 
3068
3070
  #3375: *issue_liveness_fetcher* is the SAME opt-in
3069
- ``(repo_name, issue_number) -> (issue_closed, branch_merged)`` contract
3070
- `coord.dispatch_liveness.check_dispatch_liveness` already gates
3071
- `coord.dispatch.dispatch()` with (#3376) — but this stage never went
3072
- through that call path. `dispatch_smoke`/`_dispatch_smoke_legs` POST
3071
+ ``(repo_name, issue_number, branch) -> (issue_closed, branch_merged)``
3072
+ contract `coord.dispatch_liveness.check_dispatch_liveness` already
3073
+ gates `coord.dispatch.dispatch()` with (#3376) — but this stage never
3074
+ went through that call path. #3436: *branch* is `completed.branch` —
3075
+ the row's own branch, not merely some `issue-{N}-*` sibling — so a
3076
+ zero-commit review-leg branch cut from the default branch can no
3077
+ longer masquerade as "this issue's work already merged" and
3078
+ permanently skip the Test stage for the real, unmerged work branch.
3079
+ `dispatch_smoke`/`_dispatch_smoke_legs` POST
3073
3080
  straight to a machine's `/assign` over `httpx`, so #3376's dispatch-time
3074
3081
  gate never saw a Test-stage dispatch at all, and the five-smoke-agents
3075
3082
  incident that motivated both issues could still reproduce after #3376
@@ -3316,7 +3323,7 @@ def dispatch_pending_smoke(
3316
3323
  )
3317
3324
 
3318
3325
  issue_closed, branch_merged = issue_liveness_fetcher(
3319
- completed.repo_name, completed.issue_number
3326
+ completed.repo_name, completed.issue_number, completed.branch
3320
3327
  )
3321
3328
  refusal = check_dispatch_liveness(
3322
3329
  repo_name=completed.repo_name,
@@ -873,6 +873,40 @@ def test_any_matching_branch_merged_false_on_gh_error(monkeypatch) -> None:
873
873
  assert claim_mod.any_matching_branch_merged("acme/api", 9) is False
874
874
 
875
875
 
876
+ def test_any_matching_branch_merged_scoped_branch_ignores_merged_siblings(
877
+ monkeypatch,
878
+ ) -> None:
879
+ """#3436: reproduces vimcode#1156's shape — several MERGED, zero-commit
880
+ `issue-{N}-*` review-leg branches (cut from the default-branch tip,
881
+ never diverged) alongside the one real, unmerged work branch. The
882
+ issue-scoped (no ``branch=``) check is tripped by the merged siblings —
883
+ the documented fallback behaviour for a caller with nothing dispatched
884
+ yet — but a caller that names the ACTUAL branch in play must get an
885
+ answer scoped to just that branch, not "did anything for this issue
886
+ ever merge"."""
887
+ import coord.claim as claim_mod
888
+
889
+ monkeypatch.setattr(
890
+ "coord.github_ops._gh",
891
+ _gh_stub_with_matching_refs(
892
+ ["issue-1156-review-fix-1", "issue-1156-real-work"],
893
+ "main",
894
+ {"issue-1156-review-fix-1": 0, "issue-1156-real-work": 5},
895
+ ),
896
+ )
897
+ # No branch named: falls back to the issue-scoped check, which still
898
+ # trips on the merged sibling (unchanged pre-#3436 fallback behaviour).
899
+ assert claim_mod.any_matching_branch_merged("acme/api", 1156) is True
900
+ # Scoped to the real, unmerged work branch: must NOT report merged.
901
+ assert claim_mod.any_matching_branch_merged(
902
+ "acme/api", 1156, branch="issue-1156-real-work"
903
+ ) is False
904
+ # Scoped to the merged sibling itself: correctly reports merged.
905
+ assert claim_mod.any_matching_branch_merged(
906
+ "acme/api", 1156, branch="issue-1156-review-fix-1"
907
+ ) is True
908
+
909
+
876
910
  # ── #1553: has_active_work_followup keys on the EFFECTIVE issue ─────────────
877
911
 
878
912