code-coordinator 0.5.513__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.513 → code_coordinator-0.5.514}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/claim.py +30 -12
  5. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/dispatch.py +11 -7
  6. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/dispatch_liveness.py +23 -16
  7. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/milestone_dispatch.py +6 -4
  8. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/reconcile.py +33 -18
  9. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/smoke.py +13 -6
  10. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_claim.py +34 -0
  11. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_network.py +1 -1
  12. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dispatch.py +29 -7
  13. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dispatch_liveness.py +20 -2
  14. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_reconcile.py +56 -3
  15. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_smoke.py +44 -5
  16. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/.claude/commands/board.md +0 -0
  17. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/.claude/commands/complete-session.md +0 -0
  18. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/.claude/commands/coordinator.md +0 -0
  19. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/.githooks/_lib.sh +0 -0
  20. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/.githooks/post-checkout +0 -0
  21. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/.githooks/post-commit +0 -0
  22. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/.githooks/post-merge +0 -0
  23. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  24. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/.github/coord-ci-acceptance.yml +0 -0
  25. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/.github/workflows/auto-release.yml +0 -0
  26. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/.github/workflows/publish.yml +0 -0
  27. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/.github/workflows/test.yml +0 -0
  28. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/.gitignore +0 -0
  29. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/CLAUDE.md +0 -0
  30. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/GOAL.md +0 -0
  31. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/LICENSE +0 -0
  32. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/MANIFEST.in +0 -0
  33. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/README.md +0 -0
  34. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/code_coordinator.egg-info/SOURCES.txt +0 -0
  35. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/code_coordinator.egg-info/dependency_links.txt +0 -0
  36. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/code_coordinator.egg-info/entry_points.txt +0 -0
  37. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/code_coordinator.egg-info/requires.txt +0 -0
  38. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/code_coordinator.egg-info/scm_file_list.json +0 -0
  39. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/code_coordinator.egg-info/top_level.txt +0 -0
  40. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/__init__.py +0 -0
  41. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/_board_mapping.py +0 -0
  42. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/acceptance.py +0 -0
  43. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/acceptance_drivers.py +0 -0
  44. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/agent.py +0 -0
  45. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/agent_app.py +0 -0
  46. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/agent_update.py +0 -0
  47. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/agents/opencode/.gitignore +0 -0
  48. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/agents/opencode/agents/work.md +0 -0
  49. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/agents/opencode/routing.jsonc +0 -0
  50. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/approved_work.py +0 -0
  51. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/audit.py +0 -0
  52. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/auto_loop.py +0 -0
  53. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/backup.py +0 -0
  54. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/block_log.py +0 -0
  55. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/board_schema.py +0 -0
  56. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/board_service.py +0 -0
  57. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/board_wire.py +0 -0
  58. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/brain.py +0 -0
  59. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/branch_model.py +0 -0
  60. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/bug_intake.py +0 -0
  61. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/cargo_cache.py +0 -0
  62. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/ci_fix.py +0 -0
  63. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/ci_github.py +0 -0
  64. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/ci_gitlab.py +0 -0
  65. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/ci_store.py +0 -0
  66. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/claude_setup_token.py +0 -0
  67. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/cli.py +0 -0
  68. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/client.py +0 -0
  69. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/codegen.py +0 -0
  70. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/__init__.py +0 -0
  71. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/_common.py +0 -0
  72. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/acceptance.py +0 -0
  73. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/agent_ops.py +0 -0
  74. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/audit.py +0 -0
  75. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/backup.py +0 -0
  76. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/chat.py +0 -0
  77. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/ci.py +0 -0
  78. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/codegen.py +0 -0
  79. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/dispatch.py +0 -0
  80. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/dispatch_workers.py +0 -0
  81. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/dr.py +0 -0
  82. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/drive.py +0 -0
  83. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/drive_queue.py +0 -0
  84. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/gate_a.py +0 -0
  85. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/gates.py +0 -0
  86. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/issues.py +0 -0
  87. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/lifecycle.py +0 -0
  88. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/machine.py +0 -0
  89. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/merge.py +0 -0
  90. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/milestone.py +0 -0
  91. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/plan_followup.py +0 -0
  92. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/plans.py +0 -0
  93. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/portal.py +0 -0
  94. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/pr.py +0 -0
  95. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/release.py +0 -0
  96. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/repo.py +0 -0
  97. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/report.py +0 -0
  98. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/review.py +0 -0
  99. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/scorecard.py +0 -0
  100. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/sessions.py +0 -0
  101. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/setup.py +0 -0
  102. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/status.py +0 -0
  103. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/store_migrate.py +0 -0
  104. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/terminal.py +0 -0
  105. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/test_gate.py +0 -0
  106. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/commands/tui.py +0 -0
  107. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/comments.py +0 -0
  108. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/config.py +0 -0
  109. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/config_reload.py +0 -0
  110. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/confirm_test.py +0 -0
  111. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/conflict_fix.py +0 -0
  112. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/dao.py +0 -0
  113. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/dashboard/__init__.py +0 -0
  114. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/dashboard/fixture.py +0 -0
  115. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/dashboard/index.html +0 -0
  116. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/dashboard/server.py +0 -0
  117. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/dashboard/terminal.py +0 -0
  118. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/db.py +0 -0
  119. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/dead_end.py +0 -0
  120. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/decomposition_chat.py +0 -0
  121. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/README.md +0 -0
  122. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-agent.service +0 -0
  123. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-backup.service +0 -0
  124. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-backup.timer +0 -0
  125. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-db-backup.service +0 -0
  126. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-db-backup.sh +0 -0
  127. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-db-backup.timer +0 -0
  128. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-dr-verify.service +0 -0
  129. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-dr-verify.timer +0 -0
  130. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-drive-queue.service +0 -0
  131. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-drive-queue.timer +0 -0
  132. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-failure-notify.service +0 -0
  133. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-fleet-watchdog.service +0 -0
  134. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  135. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-notify.service +0 -0
  136. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-notify.timer +0 -0
  137. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-release-propagate.service +0 -0
  138. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-release-propagate.timer +0 -0
  139. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-release-window.service +0 -0
  140. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-release-window.timer +0 -0
  141. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-serve.service +0 -0
  142. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-web-dist-build.service +0 -0
  143. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-web-dist-build.timer +0 -0
  144. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy/coord-web.service +0 -0
  145. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy_manifest.py +0 -0
  146. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deploy_units.py +0 -0
  147. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deprecation_telemetry.py +0 -0
  148. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/deps.py +0 -0
  149. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/diagnose.py +0 -0
  150. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/dist_name.py +0 -0
  151. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/dr_promote.py +0 -0
  152. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/dr_verify.py +0 -0
  153. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/drive.py +0 -0
  154. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/drive_queue.py +0 -0
  155. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/drive_sessions_snapshot.py +0 -0
  156. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/drive_state.py +0 -0
  157. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/events.py +0 -0
  158. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/failure_class.py +0 -0
  159. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/failure_classifier.py +0 -0
  160. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/filelock.py +0 -0
  161. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/fleet_config_health.py +0 -0
  162. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/forge_availability.py +0 -0
  163. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/freshness.py +0 -0
  164. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/gate_a.py +0 -0
  165. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/gate_b.py +0 -0
  166. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/gate_snapshot.py +0 -0
  167. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/gates.py +0 -0
  168. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/gen_board_fixture.py +0 -0
  169. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/github_ops.py +0 -0
  170. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/github_throttle.py +0 -0
  171. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/goal.py +0 -0
  172. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/graph_health.py +0 -0
  173. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/__init__.py +0 -0
  174. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/aggregate.py +0 -0
  175. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/__init__.py +0 -0
  176. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/_ci_pin.py +0 -0
  177. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/agent_install.py +0 -0
  178. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/cargo_targets.py +0 -0
  179. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/claude_binary.py +0 -0
  180. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/config_drift.py +0 -0
  181. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  182. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/coord_web_ci_pin.py +0 -0
  183. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/deploy_lane_facts.py +0 -0
  184. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/disk.py +0 -0
  185. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/fleet_board.py +0 -0
  186. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  187. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/fleet_phantom.py +0 -0
  188. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/fleet_unit_drift.py +0 -0
  189. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/graph.py +0 -0
  190. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/graphify_cli.py +0 -0
  191. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/index_lock.py +0 -0
  192. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/issues_sync_staleness.py +0 -0
  193. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/plan_usage.py +0 -0
  194. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/pr_churn.py +0 -0
  195. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/release_cordon.py +0 -0
  196. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/repo_state.py +0 -0
  197. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/spawned_coord.py +0 -0
  198. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/stalled_pipeline.py +0 -0
  199. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/timer_active.py +0 -0
  200. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/toolchain.py +0 -0
  201. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/unit_drift.py +0 -0
  202. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/unit_enablement.py +0 -0
  203. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/wedged_drive_queue.py +0 -0
  204. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/checks/worktrees.py +0 -0
  205. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/cli.py +0 -0
  206. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/context.py +0 -0
  207. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/fleet_snapshot.py +0 -0
  208. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/models.py +0 -0
  209. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/pypi.py +0 -0
  210. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/registry.py +0 -0
  211. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/render.py +0 -0
  212. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/health/units.py +0 -0
  213. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/hooks.py +0 -0
  214. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/housekeeping.py +0 -0
  215. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/interactive.py +0 -0
  216. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/invariant_alarms.py +0 -0
  217. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/issue_store.py +0 -0
  218. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/issues_sync_status.py +0 -0
  219. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/liveness_auditor.py +0 -0
  220. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/machine_fault.py +0 -0
  221. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/machine_metrics.py +0 -0
  222. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/machine_onboard.py +0 -0
  223. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/machine_pause.py +0 -0
  224. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/machine_stats.py +0 -0
  225. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/merge_queue.py +0 -0
  226. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/milestone_chat.py +0 -0
  227. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/milestone_gate.py +0 -0
  228. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/milestone_order.py +0 -0
  229. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/mock_author.py +0 -0
  230. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/models.py +0 -0
  231. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/network.py +0 -0
  232. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/new_issue_chat.py +0 -0
  233. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/notifier/__init__.py +0 -0
  234. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/notifier/baseline.py +0 -0
  235. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/notifier/cli.py +0 -0
  236. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/notifier/collect.py +0 -0
  237. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/notifier/digest.py +0 -0
  238. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/notifier/models.py +0 -0
  239. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/notifier/predicate.py +0 -0
  240. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/notifier/service.py +0 -0
  241. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/notifier/store.py +0 -0
  242. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/notifier/transport.py +0 -0
  243. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/notify.py +0 -0
  244. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/openapi.py +0 -0
  245. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/overlap_fence.py +0 -0
  246. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/overlap_predict.py +0 -0
  247. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/parentage.py +0 -0
  248. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/parentage_github.py +0 -0
  249. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/pipeline.py +0 -0
  250. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/plan_parser.py +0 -0
  251. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/plans.py +0 -0
  252. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/platform_paths.py +0 -0
  253. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/portal_bridge.py +0 -0
  254. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/portal_store.py +0 -0
  255. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/portal_sync.py +0 -0
  256. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/pr_body_lint.py +0 -0
  257. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/prereqs.py +0 -0
  258. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/progress.py +0 -0
  259. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/providers/__init__.py +0 -0
  260. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/providers/base.py +0 -0
  261. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/providers/claude.py +0 -0
  262. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/providers/claude_pty.py +0 -0
  263. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/providers/opencode.py +0 -0
  264. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/queue_diagnose.py +0 -0
  265. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/reconcile_tick.py +0 -0
  266. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/refine_chat.py +0 -0
  267. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/release_cordon.py +0 -0
  268. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/release_propagate.py +0 -0
  269. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/release_verify.py +0 -0
  270. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/release_window.py +0 -0
  271. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/repo_dormancy.py +0 -0
  272. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/repo_edit.py +0 -0
  273. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/repo_onboard.py +0 -0
  274. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/reports.py +0 -0
  275. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/rest_schema.py +0 -0
  276. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/restart_cmd.py +0 -0
  277. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/revalidate.py +0 -0
  278. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/review.py +0 -0
  279. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/scorecard.py +0 -0
  280. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/self_health.py +0 -0
  281. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/serve_app.py +0 -0
  282. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  283. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  284. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  285. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  286. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  287. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/skills/portal-followup/SKILL.md +0 -0
  288. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/skills/release-now/SKILL.md +0 -0
  289. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  290. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  291. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/skills/update-issue/SKILL.md +0 -0
  292. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/spend_ceiling.py +0 -0
  293. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/split_work.py +0 -0
  294. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/sql.py +0 -0
  295. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/stage_projection.py +0 -0
  296. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/state.py +0 -0
  297. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/store_migrate.py +0 -0
  298. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/store_parity.py +0 -0
  299. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/templates/deploy-cloudflare.node.yml +0 -0
  300. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/test_author.py +0 -0
  301. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/test_chat.py +0 -0
  302. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/test_orchestrator.py +0 -0
  303. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/test_report.py +0 -0
  304. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/tui_release.py +0 -0
  305. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/uat_checks.py +0 -0
  306. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/usage.py +0 -0
  307. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/usage_limits.py +0 -0
  308. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/usage_rollup.py +0 -0
  309. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coord/worker_events.py +0 -0
  310. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/coordinator.example.yml +0 -0
  311. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-agent.service +0 -0
  312. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-backup.service +0 -0
  313. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-backup.timer +0 -0
  314. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-db-backup.service +0 -0
  315. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-db-backup.sh +0 -0
  316. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-db-backup.timer +0 -0
  317. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-dr-verify.service +0 -0
  318. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-dr-verify.timer +0 -0
  319. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-drive-queue.service +0 -0
  320. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-drive-queue.timer +0 -0
  321. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-failure-notify.service +0 -0
  322. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-failure-notify.sh +0 -0
  323. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-fleet-watchdog.service +0 -0
  324. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-fleet-watchdog.timer +0 -0
  325. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-notify.service +0 -0
  326. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-notify.timer +0 -0
  327. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-release-propagate.service +0 -0
  328. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-release-propagate.timer +0 -0
  329. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-release-window.service +0 -0
  330. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-release-window.timer +0 -0
  331. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-serve.service +0 -0
  332. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-web-dist-build.service +0 -0
  333. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-web-dist-build.sh +0 -0
  334. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-web-dist-build.timer +0 -0
  335. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-web-rollback.sh +0 -0
  336. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/coord-web.service +0 -0
  337. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/deploy/node-shim.sh +0 -0
  338. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/ADR_COORD_TUI_CI.md +0 -0
  339. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  340. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/ADR_COORD_WEB_CI.md +0 -0
  341. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/ADR_COORD_WEB_DIST.md +0 -0
  342. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  343. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/AGENT_OPERATIONS.md +0 -0
  344. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/ARCHITECTURE.md +0 -0
  345. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/ARCH_SECURITY_GATES.md +0 -0
  346. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/COCKPIT.md +0 -0
  347. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/CONTROL_CENTER.md +0 -0
  348. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/COST_DISCIPLINE.md +0 -0
  349. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/CROSS_PLATFORM.md +0 -0
  350. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/CUSTOMER_FACING_APPS.md +0 -0
  351. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/CUSTOMER_PORTAL.md +0 -0
  352. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/DATA_STORE_SELECTION.md +0 -0
  353. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/DISASTER_RECOVERY.md +0 -0
  354. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/DRIVE_QUEUE.md +0 -0
  355. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/EPHEMERAL_WORKERS.md +0 -0
  356. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/FORGE_MIGRATION.md +0 -0
  357. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/GRAPHIFY_SETUP.md +0 -0
  358. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/ISSUE_GUIDANCE.md +0 -0
  359. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/MAC_MINI.md +0 -0
  360. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  361. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/NOTIFIER.md +0 -0
  362. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/OPENCODE_VERIFICATION.md +0 -0
  363. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/OPERATING_GOTCHAS.md +0 -0
  364. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/OPERATOR_GUIDES.md +0 -0
  365. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/ORACLE_LOOP.md +0 -0
  366. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/PHONE_WEBAPP.md +0 -0
  367. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/PIPELINE_V2.md +0 -0
  368. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/PLATFORM_EVOLUTION.md +0 -0
  369. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/SECOND_BACKEND.md +0 -0
  370. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/STORE_SERVICE.md +0 -0
  371. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  372. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/WEB_CONTROL_CENTER.md +0 -0
  373. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/WSL_WINDOWS_WORKER.md +0 -0
  374. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/mocks/web/README.md +0 -0
  375. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/mocks/web/_tokens.css +0 -0
  376. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/mocks/web/issue-detail.html +0 -0
  377. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/mocks/web/pipeline-narrow.html +0 -0
  378. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/docs/mocks/web/pipeline-wide.html +0 -0
  379. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/graphify-out/.gitignore +0 -0
  380. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/install-agent.sh +0 -0
  381. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/pyproject.toml +0 -0
  382. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/audit_review_verdict_overrides.py +0 -0
  383. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  384. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/azure-workers/build-worker-image.sh +0 -0
  385. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/azure-workers/coordinator-machine.py +0 -0
  386. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/azure-workers/dr-down.sh +0 -0
  387. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/azure-workers/dr-up.sh +0 -0
  388. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/azure-workers/epic-down.sh +0 -0
  389. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/azure-workers/epic-up.sh +0 -0
  390. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/azure-workers/preflight.sh +0 -0
  391. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/azure-workers/provision-server.sh +0 -0
  392. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/azure-workers/provision-worker.sh +0 -0
  393. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  394. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  395. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/azure-workers/throwaway-vm.sh +0 -0
  396. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/azure-workers/verify-github-token.sh +0 -0
  397. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/check_gh_argv_containment.py +0 -0
  398. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/codegen.py +0 -0
  399. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/coord-test-runner.sh +0 -0
  400. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  401. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  402. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  403. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  404. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/coord-venv-rollback.sh +0 -0
  405. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/drive-batch.sh +0 -0
  406. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/extract-coord-tui.sh +0 -0
  407. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/fleet_watchdog.py +0 -0
  408. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/gen_board_fixture.py +0 -0
  409. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/gen_mock_index.py +0 -0
  410. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/lib/provision-core.sh +0 -0
  411. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/next_release_tag.py +0 -0
  412. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/provision-machine.sh +0 -0
  413. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/run_tests_in_populated_home.sh +0 -0
  414. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/run_tests_without_gh.sh +0 -0
  415. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/setup-macmini.sh +0 -0
  416. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/smoke_437_interactive.py +0 -0
  417. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/verify-provision-noble.sh +0 -0
  418. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/verify_878_review_capture.py +0 -0
  419. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/verify_release_published.py +0 -0
  420. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/scripts/verify_release_wheel.py +0 -0
  421. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/setup.cfg +0 -0
  422. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/SMOKE_SET.md +0 -0
  423. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/__init__.py +0 -0
  424. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/acceptance/ms-37/conftest.py +0 -0
  425. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/acceptance/ms-37/contract.md +0 -0
  426. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/acceptance/ms-37/manifest.yml +0 -0
  427. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  428. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  429. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/acceptance/ms-51/contract.md +0 -0
  430. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  431. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  432. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/acceptance/ms-51/manifest.yml +0 -0
  433. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  434. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/acceptance/ms-51/tsconfig.json +0 -0
  435. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  436. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/backends.py +0 -0
  437. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/conftest.py +0 -0
  438. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/board-pipeline-basic.json +0 -0
  439. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  440. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  441. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  442. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  443. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/playwright/all_pass.json +0 -0
  444. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  445. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/playwright/mixed_fail.json +0 -0
  446. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  447. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  448. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/playwright/skip.json +0 -0
  449. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/playwright/truncated.json +0 -0
  450. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  451. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  452. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  453. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  454. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  455. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  456. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  457. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  458. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_acceptance.py +0 -0
  459. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_acceptance_drivers.py +0 -0
  460. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent.py +0 -0
  461. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_api_error.py +0 -0
  462. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_app.py +0 -0
  463. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_branch_base.py +0 -0
  464. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_branch_capture.py +0 -0
  465. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_config_free_1712.py +0 -0
  466. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_deploy_units_endpoint.py +0 -0
  467. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_dirty_worktree.py +0 -0
  468. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  469. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_graph_self_heal.py +0 -0
  470. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_health_h3.py +0 -0
  471. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_idle_restart.py +0 -0
  472. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_push_failure.py +0 -0
  473. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_reap.py +0 -0
  474. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_repos_and_pull.py +0 -0
  475. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_restart_services_endpoint.py +0 -0
  476. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_skills_self_heal.py +0 -0
  477. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_startup_diagnostics.py +0 -0
  478. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_update.py +0 -0
  479. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_update_bluegreen.py +0 -0
  480. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_usage_limit.py +0 -0
  481. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_agent_zero_commit.py +0 -0
  482. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_ambient_home_isolation.py +0 -0
  483. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_approve_capability_reroute_3241.py +0 -0
  484. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_approve_dependency_busy_2804.py +0 -0
  485. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_approve_reject_plan.py +0 -0
  486. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_approve_usage_gate.py +0 -0
  487. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_approved_work_2532.py +0 -0
  488. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_approved_work_2996.py +0 -0
  489. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_assignment_already_recorded_daemon.py +0 -0
  490. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_audit_log.py +0 -0
  491. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_audit_outcome.py +0 -0
  492. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_audit_query.py +0 -0
  493. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_auto_loop.py +0 -0
  494. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_auto_release_publish_2035.py +0 -0
  495. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_backend_selection.py +0 -0
  496. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_backup.py +0 -0
  497. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_base_checkout_restore.py +0 -0
  498. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_block_log.py +0 -0
  499. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_board_cap_762.py +0 -0
  500. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_board_fixture.py +0 -0
  501. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_board_read_path.py +0 -0
  502. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_board_schema.py +0 -0
  503. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_board_service.py +0 -0
  504. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_board_state.py +0 -0
  505. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_board_wire.py +0 -0
  506. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_brain.py +0 -0
  507. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_branch_model.py +0 -0
  508. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_bug_intake.py +0 -0
  509. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_build_worker_image_env_update.py +0 -0
  510. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cargo_cache.py +0 -0
  511. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_check_gh_argv_containment.py +0 -0
  512. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_ci_acceptance_gate_1950.py +0 -0
  513. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_ci_fix.py +0 -0
  514. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_ci_github.py +0 -0
  515. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_ci_gitlab.py +0 -0
  516. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_ci_parity_2091.py +0 -0
  517. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_ci_store.py +0 -0
  518. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_claude_md_budget.py +0 -0
  519. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_claude_setup_token.py +0 -0
  520. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_acceptance.py +0 -0
  521. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_assign.py +0 -0
  522. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  523. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_assign_interactive_remote.py +0 -0
  524. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_assign_provider.py +0 -0
  525. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  526. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_audit.py +0 -0
  527. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_chat_continue.py +0 -0
  528. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_ci.py +0 -0
  529. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_codegen.py +0 -0
  530. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_decide.py +0 -0
  531. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_diagnose_capability_rules.py +0 -0
  532. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_diagnose_config_provenance.py +0 -0
  533. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_diagnose_forge_availability.py +0 -0
  534. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_diagnose_graph.py +0 -0
  535. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_diagnose_self.py +0 -0
  536. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_diagnose_test_coverage.py +0 -0
  537. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_doctor.py +0 -0
  538. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_doctor_config_free_1801.py +0 -0
  539. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  540. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  541. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_drive.py +0 -0
  542. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_drive_queue.py +0 -0
  543. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_escalate.py +0 -0
  544. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_fix_headless_review.py +0 -0
  545. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_gate_a.py +0 -0
  546. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_install_drift.py +0 -0
  547. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_install_skills.py +0 -0
  548. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_issue_comment.py +0 -0
  549. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_issue_create_label.py +0 -0
  550. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_issue_reopen.py +0 -0
  551. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_issue_view_list.py +0 -0
  552. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_issues.py +0 -0
  553. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_merge.py +0 -0
  554. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_milestone_assign.py +0 -0
  555. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_milestone_capture.py +0 -0
  556. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_milestone_chat_add_child.py +0 -0
  557. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_milestone_dispatch.py +0 -0
  558. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_milestone_gate_b.py +0 -0
  559. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_milestone_gate_c.py +0 -0
  560. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_milestone_order.py +0 -0
  561. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  562. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_milestone_ship.py +0 -0
  563. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_new_issue_chat.py +0 -0
  564. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_plans.py +0 -0
  565. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_portal.py +0 -0
  566. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_pr.py +0 -0
  567. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_pull_artifact.py +0 -0
  568. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_queue.py +0 -0
  569. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_reattach_sessions.py +0 -0
  570. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_refine_board.py +0 -0
  571. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_release_preflight.py +0 -0
  572. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_release_propagate.py +0 -0
  573. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_release_window.py +0 -0
  574. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_repo_2220.py +0 -0
  575. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  576. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_scorecard.py +0 -0
  577. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_serve_store_backend_3084.py +0 -0
  578. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_set_review_findings.py +0 -0
  579. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_status_advisory_terminal.py +0 -0
  580. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_status_contested_tag.py +0 -0
  581. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_status_invariant_alarms.py +0 -0
  582. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_status_machine_fault.py +0 -0
  583. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_status_merge_queue.py +0 -0
  584. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_status_provider.py +0 -0
  585. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_status_retried_3340.py +0 -0
  586. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_status_review_finalizing.py +0 -0
  587. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_status_supervisor_3366.py +0 -0
  588. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_status_test_failed_tag.py +0 -0
  589. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_status_usage_limit.py +0 -0
  590. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_sync_comments_873.py +0 -0
  591. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_test_plan.py +0 -0
  592. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_track.py +0 -0
  593. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_tui_update.py +0 -0
  594. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cli_wait.py +0 -0
  595. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_client.py +0 -0
  596. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_client_base_install.py +0 -0
  597. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_client_config_cache_atomic_3052.py +0 -0
  598. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_client_resource_migration_1946.py +0 -0
  599. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_commands_common.py +0 -0
  600. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_comments.py +0 -0
  601. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_completion_summary.py +0 -0
  602. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_config.py +0 -0
  603. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_config_acceptance.py +0 -0
  604. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_config_audit.py +0 -0
  605. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_config_drift_check.py +0 -0
  606. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_config_effective.py +0 -0
  607. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_config_pricing.py +0 -0
  608. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  609. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_config_usage_gate.py +0 -0
  610. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_confirm_test.py +0 -0
  611. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_conflict_fix.py +0 -0
  612. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_conflict_fix_semantic.py +0 -0
  613. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  614. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_coord_test.py +0 -0
  615. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  616. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_coord_test_runner_baseline.py +0 -0
  617. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_coord_test_runner_populated_home.py +0 -0
  618. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_coord_test_runner_routing.py +0 -0
  619. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_coord_test_runner_toolchain.py +0 -0
  620. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_coord_uat.py +0 -0
  621. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_coord_web_sse_restart_live.py +0 -0
  622. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_coordinator_machine.py +0 -0
  623. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_cross_platform_imports.py +0 -0
  624. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dao.py +0 -0
  625. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dashboard.py +0 -0
  626. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dashboard_api.py +0 -0
  627. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dashboard_fixture.py +0 -0
  628. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dashboard_server.py +0 -0
  629. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dashboard_terminal.py +0 -0
  630. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dashboard_terminal_live.py +0 -0
  631. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_db.py +0 -0
  632. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dead_end.py +0 -0
  633. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_decomposition_chat.py +0 -0
  634. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_deploy_coord_db_backup.py +0 -0
  635. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_deploy_coord_web_dist.py +0 -0
  636. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_deploy_coord_web_rollback.py +0 -0
  637. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_deploy_db_backup_unit.py +0 -0
  638. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_deploy_drive_queue_unit.py +0 -0
  639. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_deploy_failure_notify_unit.py +0 -0
  640. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_deploy_manifest.py +0 -0
  641. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_deploy_notify_unit.py +0 -0
  642. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_deploy_units_lane.py +0 -0
  643. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_deploy_web_unit.py +0 -0
  644. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_deprecation_telemetry.py +0 -0
  645. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_deps.py +0 -0
  646. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_diagnose.py +0 -0
  647. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dispatch_target_validation.py +0 -0
  648. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dispatch_workers.py +0 -0
  649. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dist_name.py +0 -0
  650. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_done_housekeeping.py +0 -0
  651. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dr_azure_scripts.py +0 -0
  652. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dr_promote.py +0 -0
  653. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_dr_verify.py +0 -0
  654. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_drive.py +0 -0
  655. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_drive_machine_fault.py +0 -0
  656. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_drive_queue.py +0 -0
  657. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_drive_queue_blocked_rendering.py +0 -0
  658. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_drive_queue_launch_argv.py +0 -0
  659. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_drive_queue_max_parallel_config.py +0 -0
  660. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  661. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_drive_queue_roll_pending.py +0 -0
  662. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  663. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_drive_sessions_snapshot.py +0 -0
  664. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_drive_state.py +0 -0
  665. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_drive_tmux.py +0 -0
  666. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_epic_up_capability_detection.py +0 -0
  667. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  668. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_epic_up_image_provenance.py +0 -0
  669. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_errors.py +0 -0
  670. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_events.py +0 -0
  671. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_failure_class.py +0 -0
  672. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_failure_classifier.py +0 -0
  673. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_filelock.py +0 -0
  674. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  675. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_fix_escalation_classifier.py +0 -0
  676. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_fix_of_force_override.py +0 -0
  677. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_fleet_config_health.py +0 -0
  678. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_fleet_health_probes.py +0 -0
  679. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_fleet_health_snapshot.py +0 -0
  680. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_fleet_watchdog.py +0 -0
  681. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_forge_availability.py +0 -0
  682. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_freshness.py +0 -0
  683. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_gate_a.py +0 -0
  684. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_gate_b.py +0 -0
  685. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_gate_snapshot_staleness.py +0 -0
  686. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_gates.py +0 -0
  687. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  688. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_gen_mock_index.py +0 -0
  689. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_generated_rust_fixture.py +0 -0
  690. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_generated_rust_requests.py +0 -0
  691. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_generated_types_fixture.py +0 -0
  692. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_github_ops.py +0 -0
  693. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_github_throttle.py +0 -0
  694. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_goal.py +0 -0
  695. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_graph_health.py +0 -0
  696. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_graph_selfheal_absent_2237.py +0 -0
  697. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_handoff.py +0 -0
  698. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_checks.py +0 -0
  699. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_cli.py +0 -0
  700. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_cli_graph.py +0 -0
  701. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_config.py +0 -0
  702. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_context.py +0 -0
  703. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_coord_tui_ci_pin.py +0 -0
  704. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_coord_web_ci_pin.py +0 -0
  705. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_deploy_lane_facts.py +0 -0
  706. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_fix.py +0 -0
  707. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_incident_regression.py +0 -0
  708. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_issues_sync_staleness.py +0 -0
  709. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_pr_churn.py +0 -0
  710. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_pypi.py +0 -0
  711. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_registry.py +0 -0
  712. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_release_cordon_probe.py +0 -0
  713. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_timer_active.py +0 -0
  714. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_toolchain.py +0 -0
  715. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_unit_drift.py +0 -0
  716. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_unit_enablement.py +0 -0
  717. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_health_wedged_drive_queue.py +0 -0
  718. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_hooks.py +0 -0
  719. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_housekeeping.py +0 -0
  720. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_human_attended_437.py +0 -0
  721. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_init.py +0 -0
  722. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_install_agent_venv_2911.py +0 -0
  723. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_integration.py +0 -0
  724. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_interactive_briefing_echo.py +0 -0
  725. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_interactive_pane_log_2541.py +0 -0
  726. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_interactive_prefill_state.py +0 -0
  727. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_interactive_session_relaunch.py +0 -0
  728. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_interactive_test_verdict_backstop.py +0 -0
  729. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_interactive_token_attribution.py +0 -0
  730. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_interactive_worktree.py +0 -0
  731. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_invariant_alarms.py +0 -0
  732. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_issue_store_seam.py +0 -0
  733. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_issues_sync_status.py +0 -0
  734. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_liveness_auditor.py +0 -0
  735. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_liveness_notify.py +0 -0
  736. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_lock_contention_ratchet.py +0 -0
  737. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_machine_fault.py +0 -0
  738. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_machine_metrics.py +0 -0
  739. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_machine_onboard.py +0 -0
  740. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_machine_pause.py +0 -0
  741. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_machine_stats.py +0 -0
  742. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_merge_queue.py +0 -0
  743. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_merge_verify.py +0 -0
  744. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_milestone_chat.py +0 -0
  745. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_milestone_dispatch.py +0 -0
  746. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_milestone_gate.py +0 -0
  747. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_milestone_order.py +0 -0
  748. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_milestone_seam.py +0 -0
  749. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_mock_author.py +0 -0
  750. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_model_tiering.py +0 -0
  751. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_models.py +0 -0
  752. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_models_config_labels.py +0 -0
  753. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_needs_attention.py +0 -0
  754. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_network.py +0 -0
  755. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_new_issue_chat.py +0 -0
  756. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_next_release_tag.py +0 -0
  757. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_node_shim.py +0 -0
  758. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_notifier_baseline.py +0 -0
  759. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_notifier_cli.py +0 -0
  760. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_notifier_collect.py +0 -0
  761. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_notifier_config.py +0 -0
  762. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_notifier_drive_seam.py +0 -0
  763. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_notifier_isolation.py +0 -0
  764. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_notifier_predicate.py +0 -0
  765. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_notifier_quiet_hours.py +0 -0
  766. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_notifier_service.py +0 -0
  767. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_notify.py +0 -0
  768. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_notify_drain.py +0 -0
  769. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_openapi.py +0 -0
  770. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_operational_defaults.py +0 -0
  771. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_overlap_fence.py +0 -0
  772. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_overlap_predict.py +0 -0
  773. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_packaged_deploy_units.py +0 -0
  774. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_parentage.py +0 -0
  775. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_paste_landed.py +0 -0
  776. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  777. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_pipeline.py +0 -0
  778. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_plan_followup_approve_plan_command.py +0 -0
  779. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_plan_followup_pr_command.py +0 -0
  780. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_plan_followup_review_command.py +0 -0
  781. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_plan_only.py +0 -0
  782. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_plan_parser.py +0 -0
  783. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_platform_paths.py +0 -0
  784. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_portal_bridge.py +0 -0
  785. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_portal_config.py +0 -0
  786. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_portal_store.py +0 -0
  787. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_portal_sync.py +0 -0
  788. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_pr_body_lint.py +0 -0
  789. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_prereqs.py +0 -0
  790. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_production_db_guard.py +0 -0
  791. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_progress.py +0 -0
  792. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_provider_seam.py +0 -0
  793. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_providers.py +0 -0
  794. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_providers_config_labels.py +0 -0
  795. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_providers_pty.py +0 -0
  796. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_provision_core.py +0 -0
  797. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_provision_machine.py +0 -0
  798. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_py_rust_mirror_inventory.py +0 -0
  799. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_quiet_hours.py +0 -0
  800. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_quiet_hours_store_2146.py +0 -0
  801. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_reap_merged_sessions.py +0 -0
  802. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_reap_stale_interactive_tick.py +0 -0
  803. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_reconcile_branch.py +0 -0
  804. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_reconcile_completions.py +0 -0
  805. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  806. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_reconcile_merges.py +0 -0
  807. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_reconcile_no_agent_record.py +0 -0
  808. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_reconcile_tick.py +0 -0
  809. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_reconcile_usage_limit_done.py +0 -0
  810. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_refine_chat.py +0 -0
  811. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_release_cordon_2101.py +0 -0
  812. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  813. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_release_cordon_deadlock_2240.py +0 -0
  814. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  815. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_release_cordon_stuck_2490.py +0 -0
  816. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_release_propagate.py +0 -0
  817. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_release_propagate_threshold.py +0 -0
  818. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_release_roll_between_legs_2854.py +0 -0
  819. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_release_roll_window_handoff.py +0 -0
  820. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_release_unified_1242.py +0 -0
  821. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_release_verify.py +0 -0
  822. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_release_window.py +0 -0
  823. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_remote_auto_prune.py +0 -0
  824. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_remote_interactive_reaper.py +0 -0
  825. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_repo_add.py +0 -0
  826. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_repo_dormancy.py +0 -0
  827. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_repo_edit_2220.py +0 -0
  828. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_repo_graph_fleet_2237.py +0 -0
  829. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_repo_max_parallel_3423.py +0 -0
  830. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_repo_onboard_2220.py +0 -0
  831. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_report_result_push.py +0 -0
  832. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_reports.py +0 -0
  833. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_restart_cmd.py +0 -0
  834. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_retry.py +0 -0
  835. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_retry_advisory_1606.py +0 -0
  836. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_retry_escalation_classify_3360.py +0 -0
  837. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_retry_type_1636.py +0 -0
  838. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_revalidate.py +0 -0
  839. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_review.py +0 -0
  840. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_review_end_review_without_verdict.py +0 -0
  841. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_review_parse_failure_diagnostic.py +0 -0
  842. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_review_reaffirm.py +0 -0
  843. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_review_state.py +0 -0
  844. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_review_verdict_backstop.py +0 -0
  845. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_review_verdict_override_audit.py +0 -0
  846. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_review_verdict_relay.py +0 -0
  847. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_review_zero_commits.py +0 -0
  848. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_scoped_review_wiring.py +0 -0
  849. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_scorecard.py +0 -0
  850. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_self_health.py +0 -0
  851. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_serve.py +0 -0
  852. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_serve_app.py +0 -0
  853. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_serve_app_board_trim.py +0 -0
  854. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_serve_rest_routes.py +0 -0
  855. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_session.py +0 -0
  856. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_slice_issue_attribution.py +0 -0
  857. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  858. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_smoke_live_checkout_restore.py +0 -0
  859. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_smoke_workflow.py +0 -0
  860. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_spend_ceiling.py +0 -0
  861. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_spend_ceiling_coordinator.py +0 -0
  862. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_split.py +0 -0
  863. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_split_work.py +0 -0
  864. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_sql_dialect.py +0 -0
  865. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_sqlite_connect_ratchet.py +0 -0
  866. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_stage_projection.py +0 -0
  867. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_stale_busy_reviewer_697.py +0 -0
  868. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_stalled_pipeline.py +0 -0
  869. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_state.py +0 -0
  870. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_state_review_findings_daemon.py +0 -0
  871. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_status_fleet_footer.py +0 -0
  872. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_stop_1567.py +0 -0
  873. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_store_contract.py +0 -0
  874. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_store_migrate.py +0 -0
  875. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_stuck.py +0 -0
  876. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  877. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_terminal_command.py +0 -0
  878. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_test_author.py +0 -0
  879. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_test_chat.py +0 -0
  880. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_test_orchestrator.py +0 -0
  881. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_test_report.py +0 -0
  882. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_test_verdict_parsing.py +0 -0
  883. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_test_verdict_transcript_floor.py +0 -0
  884. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_text_io_encoding_audit.py +0 -0
  885. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_thin_client_board_audit.py +0 -0
  886. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_thin_client_config_load_1080.py +0 -0
  887. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_thin_client_daemon_routing_906.py +0 -0
  888. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_throwaway_vm.py +0 -0
  889. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_tmux_host.py +0 -0
  890. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_tmux_session.py +0 -0
  891. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_transcript_floor.py +0 -0
  892. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_uat_checks.py +0 -0
  893. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_usage.py +0 -0
  894. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_usage_limits.py +0 -0
  895. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_usage_rollup.py +0 -0
  896. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_venv_live_install_2121.py +0 -0
  897. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_version_single_source.py +0 -0
  898. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_watch.py +0 -0
  899. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  900. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_worker_env_venv_isolation.py +0 -0
  901. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_worker_events.py +0 -0
  902. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_worker_image_pin_sync.py +0 -0
  903. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_worker_safety.py +0 -0
  904. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_worker_test_scoping.py +0 -0
  905. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_worktree.py +0 -0
  906. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  907. {code_coordinator-0.5.513 → code_coordinator-0.5.514}/tests/test_write_parity.py +0 -0
  908. {code_coordinator-0.5.513 → 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.513
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.513
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,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.513",
2
+ "tag": "0.5.514",
3
3
  "distance": 0,
4
- "node": "g62d2f7e1d36394c598063480dfdc2028204abbf1",
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
@@ -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
 
@@ -480,7 +480,7 @@ class TestApproveProviderAwareModel:
480
480
  with patch("coord.dispatch.httpx.post", return_value=mock_resp) as mock_post, \
481
481
  patch(
482
482
  "coord.dispatch_liveness.github_issue_liveness_fetcher",
483
- return_value=lambda _repo, _issue: (False, False),
483
+ return_value=lambda _repo, _issue, _branch=None: (False, False),
484
484
  ), \
485
485
  patch("coord.github_ops.get_issue") as mock_get_issue, \
486
486
  patch("coord.github_ops.post_issue_comment"):
@@ -2610,6 +2610,28 @@ class TestDispatchLivenessGate:
2610
2610
  dispatch(proposal, config)
2611
2611
  mock_post.assert_called_once()
2612
2612
 
2613
+ @patch("coord.dispatch.httpx.post")
2614
+ def test_passes_proposal_target_branch_to_the_fetcher(
2615
+ self, mock_post: MagicMock, config: Config, proposal: Proposal,
2616
+ ) -> None:
2617
+ """#3436: the fetcher must see the DISPATCH'S OWN target branch, not
2618
+ just `(repo_name, issue_number)` — the whole point being that a
2619
+ merged, zero-commit `issue-{N}-*` sibling (e.g. a review-leg
2620
+ branch) must not be able to answer for the real work branch this
2621
+ exact dispatch is about to land on."""
2622
+ mock_resp = MagicMock()
2623
+ mock_resp.json.return_value = {"id": "abc"}
2624
+ mock_post.return_value = mock_resp
2625
+ proposal.target_branch = "issue-10-fix-auth"
2626
+ seen: list[tuple] = []
2627
+
2628
+ def fetcher(repo, num, branch=None):
2629
+ seen.append((repo, num, branch))
2630
+ return False, False
2631
+
2632
+ dispatch(proposal, config, issue_liveness_fetcher=fetcher)
2633
+ assert seen == [("api", 10, "issue-10-fix-auth")]
2634
+
2613
2635
  @patch("coord.dispatch.record_dispatch_refusal")
2614
2636
  @patch("coord.dispatch.httpx.post")
2615
2637
  def test_refuses_a_closed_issue(
@@ -2619,7 +2641,7 @@ class TestDispatchLivenessGate:
2619
2641
  with pytest.raises(DispatchRefused, match="already closed"):
2620
2642
  dispatch(
2621
2643
  proposal, config,
2622
- issue_liveness_fetcher=lambda repo, num: (True, False),
2644
+ issue_liveness_fetcher=lambda repo, num, branch=None: (True, False),
2623
2645
  )
2624
2646
  mock_post.assert_not_called()
2625
2647
  mock_record.assert_called_once()
@@ -2633,7 +2655,7 @@ class TestDispatchLivenessGate:
2633
2655
  with pytest.raises(DispatchRefused, match="already merged"):
2634
2656
  dispatch(
2635
2657
  proposal, config,
2636
- issue_liveness_fetcher=lambda repo, num: (False, True),
2658
+ issue_liveness_fetcher=lambda repo, num, branch=None: (False, True),
2637
2659
  )
2638
2660
  mock_post.assert_not_called()
2639
2661
  mock_record.assert_called_once()
@@ -2647,7 +2669,7 @@ class TestDispatchLivenessGate:
2647
2669
  mock_post.return_value = mock_resp
2648
2670
  dispatch(
2649
2671
  proposal, config,
2650
- issue_liveness_fetcher=lambda repo, num: (False, False),
2672
+ issue_liveness_fetcher=lambda repo, num, branch=None: (False, False),
2651
2673
  )
2652
2674
  mock_post.assert_called_once()
2653
2675
 
@@ -2662,7 +2684,7 @@ class TestDispatchLivenessGate:
2662
2684
  with pytest.raises(ValueError, match="not routable"):
2663
2685
  dispatch(
2664
2686
  proposal, config,
2665
- issue_liveness_fetcher=lambda repo, num: (False, False),
2687
+ issue_liveness_fetcher=lambda repo, num, branch=None: (False, False),
2666
2688
  credential_fetcher=lambda m: False,
2667
2689
  )
2668
2690
  mock_post.assert_not_called()
@@ -2680,17 +2702,17 @@ class TestDispatchLivenessGate:
2680
2702
  with pytest.raises(DispatchRefused):
2681
2703
  dispatch(
2682
2704
  proposal, config,
2683
- issue_liveness_fetcher=lambda repo, num: (True, False),
2705
+ issue_liveness_fetcher=lambda repo, num, branch=None: (True, False),
2684
2706
  )
2685
2707
  with pytest.raises(DispatchRefused):
2686
2708
  dispatch(
2687
2709
  proposal, config,
2688
- issue_liveness_fetcher=lambda repo, num: (False, True),
2710
+ issue_liveness_fetcher=lambda repo, num, branch=None: (False, True),
2689
2711
  )
2690
2712
  with pytest.raises(DispatchRefused):
2691
2713
  dispatch(
2692
2714
  proposal, config,
2693
- issue_liveness_fetcher=lambda repo, num: (False, False),
2715
+ issue_liveness_fetcher=lambda repo, num, branch=None: (False, False),
2694
2716
  credential_fetcher=lambda m: False,
2695
2717
  )
2696
2718
  mock_post.assert_not_called()
@@ -140,7 +140,7 @@ class TestGithubIssueLivenessFetcher:
140
140
  assert issue_closed is True
141
141
  assert branch_merged is False
142
142
  mock_closed.assert_called_once_with("acme/api", 42)
143
- mock_merged.assert_called_once_with("acme/api", 42)
143
+ mock_merged.assert_called_once_with("acme/api", 42, branch=None)
144
144
 
145
145
  @patch("coord.claim.any_matching_branch_merged", return_value=True)
146
146
  @patch("coord.github_ops.issue_is_closed", return_value=False)
@@ -167,4 +167,22 @@ class TestGithubIssueLivenessFetcher:
167
167
  assert issue_closed is False
168
168
  assert branch_merged is False
169
169
  mock_closed.assert_called_once_with("ghost", 1)
170
- mock_merged.assert_called_once_with("ghost", 1)
170
+ mock_merged.assert_called_once_with("ghost", 1, branch=None)
171
+
172
+ @patch("coord.claim.any_matching_branch_merged", return_value=False)
173
+ @patch("coord.github_ops.issue_is_closed", return_value=False)
174
+ def test_passes_the_target_branch_through(
175
+ self, mock_closed: MagicMock, mock_merged: MagicMock,
176
+ ) -> None:
177
+ """#3436: a caller that names a specific branch (the dispatch's
178
+ actual target — e.g. `Proposal.target_branch`/`Assignment.branch`)
179
+ must have it forwarded to `any_matching_branch_merged`'s
180
+ branch-scoped check, not silently dropped in favour of the
181
+ issue-scoped fallback."""
182
+ fetcher = github_issue_liveness_fetcher(self._config())
183
+ issue_closed, branch_merged = fetcher("api", 42, "issue-42-real-work")
184
+ assert issue_closed is False
185
+ assert branch_merged is False
186
+ mock_merged.assert_called_once_with(
187
+ "acme/api", 42, branch="issue-42-real-work"
188
+ )
@@ -412,7 +412,7 @@ class TestReassignLivenessGate:
412
412
  ) -> None:
413
413
  result = _reassign(
414
414
  _failed(), Board(), _plain_cfg(),
415
- issue_liveness_fetcher=lambda repo, num: (True, False),
415
+ issue_liveness_fetcher=lambda repo, num, branch=None: (True, False),
416
416
  )
417
417
  assert result is None
418
418
  mock_post.assert_not_called()
@@ -425,7 +425,7 @@ class TestReassignLivenessGate:
425
425
  ) -> None:
426
426
  result = _reassign(
427
427
  _failed(), Board(), _plain_cfg(),
428
- issue_liveness_fetcher=lambda repo, num: (False, True),
428
+ issue_liveness_fetcher=lambda repo, num, branch=None: (False, True),
429
429
  )
430
430
  assert result is None
431
431
  mock_post.assert_not_called()
@@ -438,11 +438,34 @@ class TestReassignLivenessGate:
438
438
  mock_post.return_value = resp
439
439
  result = _reassign(
440
440
  _failed(), Board(), _plain_cfg(),
441
- issue_liveness_fetcher=lambda repo, num: (False, False),
441
+ issue_liveness_fetcher=lambda repo, num, branch=None: (False, False),
442
442
  )
443
443
  assert result is not None
444
444
  mock_post.assert_called_once()
445
445
 
446
+ @patch("coord.reconcile.httpx.post")
447
+ def test_passes_failed_branch_to_the_fetcher(
448
+ self, mock_post: MagicMock,
449
+ ) -> None:
450
+ """#3436: the fetcher must see the FAILED ROW'S OWN branch, not
451
+ just `(repo_name, issue_number)` — a merged, zero-commit
452
+ `issue-{N}-*` sibling must not be able to answer for a retry that
453
+ would actually land on a different, unmerged branch."""
454
+ resp = MagicMock()
455
+ resp.json.return_value = {"id": "newid"}
456
+ mock_post.return_value = resp
457
+ seen: list[tuple] = []
458
+
459
+ def fetcher(repo, num, branch=None):
460
+ seen.append((repo, num, branch))
461
+ return False, False
462
+
463
+ _reassign(
464
+ _failed(branch="issue-1-real-work"), Board(), _plain_cfg(),
465
+ issue_liveness_fetcher=fetcher,
466
+ )
467
+ assert seen == [("api", 1, "issue-1-real-work")]
468
+
446
469
 
447
470
  class TestIssueLivenessFromCache:
448
471
  """#3376: `_issue_liveness_from_cache` — the real fetcher `reconcile()`
@@ -479,6 +502,36 @@ class TestIssueLivenessFromCache:
479
502
  assert closed is False
480
503
  assert merged is True
481
504
 
505
+ def test_merged_scoped_to_branch_ignores_merged_sibling(self) -> None:
506
+ """#3436: a merged completed row for the same issue but on a
507
+ DIFFERENT branch (e.g. a review-leg branch cut from the default
508
+ branch) must not report "merged" for a retry that targets the
509
+ issue's real, unmerged work branch."""
510
+ from coord.reconcile import _issue_liveness_from_cache
511
+
512
+ board = Board(
513
+ completed=[
514
+ _failed(
515
+ status="merged", issue_number=42, type="review",
516
+ branch="issue-42-review-fix-1",
517
+ ),
518
+ ]
519
+ )
520
+ # No branch given: falls back to the issue-scoped check, which
521
+ # still reports the merged sibling (unchanged fallback behaviour).
522
+ closed, merged = _issue_liveness_from_cache(board, "api", 42)
523
+ assert merged is True
524
+ # Scoped to the real work branch: must NOT report merged.
525
+ closed, merged = _issue_liveness_from_cache(
526
+ board, "api", 42, "issue-42-real-work"
527
+ )
528
+ assert merged is False
529
+ # Scoped to the merged sibling itself: correctly reports merged.
530
+ closed, merged = _issue_liveness_from_cache(
531
+ board, "api", 42, "issue-42-review-fix-1"
532
+ )
533
+ assert merged is True
534
+
482
535
 
483
536
  class TestReassignCapabilityGate:
484
537
  """`_reassign` must apply the same #1711 structural