code-coordinator 0.5.565__tar.gz → 0.5.567__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 (931) hide show
  1. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/drive_queue.py +141 -4
  5. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/drive_queue.py +90 -0
  6. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/github_ops.py +53 -0
  7. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/win_native_driver.py +17 -3
  8. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/conftest.py +30 -0
  9. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_drive_queue.py +239 -0
  10. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_drive_queue.py +77 -0
  11. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_github_ops.py +65 -0
  12. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_win_native_driver.py +148 -0
  13. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/.claude/commands/board.md +0 -0
  14. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/.claude/commands/complete-session.md +0 -0
  15. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/.claude/commands/coordinator.md +0 -0
  16. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/.githooks/_lib.sh +0 -0
  17. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/.githooks/post-checkout +0 -0
  18. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/.githooks/post-commit +0 -0
  19. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/.githooks/post-merge +0 -0
  20. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  21. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/.github/coord-ci-acceptance.yml +0 -0
  22. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/.github/workflows/auto-release.yml +0 -0
  23. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/.github/workflows/publish.yml +0 -0
  24. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/.github/workflows/test.yml +0 -0
  25. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/.gitignore +0 -0
  26. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/CLAUDE.md +0 -0
  27. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/GOAL.md +0 -0
  28. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/LICENSE +0 -0
  29. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/MANIFEST.in +0 -0
  30. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/README.md +0 -0
  31. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/code_coordinator.egg-info/SOURCES.txt +0 -0
  32. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/code_coordinator.egg-info/dependency_links.txt +0 -0
  33. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/code_coordinator.egg-info/entry_points.txt +0 -0
  34. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/code_coordinator.egg-info/requires.txt +0 -0
  35. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/code_coordinator.egg-info/scm_file_list.json +0 -0
  36. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/code_coordinator.egg-info/top_level.txt +0 -0
  37. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/__init__.py +0 -0
  38. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/_board_mapping.py +0 -0
  39. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/acceptance.py +0 -0
  40. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/acceptance_drivers.py +0 -0
  41. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/agent.py +0 -0
  42. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/agent_app.py +0 -0
  43. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/agent_update.py +0 -0
  44. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/agents/opencode/.gitignore +0 -0
  45. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/agents/opencode/agents/work.md +0 -0
  46. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/agents/opencode/routing.jsonc +0 -0
  47. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/approved_work.py +0 -0
  48. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/audit.py +0 -0
  49. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/auto_loop.py +0 -0
  50. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/backup.py +0 -0
  51. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/block_log.py +0 -0
  52. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/board_schema.py +0 -0
  53. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/board_service.py +0 -0
  54. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/board_wire.py +0 -0
  55. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/brain.py +0 -0
  56. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/branch_model.py +0 -0
  57. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/bug_intake.py +0 -0
  58. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/bugbash.py +0 -0
  59. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/cargo_cache.py +0 -0
  60. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/ci_fix.py +0 -0
  61. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/ci_github.py +0 -0
  62. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/ci_gitlab.py +0 -0
  63. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/ci_store.py +0 -0
  64. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/claim.py +0 -0
  65. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/claude_setup_token.py +0 -0
  66. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/cli.py +0 -0
  67. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/client.py +0 -0
  68. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/codegen.py +0 -0
  69. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/__init__.py +0 -0
  70. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/_common.py +0 -0
  71. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/acceptance.py +0 -0
  72. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/agent_ops.py +0 -0
  73. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/audit.py +0 -0
  74. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/backup.py +0 -0
  75. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/bugbash.py +0 -0
  76. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/chat.py +0 -0
  77. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/ci.py +0 -0
  78. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/codegen.py +0 -0
  79. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/dispatch.py +0 -0
  80. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/dispatch_workers.py +0 -0
  81. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/dr.py +0 -0
  82. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/drive.py +0 -0
  83. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/gate_a.py +0 -0
  84. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/gates.py +0 -0
  85. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/issues.py +0 -0
  86. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/lifecycle.py +0 -0
  87. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/machine.py +0 -0
  88. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/merge.py +0 -0
  89. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/milestone.py +0 -0
  90. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/plan_followup.py +0 -0
  91. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/plans.py +0 -0
  92. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/portal.py +0 -0
  93. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/pr.py +0 -0
  94. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/release.py +0 -0
  95. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/repo.py +0 -0
  96. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/report.py +0 -0
  97. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/review.py +0 -0
  98. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/scorecard.py +0 -0
  99. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/sessions.py +0 -0
  100. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/setup.py +0 -0
  101. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/status.py +0 -0
  102. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/store_migrate.py +0 -0
  103. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/terminal.py +0 -0
  104. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/test_gate.py +0 -0
  105. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/commands/tui.py +0 -0
  106. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/comments.py +0 -0
  107. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/config.py +0 -0
  108. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/config_reload.py +0 -0
  109. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/confirm_test.py +0 -0
  110. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/conflict_fix.py +0 -0
  111. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/dao.py +0 -0
  112. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/dashboard/__init__.py +0 -0
  113. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/dashboard/fixture.py +0 -0
  114. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/dashboard/index.html +0 -0
  115. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/dashboard/reports.html +0 -0
  116. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/dashboard/server.py +0 -0
  117. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/dashboard/terminal.py +0 -0
  118. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/db.py +0 -0
  119. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/dead_end.py +0 -0
  120. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/decomposition_chat.py +0 -0
  121. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/README.md +0 -0
  122. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-agent.service +0 -0
  123. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-backup.service +0 -0
  124. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-backup.timer +0 -0
  125. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-db-backup.service +0 -0
  126. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-db-backup.sh +0 -0
  127. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-db-backup.timer +0 -0
  128. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-dr-verify.service +0 -0
  129. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-dr-verify.timer +0 -0
  130. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-drive-queue.service +0 -0
  131. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-drive-queue.timer +0 -0
  132. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-failure-notify.service +0 -0
  133. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-fleet-watchdog.service +0 -0
  134. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  135. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-notify.service +0 -0
  136. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-notify.timer +0 -0
  137. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-release-propagate.service +0 -0
  138. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-release-propagate.timer +0 -0
  139. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-release-window.service +0 -0
  140. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-release-window.timer +0 -0
  141. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-serve.service +0 -0
  142. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-web-dist-build.service +0 -0
  143. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-web-dist-build.timer +0 -0
  144. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy/coord-web.service +0 -0
  145. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy_manifest.py +0 -0
  146. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deploy_units.py +0 -0
  147. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deprecation_telemetry.py +0 -0
  148. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/deps.py +0 -0
  149. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/diagnose.py +0 -0
  150. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/dispatch.py +0 -0
  151. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/dispatch_liveness.py +0 -0
  152. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/dist_name.py +0 -0
  153. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/dr_promote.py +0 -0
  154. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/dr_verify.py +0 -0
  155. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/drive.py +0 -0
  156. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/drive_sessions_snapshot.py +0 -0
  157. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/drive_state.py +0 -0
  158. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/events.py +0 -0
  159. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/failure_class.py +0 -0
  160. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/failure_classifier.py +0 -0
  161. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/filelock.py +0 -0
  162. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/fleet_config_health.py +0 -0
  163. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/forge_availability.py +0 -0
  164. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/freshness.py +0 -0
  165. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/gate_a.py +0 -0
  166. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/gate_b.py +0 -0
  167. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/gate_snapshot.py +0 -0
  168. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/gates.py +0 -0
  169. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/gen_board_fixture.py +0 -0
  170. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/github_throttle.py +0 -0
  171. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/goal.py +0 -0
  172. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/graph_health.py +0 -0
  173. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/gtk_native_driver.py +0 -0
  174. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/__init__.py +0 -0
  175. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/aggregate.py +0 -0
  176. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/__init__.py +0 -0
  177. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/_ci_pin.py +0 -0
  178. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/agent_install.py +0 -0
  179. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/cargo_targets.py +0 -0
  180. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/claude_binary.py +0 -0
  181. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/config_drift.py +0 -0
  182. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  183. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/coord_web_ci_pin.py +0 -0
  184. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/deploy_lane_facts.py +0 -0
  185. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/disk.py +0 -0
  186. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/fleet_board.py +0 -0
  187. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  188. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/fleet_phantom.py +0 -0
  189. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/fleet_unit_drift.py +0 -0
  190. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/graph.py +0 -0
  191. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/graphify_cli.py +0 -0
  192. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/index_lock.py +0 -0
  193. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/issues_sync_staleness.py +0 -0
  194. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/local_machine_identity.py +0 -0
  195. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/plan_usage.py +0 -0
  196. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/pr_churn.py +0 -0
  197. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/release_cordon.py +0 -0
  198. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/repo_state.py +0 -0
  199. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/spawned_coord.py +0 -0
  200. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/stalled_pipeline.py +0 -0
  201. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/timer_active.py +0 -0
  202. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/toolchain.py +0 -0
  203. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/unit_drift.py +0 -0
  204. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/unit_enablement.py +0 -0
  205. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/wedged_drive_queue.py +0 -0
  206. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/checks/worktrees.py +0 -0
  207. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/cli.py +0 -0
  208. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/context.py +0 -0
  209. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/fleet_snapshot.py +0 -0
  210. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/models.py +0 -0
  211. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/pypi.py +0 -0
  212. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/registry.py +0 -0
  213. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/render.py +0 -0
  214. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/health/units.py +0 -0
  215. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/hooks.py +0 -0
  216. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/housekeeping.py +0 -0
  217. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/interactive.py +0 -0
  218. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/invariant_alarms.py +0 -0
  219. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/issue_store.py +0 -0
  220. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/issues_sync_status.py +0 -0
  221. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/liveness_auditor.py +0 -0
  222. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/mac_native_driver.py +0 -0
  223. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/machine_fault.py +0 -0
  224. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/machine_metrics.py +0 -0
  225. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/machine_onboard.py +0 -0
  226. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/machine_pause.py +0 -0
  227. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/machine_stats.py +0 -0
  228. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/merge_queue.py +0 -0
  229. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/milestone_chat.py +0 -0
  230. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/milestone_dispatch.py +0 -0
  231. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/milestone_gate.py +0 -0
  232. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/milestone_order.py +0 -0
  233. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/mock_author.py +0 -0
  234. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/models.py +0 -0
  235. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/network.py +0 -0
  236. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/new_issue_chat.py +0 -0
  237. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/notifier/__init__.py +0 -0
  238. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/notifier/baseline.py +0 -0
  239. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/notifier/cli.py +0 -0
  240. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/notifier/collect.py +0 -0
  241. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/notifier/digest.py +0 -0
  242. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/notifier/models.py +0 -0
  243. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/notifier/predicate.py +0 -0
  244. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/notifier/service.py +0 -0
  245. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/notifier/store.py +0 -0
  246. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/notifier/transport.py +0 -0
  247. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/notify.py +0 -0
  248. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/openapi.py +0 -0
  249. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/overlap_fence.py +0 -0
  250. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/overlap_predict.py +0 -0
  251. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/parentage.py +0 -0
  252. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/parentage_github.py +0 -0
  253. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/pipeline.py +0 -0
  254. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/plan_parser.py +0 -0
  255. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/plans.py +0 -0
  256. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/platform_paths.py +0 -0
  257. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/portal_bridge.py +0 -0
  258. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/portal_store.py +0 -0
  259. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/portal_sync.py +0 -0
  260. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/pr_body_lint.py +0 -0
  261. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/prereqs.py +0 -0
  262. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/progress.py +0 -0
  263. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/providers/__init__.py +0 -0
  264. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/providers/base.py +0 -0
  265. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/providers/claude.py +0 -0
  266. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/providers/claude_pty.py +0 -0
  267. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/providers/opencode.py +0 -0
  268. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/queue_diagnose.py +0 -0
  269. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/reconcile.py +0 -0
  270. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/reconcile_tick.py +0 -0
  271. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/refine_chat.py +0 -0
  272. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/release_cordon.py +0 -0
  273. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/release_gate.py +0 -0
  274. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/release_propagate.py +0 -0
  275. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/release_verify.py +0 -0
  276. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/release_window.py +0 -0
  277. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/repo_dormancy.py +0 -0
  278. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/repo_edit.py +0 -0
  279. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/repo_onboard.py +0 -0
  280. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/reports.py +0 -0
  281. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/rest_schema.py +0 -0
  282. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/restart_cmd.py +0 -0
  283. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/revalidate.py +0 -0
  284. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/review.py +0 -0
  285. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/scorecard.py +0 -0
  286. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/self_health.py +0 -0
  287. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/serve_app.py +0 -0
  288. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  289. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  290. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  291. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  292. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  293. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/skills/portal-followup/SKILL.md +0 -0
  294. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/skills/release-now/SKILL.md +0 -0
  295. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  296. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  297. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/skills/update-issue/SKILL.md +0 -0
  298. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/smoke.py +0 -0
  299. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/smoke_tags.py +0 -0
  300. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/spend_ceiling.py +0 -0
  301. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/split_work.py +0 -0
  302. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/sql.py +0 -0
  303. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/stage_projection.py +0 -0
  304. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/state.py +0 -0
  305. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/store_migrate.py +0 -0
  306. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/store_parity.py +0 -0
  307. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/templates/deploy-cloudflare.node.yml +0 -0
  308. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/test_author.py +0 -0
  309. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/test_chat.py +0 -0
  310. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/test_orchestrator.py +0 -0
  311. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/test_report.py +0 -0
  312. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/tui_pty_driver.py +0 -0
  313. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/tui_release.py +0 -0
  314. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/uat_checks.py +0 -0
  315. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/usage.py +0 -0
  316. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/usage_limits.py +0 -0
  317. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/usage_rollup.py +0 -0
  318. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/win_native_bridge.py +0 -0
  319. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coord/worker_events.py +0 -0
  320. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/coordinator.example.yml +0 -0
  321. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-agent.service +0 -0
  322. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-backup.service +0 -0
  323. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-backup.timer +0 -0
  324. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-db-backup.service +0 -0
  325. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-db-backup.sh +0 -0
  326. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-db-backup.timer +0 -0
  327. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-dr-verify.service +0 -0
  328. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-dr-verify.timer +0 -0
  329. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-drive-queue.service +0 -0
  330. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-drive-queue.timer +0 -0
  331. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-failure-notify.service +0 -0
  332. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-failure-notify.sh +0 -0
  333. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-fleet-watchdog.service +0 -0
  334. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-fleet-watchdog.timer +0 -0
  335. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-notify.service +0 -0
  336. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-notify.timer +0 -0
  337. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-release-propagate.service +0 -0
  338. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-release-propagate.timer +0 -0
  339. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-release-window.service +0 -0
  340. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-release-window.timer +0 -0
  341. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-serve.service +0 -0
  342. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-web-dist-build.service +0 -0
  343. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-web-dist-build.sh +0 -0
  344. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-web-dist-build.timer +0 -0
  345. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-web-rollback.sh +0 -0
  346. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/coord-web.service +0 -0
  347. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/deploy/node-shim.sh +0 -0
  348. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/ADR_COORD_TUI_CI.md +0 -0
  349. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  350. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/ADR_COORD_WEB_CI.md +0 -0
  351. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/ADR_COORD_WEB_DIST.md +0 -0
  352. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  353. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/AGENT_OPERATIONS.md +0 -0
  354. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/ARCHITECTURE.md +0 -0
  355. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/ARCH_SECURITY_GATES.md +0 -0
  356. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/COCKPIT.md +0 -0
  357. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/CONTROL_CENTER.md +0 -0
  358. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/COST_DISCIPLINE.md +0 -0
  359. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/CROSS_PLATFORM.md +0 -0
  360. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/CUSTOMER_FACING_APPS.md +0 -0
  361. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/CUSTOMER_PORTAL.md +0 -0
  362. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/DATA_STORE_SELECTION.md +0 -0
  363. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/DISASTER_RECOVERY.md +0 -0
  364. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/DRIVE_QUEUE.md +0 -0
  365. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/EPHEMERAL_WORKERS.md +0 -0
  366. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/FORGE_MIGRATION.md +0 -0
  367. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/GRAPHIFY_SETUP.md +0 -0
  368. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/ISSUE_GUIDANCE.md +0 -0
  369. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/MAC_MINI.md +0 -0
  370. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  371. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/NOTIFIER.md +0 -0
  372. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/OPENCODE_VERIFICATION.md +0 -0
  373. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/OPERATING_GOTCHAS.md +0 -0
  374. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/OPERATOR_GUIDES.md +0 -0
  375. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/ORACLE_LOOP.md +0 -0
  376. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/PHONE_WEBAPP.md +0 -0
  377. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/PIPELINE_V2.md +0 -0
  378. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/PLATFORM_EVOLUTION.md +0 -0
  379. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/SECOND_BACKEND.md +0 -0
  380. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/STORE_SERVICE.md +0 -0
  381. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  382. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/WEB_CONTROL_CENTER.md +0 -0
  383. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/WSL_WINDOWS_WORKER.md +0 -0
  384. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/mocks/web/README.md +0 -0
  385. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/mocks/web/_tokens.css +0 -0
  386. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/mocks/web/issue-detail.html +0 -0
  387. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/mocks/web/pipeline-narrow.html +0 -0
  388. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/docs/mocks/web/pipeline-wide.html +0 -0
  389. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/graphify-out/.gitignore +0 -0
  390. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/install-agent.sh +0 -0
  391. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/pyproject.toml +0 -0
  392. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/audit_review_verdict_overrides.py +0 -0
  393. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  394. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/azure-workers/build-worker-image.sh +0 -0
  395. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/azure-workers/coordinator-machine.py +0 -0
  396. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/azure-workers/dr-down.sh +0 -0
  397. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/azure-workers/dr-up.sh +0 -0
  398. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/azure-workers/epic-down.sh +0 -0
  399. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/azure-workers/epic-up.sh +0 -0
  400. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/azure-workers/preflight.sh +0 -0
  401. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/azure-workers/provision-server.sh +0 -0
  402. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/azure-workers/provision-worker.sh +0 -0
  403. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  404. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  405. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/azure-workers/throwaway-vm.sh +0 -0
  406. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/azure-workers/verify-github-token.sh +0 -0
  407. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/check_gh_argv_containment.py +0 -0
  408. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/codegen.py +0 -0
  409. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/coord-test-runner.sh +0 -0
  410. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  411. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  412. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  413. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  414. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/coord-venv-rollback.sh +0 -0
  415. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/drive-batch.sh +0 -0
  416. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/extract-coord-tui.sh +0 -0
  417. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/fleet_watchdog.py +0 -0
  418. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/gen_board_fixture.py +0 -0
  419. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/gen_mock_index.py +0 -0
  420. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/lib/provision-core.sh +0 -0
  421. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/next_release_tag.py +0 -0
  422. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/provision-machine.sh +0 -0
  423. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/run_tests_in_populated_home.sh +0 -0
  424. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/run_tests_without_gh.sh +0 -0
  425. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/setup-macmini.sh +0 -0
  426. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/smoke_437_interactive.py +0 -0
  427. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/verify-provision-noble.sh +0 -0
  428. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/verify_878_review_capture.py +0 -0
  429. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/verify_release_published.py +0 -0
  430. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/scripts/verify_release_wheel.py +0 -0
  431. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/setup.cfg +0 -0
  432. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/SMOKE_SET.md +0 -0
  433. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/__init__.py +0 -0
  434. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/acceptance/ms-37/conftest.py +0 -0
  435. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/acceptance/ms-37/contract.md +0 -0
  436. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/acceptance/ms-37/manifest.yml +0 -0
  437. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  438. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  439. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/acceptance/ms-51/contract.md +0 -0
  440. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  441. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  442. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/acceptance/ms-51/manifest.yml +0 -0
  443. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  444. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/acceptance/ms-51/tsconfig.json +0 -0
  445. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  446. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/backends.py +0 -0
  447. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/board-pipeline-basic.json +0 -0
  448. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  449. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  450. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  451. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  452. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/playwright/all_pass.json +0 -0
  453. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  454. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/playwright/mixed_fail.json +0 -0
  455. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  456. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  457. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/playwright/skip.json +0 -0
  458. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/playwright/truncated.json +0 -0
  459. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  460. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  461. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  462. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  463. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
  464. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  465. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  466. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  467. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  468. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_acceptance.py +0 -0
  469. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_acceptance_drivers.py +0 -0
  470. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent.py +0 -0
  471. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_api_error.py +0 -0
  472. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_app.py +0 -0
  473. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_branch_base.py +0 -0
  474. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_branch_capture.py +0 -0
  475. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_config_free_1712.py +0 -0
  476. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_deploy_units_endpoint.py +0 -0
  477. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_dirty_worktree.py +0 -0
  478. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  479. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_graph_self_heal.py +0 -0
  480. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_health_h3.py +0 -0
  481. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_idle_restart.py +0 -0
  482. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_push_failure.py +0 -0
  483. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_reap.py +0 -0
  484. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_repos_and_pull.py +0 -0
  485. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_restart_services_endpoint.py +0 -0
  486. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_skills_self_heal.py +0 -0
  487. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_startup_diagnostics.py +0 -0
  488. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_update.py +0 -0
  489. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_update_bluegreen.py +0 -0
  490. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_usage_limit.py +0 -0
  491. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_agent_zero_commit.py +0 -0
  492. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_ambient_home_isolation.py +0 -0
  493. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_approve_capability_reroute_3241.py +0 -0
  494. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_approve_dependency_busy_2804.py +0 -0
  495. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_approve_reject_plan.py +0 -0
  496. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_approve_usage_gate.py +0 -0
  497. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_approved_work_2532.py +0 -0
  498. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_approved_work_2996.py +0 -0
  499. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_assignment_already_recorded_daemon.py +0 -0
  500. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_audit_log.py +0 -0
  501. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_audit_outcome.py +0 -0
  502. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_audit_query.py +0 -0
  503. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_auto_loop.py +0 -0
  504. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_auto_release_publish_2035.py +0 -0
  505. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_backend_selection.py +0 -0
  506. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_backup.py +0 -0
  507. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_base_checkout_restore.py +0 -0
  508. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_block_log.py +0 -0
  509. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_board_cap_762.py +0 -0
  510. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_board_fixture.py +0 -0
  511. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_board_read_path.py +0 -0
  512. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_board_schema.py +0 -0
  513. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_board_service.py +0 -0
  514. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_board_state.py +0 -0
  515. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_board_wire.py +0 -0
  516. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_brain.py +0 -0
  517. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_branch_model.py +0 -0
  518. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_bug_intake.py +0 -0
  519. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_bugbash.py +0 -0
  520. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_build_worker_image_env_update.py +0 -0
  521. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cargo_cache.py +0 -0
  522. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_check_gh_argv_containment.py +0 -0
  523. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_ci_acceptance_gate_1950.py +0 -0
  524. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_ci_fix.py +0 -0
  525. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_ci_github.py +0 -0
  526. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_ci_gitlab.py +0 -0
  527. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_ci_parity_2091.py +0 -0
  528. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_ci_store.py +0 -0
  529. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_claim.py +0 -0
  530. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_claude_md_budget.py +0 -0
  531. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_claude_setup_token.py +0 -0
  532. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_acceptance.py +0 -0
  533. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_assign.py +0 -0
  534. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  535. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_assign_interactive_remote.py +0 -0
  536. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_assign_provider.py +0 -0
  537. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  538. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_audit.py +0 -0
  539. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_chat_continue.py +0 -0
  540. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_ci.py +0 -0
  541. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_codegen.py +0 -0
  542. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_decide.py +0 -0
  543. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_diagnose_capability_rules.py +0 -0
  544. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_diagnose_config_provenance.py +0 -0
  545. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_diagnose_forge_availability.py +0 -0
  546. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_diagnose_graph.py +0 -0
  547. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_diagnose_self.py +0 -0
  548. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_diagnose_test_coverage.py +0 -0
  549. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_doctor.py +0 -0
  550. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_doctor_config_free_1801.py +0 -0
  551. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  552. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  553. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_drive.py +0 -0
  554. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_escalate.py +0 -0
  555. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_fix_headless_review.py +0 -0
  556. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_gate_a.py +0 -0
  557. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_install_drift.py +0 -0
  558. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_install_skills.py +0 -0
  559. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_issue_comment.py +0 -0
  560. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_issue_create_label.py +0 -0
  561. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_issue_reopen.py +0 -0
  562. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_issue_view_list.py +0 -0
  563. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_issues.py +0 -0
  564. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_merge.py +0 -0
  565. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_milestone_assign.py +0 -0
  566. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_milestone_capture.py +0 -0
  567. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_milestone_chat_add_child.py +0 -0
  568. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_milestone_dispatch.py +0 -0
  569. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_milestone_gate_b.py +0 -0
  570. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_milestone_gate_c.py +0 -0
  571. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_milestone_order.py +0 -0
  572. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  573. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_milestone_ship.py +0 -0
  574. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_network.py +0 -0
  575. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_new_issue_chat.py +0 -0
  576. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_plans.py +0 -0
  577. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_portal.py +0 -0
  578. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_pr.py +0 -0
  579. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_pull_artifact.py +0 -0
  580. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_queue.py +0 -0
  581. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_reattach_sessions.py +0 -0
  582. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_refine_board.py +0 -0
  583. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_release_preflight.py +0 -0
  584. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_release_propagate.py +0 -0
  585. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_release_window.py +0 -0
  586. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_repo_2220.py +0 -0
  587. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  588. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_scorecard.py +0 -0
  589. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_serve_store_backend_3084.py +0 -0
  590. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_set_review_findings.py +0 -0
  591. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_status_advisory_terminal.py +0 -0
  592. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_status_contested_tag.py +0 -0
  593. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_status_invariant_alarms.py +0 -0
  594. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_status_machine_fault.py +0 -0
  595. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_status_merge_queue.py +0 -0
  596. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_status_provider.py +0 -0
  597. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_status_retried_3340.py +0 -0
  598. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_status_review_finalizing.py +0 -0
  599. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_status_supervisor_3366.py +0 -0
  600. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_status_test_failed_tag.py +0 -0
  601. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_status_usage_limit.py +0 -0
  602. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_sync_comments_873.py +0 -0
  603. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_test_plan.py +0 -0
  604. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_track.py +0 -0
  605. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_tui_update.py +0 -0
  606. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cli_wait.py +0 -0
  607. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_client.py +0 -0
  608. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_client_base_install.py +0 -0
  609. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_client_config_cache_atomic_3052.py +0 -0
  610. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_client_resource_migration_1946.py +0 -0
  611. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_commands_common.py +0 -0
  612. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_comments.py +0 -0
  613. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_completion_summary.py +0 -0
  614. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_config.py +0 -0
  615. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_config_acceptance.py +0 -0
  616. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_config_audit.py +0 -0
  617. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_config_drift_check.py +0 -0
  618. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_config_effective.py +0 -0
  619. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_config_pricing.py +0 -0
  620. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  621. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_config_usage_gate.py +0 -0
  622. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_confirm_test.py +0 -0
  623. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_conflict_fix.py +0 -0
  624. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_conflict_fix_semantic.py +0 -0
  625. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  626. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_coord_test.py +0 -0
  627. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  628. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_coord_test_runner_baseline.py +0 -0
  629. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_coord_test_runner_populated_home.py +0 -0
  630. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_coord_test_runner_routing.py +0 -0
  631. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_coord_test_runner_toolchain.py +0 -0
  632. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_coord_uat.py +0 -0
  633. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_coord_web_sse_restart_live.py +0 -0
  634. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_coordinator_machine.py +0 -0
  635. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_cross_platform_imports.py +0 -0
  636. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dao.py +0 -0
  637. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dashboard.py +0 -0
  638. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dashboard_api.py +0 -0
  639. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dashboard_fixture.py +0 -0
  640. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dashboard_reports.py +0 -0
  641. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dashboard_server.py +0 -0
  642. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dashboard_terminal.py +0 -0
  643. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dashboard_terminal_live.py +0 -0
  644. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_db.py +0 -0
  645. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dead_end.py +0 -0
  646. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_decomposition_chat.py +0 -0
  647. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_deploy_coord_db_backup.py +0 -0
  648. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_deploy_coord_web_dist.py +0 -0
  649. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_deploy_coord_web_rollback.py +0 -0
  650. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_deploy_db_backup_unit.py +0 -0
  651. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_deploy_drive_queue_unit.py +0 -0
  652. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_deploy_failure_notify_unit.py +0 -0
  653. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_deploy_manifest.py +0 -0
  654. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_deploy_notify_unit.py +0 -0
  655. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_deploy_units_lane.py +0 -0
  656. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_deploy_web_unit.py +0 -0
  657. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_deprecation_telemetry.py +0 -0
  658. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_deps.py +0 -0
  659. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_diagnose.py +0 -0
  660. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dispatch.py +0 -0
  661. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dispatch_liveness.py +0 -0
  662. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dispatch_target_validation.py +0 -0
  663. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dispatch_workers.py +0 -0
  664. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dist_name.py +0 -0
  665. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_done_housekeeping.py +0 -0
  666. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dr_azure_scripts.py +0 -0
  667. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dr_promote.py +0 -0
  668. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_dr_verify.py +0 -0
  669. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_drive.py +0 -0
  670. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_drive_machine_fault.py +0 -0
  671. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_drive_queue_blocked_rendering.py +0 -0
  672. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_drive_queue_launch_argv.py +0 -0
  673. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_drive_queue_max_parallel_config.py +0 -0
  674. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  675. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_drive_queue_roll_pending.py +0 -0
  676. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  677. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_drive_sessions_snapshot.py +0 -0
  678. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_drive_state.py +0 -0
  679. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_drive_tmux.py +0 -0
  680. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_epic_up_capability_detection.py +0 -0
  681. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  682. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_epic_up_image_provenance.py +0 -0
  683. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_errors.py +0 -0
  684. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_events.py +0 -0
  685. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_failure_class.py +0 -0
  686. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_failure_classifier.py +0 -0
  687. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_filelock.py +0 -0
  688. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  689. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_fix_escalation_classifier.py +0 -0
  690. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_fix_of_force_override.py +0 -0
  691. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_fleet_config_health.py +0 -0
  692. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_fleet_health_probes.py +0 -0
  693. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_fleet_health_snapshot.py +0 -0
  694. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_fleet_watchdog.py +0 -0
  695. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_forge_availability.py +0 -0
  696. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_freshness.py +0 -0
  697. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_gate_a.py +0 -0
  698. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_gate_b.py +0 -0
  699. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_gate_snapshot_staleness.py +0 -0
  700. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_gates.py +0 -0
  701. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  702. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_gen_mock_index.py +0 -0
  703. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_generated_rust_fixture.py +0 -0
  704. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_generated_rust_requests.py +0 -0
  705. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_generated_types_fixture.py +0 -0
  706. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_github_throttle.py +0 -0
  707. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_goal.py +0 -0
  708. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_graph_health.py +0 -0
  709. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_graph_selfheal_absent_2237.py +0 -0
  710. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_gtk_native_driver.py +0 -0
  711. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_handoff.py +0 -0
  712. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_checks.py +0 -0
  713. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_cli.py +0 -0
  714. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_cli_graph.py +0 -0
  715. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_config.py +0 -0
  716. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_context.py +0 -0
  717. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_coord_tui_ci_pin.py +0 -0
  718. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_coord_web_ci_pin.py +0 -0
  719. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_deploy_lane_facts.py +0 -0
  720. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_fix.py +0 -0
  721. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_incident_regression.py +0 -0
  722. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_issues_sync_staleness.py +0 -0
  723. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_pr_churn.py +0 -0
  724. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_pypi.py +0 -0
  725. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_registry.py +0 -0
  726. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_release_cordon_probe.py +0 -0
  727. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_timer_active.py +0 -0
  728. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_toolchain.py +0 -0
  729. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_unit_drift.py +0 -0
  730. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_unit_enablement.py +0 -0
  731. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_health_wedged_drive_queue.py +0 -0
  732. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_hooks.py +0 -0
  733. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_housekeeping.py +0 -0
  734. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_human_attended_437.py +0 -0
  735. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_init.py +0 -0
  736. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_install_agent_capabilities_3515.py +0 -0
  737. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_install_agent_venv_2911.py +0 -0
  738. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_install_agent_wsl_bridge_3515.py +0 -0
  739. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_integration.py +0 -0
  740. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_interactive.py +0 -0
  741. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_interactive_briefing_echo.py +0 -0
  742. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_interactive_pane_log_2541.py +0 -0
  743. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_interactive_prefill_state.py +0 -0
  744. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_interactive_session_relaunch.py +0 -0
  745. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_interactive_test_verdict_backstop.py +0 -0
  746. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_interactive_token_attribution.py +0 -0
  747. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_interactive_worktree.py +0 -0
  748. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_invariant_alarms.py +0 -0
  749. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_issue_store_seam.py +0 -0
  750. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_issues_sync_status.py +0 -0
  751. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_liveness_auditor.py +0 -0
  752. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_liveness_notify.py +0 -0
  753. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_lock_contention_ratchet.py +0 -0
  754. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_mac_native_driver.py +0 -0
  755. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_machine_fault.py +0 -0
  756. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_machine_metrics.py +0 -0
  757. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_machine_onboard.py +0 -0
  758. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_machine_pause.py +0 -0
  759. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_machine_stats.py +0 -0
  760. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_merge_queue.py +0 -0
  761. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_merge_verify.py +0 -0
  762. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_milestone_chat.py +0 -0
  763. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_milestone_dispatch.py +0 -0
  764. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_milestone_gate.py +0 -0
  765. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_milestone_order.py +0 -0
  766. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_milestone_seam.py +0 -0
  767. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_mock_author.py +0 -0
  768. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_model_tiering.py +0 -0
  769. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_models.py +0 -0
  770. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_models_config_labels.py +0 -0
  771. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_needs_attention.py +0 -0
  772. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_network.py +0 -0
  773. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_new_issue_chat.py +0 -0
  774. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_next_release_tag.py +0 -0
  775. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_node_shim.py +0 -0
  776. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_notifier_baseline.py +0 -0
  777. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_notifier_cli.py +0 -0
  778. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_notifier_collect.py +0 -0
  779. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_notifier_config.py +0 -0
  780. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_notifier_drive_seam.py +0 -0
  781. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_notifier_isolation.py +0 -0
  782. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_notifier_predicate.py +0 -0
  783. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_notifier_quiet_hours.py +0 -0
  784. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_notifier_service.py +0 -0
  785. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_notify.py +0 -0
  786. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_notify_drain.py +0 -0
  787. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_openapi.py +0 -0
  788. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_operational_defaults.py +0 -0
  789. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_overlap_fence.py +0 -0
  790. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_overlap_predict.py +0 -0
  791. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_packaged_deploy_units.py +0 -0
  792. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_parentage.py +0 -0
  793. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_paste_landed.py +0 -0
  794. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  795. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_pipeline.py +0 -0
  796. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_plan_followup_approve_plan_command.py +0 -0
  797. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_plan_followup_pr_command.py +0 -0
  798. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_plan_followup_review_command.py +0 -0
  799. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_plan_only.py +0 -0
  800. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_plan_parser.py +0 -0
  801. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_platform_paths.py +0 -0
  802. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_portal_bridge.py +0 -0
  803. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_portal_config.py +0 -0
  804. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_portal_store.py +0 -0
  805. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_portal_sync.py +0 -0
  806. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_pr_body_lint.py +0 -0
  807. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_prereqs.py +0 -0
  808. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_production_db_guard.py +0 -0
  809. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_progress.py +0 -0
  810. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_provider_seam.py +0 -0
  811. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_providers.py +0 -0
  812. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_providers_config_labels.py +0 -0
  813. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_providers_pty.py +0 -0
  814. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_provision_core.py +0 -0
  815. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_provision_machine.py +0 -0
  816. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_py_rust_mirror_inventory.py +0 -0
  817. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_quiet_hours.py +0 -0
  818. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_quiet_hours_store_2146.py +0 -0
  819. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_reap_merged_sessions.py +0 -0
  820. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_reap_stale_interactive_tick.py +0 -0
  821. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_reconcile.py +0 -0
  822. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_reconcile_branch.py +0 -0
  823. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_reconcile_completions.py +0 -0
  824. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  825. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_reconcile_merges.py +0 -0
  826. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_reconcile_no_agent_record.py +0 -0
  827. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_reconcile_tick.py +0 -0
  828. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_reconcile_usage_limit_done.py +0 -0
  829. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_refine_chat.py +0 -0
  830. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_release_cordon_2101.py +0 -0
  831. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  832. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_release_cordon_deadlock_2240.py +0 -0
  833. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  834. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_release_cordon_stuck_2490.py +0 -0
  835. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_release_gate.py +0 -0
  836. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_release_propagate.py +0 -0
  837. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_release_propagate_threshold.py +0 -0
  838. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_release_roll_between_legs_2854.py +0 -0
  839. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_release_roll_window_handoff.py +0 -0
  840. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_release_unified_1242.py +0 -0
  841. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_release_verify.py +0 -0
  842. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_release_window.py +0 -0
  843. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_remote_auto_prune.py +0 -0
  844. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_remote_interactive_reaper.py +0 -0
  845. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_repo_add.py +0 -0
  846. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_repo_dormancy.py +0 -0
  847. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_repo_edit_2220.py +0 -0
  848. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_repo_graph_fleet_2237.py +0 -0
  849. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_repo_max_parallel_3423.py +0 -0
  850. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_repo_onboard_2220.py +0 -0
  851. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_report_result_push.py +0 -0
  852. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_reports.py +0 -0
  853. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_restart_cmd.py +0 -0
  854. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_retry.py +0 -0
  855. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_retry_advisory_1606.py +0 -0
  856. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_retry_escalation_classify_3360.py +0 -0
  857. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_retry_type_1636.py +0 -0
  858. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_revalidate.py +0 -0
  859. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_review.py +0 -0
  860. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_review_end_review_without_verdict.py +0 -0
  861. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_review_parse_failure_diagnostic.py +0 -0
  862. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_review_reaffirm.py +0 -0
  863. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_review_state.py +0 -0
  864. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_review_verdict_backstop.py +0 -0
  865. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_review_verdict_override_audit.py +0 -0
  866. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_review_verdict_relay.py +0 -0
  867. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_review_zero_commits.py +0 -0
  868. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_scoped_review_wiring.py +0 -0
  869. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_scorecard.py +0 -0
  870. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_self_health.py +0 -0
  871. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_serve.py +0 -0
  872. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_serve_app.py +0 -0
  873. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_serve_app_board_trim.py +0 -0
  874. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_serve_rest_routes.py +0 -0
  875. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_session.py +0 -0
  876. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_slice_issue_attribution.py +0 -0
  877. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_smoke.py +0 -0
  878. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  879. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_smoke_live_checkout_restore.py +0 -0
  880. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_smoke_workflow.py +0 -0
  881. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_spend_ceiling.py +0 -0
  882. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_spend_ceiling_coordinator.py +0 -0
  883. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_split.py +0 -0
  884. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_split_work.py +0 -0
  885. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_sql_dialect.py +0 -0
  886. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_sqlite_connect_ratchet.py +0 -0
  887. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_stage_projection.py +0 -0
  888. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_stale_busy_reviewer_697.py +0 -0
  889. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_stalled_pipeline.py +0 -0
  890. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_state.py +0 -0
  891. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_state_review_findings_daemon.py +0 -0
  892. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_status_fleet_footer.py +0 -0
  893. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_stop_1567.py +0 -0
  894. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_store_contract.py +0 -0
  895. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_store_migrate.py +0 -0
  896. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_stuck.py +0 -0
  897. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  898. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_terminal_command.py +0 -0
  899. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_test_author.py +0 -0
  900. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_test_chat.py +0 -0
  901. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_test_orchestrator.py +0 -0
  902. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_test_report.py +0 -0
  903. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_test_verdict_parsing.py +0 -0
  904. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_test_verdict_transcript_floor.py +0 -0
  905. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_text_io_encoding_audit.py +0 -0
  906. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_thin_client_board_audit.py +0 -0
  907. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_thin_client_config_load_1080.py +0 -0
  908. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_thin_client_daemon_routing_906.py +0 -0
  909. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_throwaway_vm.py +0 -0
  910. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_tmux_host.py +0 -0
  911. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_tmux_session.py +0 -0
  912. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_transcript_floor.py +0 -0
  913. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_tui_pty_driver.py +0 -0
  914. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_uat_checks.py +0 -0
  915. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_usage.py +0 -0
  916. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_usage_limits.py +0 -0
  917. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_usage_rollup.py +0 -0
  918. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_venv_live_install_2121.py +0 -0
  919. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_version_single_source.py +0 -0
  920. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_watch.py +0 -0
  921. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_win_native_bridge.py +0 -0
  922. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  923. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_worker_env_venv_isolation.py +0 -0
  924. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_worker_events.py +0 -0
  925. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_worker_image_pin_sync.py +0 -0
  926. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_worker_safety.py +0 -0
  927. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_worker_test_scoping.py +0 -0
  928. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_worktree.py +0 -0
  929. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  930. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/tests/test_write_parity.py +0 -0
  931. {code_coordinator-0.5.565 → code_coordinator-0.5.567}/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.565
3
+ Version: 0.5.567
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.565
3
+ Version: 0.5.567
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.565",
2
+ "tag": "0.5.567",
3
3
  "distance": 0,
4
- "node": "g17a32a973761388195b697736864929850be4d1f",
4
+ "node": "gbc857055aee7229909c6254b3467421543ae556b",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-10-02"
@@ -67,8 +67,10 @@ from coord.drive_queue import (
67
67
  STATE_PARKED,
68
68
  STATE_RUNNING,
69
69
  STATE_WAITING,
70
+ STUCK_QUEUE_STATES,
70
71
  TERMINAL_QUEUE_STATES,
71
72
  BoardView,
73
+ ExistingPrMatch,
72
74
  IssueFacts,
73
75
  ProbeResult,
74
76
  QueueEntry,
@@ -79,11 +81,13 @@ from coord.drive_queue import (
79
81
  add_preflight_notice,
80
82
  apply_gate_status,
81
83
  build_board_view,
84
+ conventional_branch_patterns,
82
85
  detect_unreachable_waits,
83
86
  diagnose_blocked_after,
84
87
  effective_max_fix_rounds,
85
88
  entries_from_rows,
86
89
  entry_key,
90
+ existing_pr_relaunch_remedy,
87
91
  find_cycle,
88
92
  fired_holds,
89
93
  flag_shadows_config_warning,
@@ -464,6 +468,33 @@ def drive_queue_add(
464
468
  "(entries-only). Pass --scope fleet again if the fleet-wide stop was still needed."
465
469
  )
466
470
 
471
+ # #2377: refuse OUTRIGHT — never just advise — when an OPEN PR already
472
+ # exists on this entry's conventional branch name(s), but ONLY for the
473
+ # two shapes that can actually relaunch a drive over it: a true fresh
474
+ # insert (`previous is None` — including the `coord drive-queue remove
475
+ # <k> && coord drive-queue add <k>` remedy, which drops the row entirely
476
+ # before this `add` runs, so by then there is no `previous` left either)
477
+ # and a requeue-style `add` over an already-stuck row (`previous.state`
478
+ # in `STUCK_QUEUE_STATES` — the #2972 "bump --max-fix-rounds and re-add"
479
+ # pattern `_requeue_command` documents). `_enqueue_drive_queue_local`
480
+ # is a pure metadata upsert for every OTHER case — `waiting`/`running`
481
+ # entries that pushed their own (healthy, simply not-yet-green) PR on the
482
+ # expected path through Work -> Test -> Review -> Merge — and routine
483
+ # `--hold-after`/`--machine`/`--after` edits to those must keep working
484
+ # even though a matching PR already exists, since no relaunch of any
485
+ # kind is happening on that path. Merging (or fixing forward) a
486
+ # discovered PR is deliberately left to the operator — see
487
+ # `existing_pr_relaunch_remedy`'s own docstring.
488
+ if previous is None or previous.state in STUCK_QUEUE_STATES:
489
+ existing_match = _existing_pr_match(config_path, repo, issue)
490
+ existing_remedy = existing_pr_relaunch_remedy(repo, issue, existing_match)
491
+ if existing_remedy is not None:
492
+ raise click.ClickException(
493
+ f"refusing to queue {entry_key(repo, issue)} — "
494
+ f"{existing_remedy['what_happens']} Run instead: "
495
+ f"{existing_remedy['command_or_action']}"
496
+ )
497
+
467
498
  # #2247: predicted file overlap ORDERS, never refuses. Anything that goes
468
499
  # wrong in here (unreadable body, unreachable board, a failed compare)
469
500
  # yields an empty prediction and this add behaves exactly as it did before
@@ -900,6 +931,73 @@ def _repo_coordinates(config_path: Path, repo: str) -> tuple[str, str] | None:
900
931
  return str(repo_cfg.github or ""), str(getattr(repo_cfg, "default_branch", "") or "main")
901
932
 
902
933
 
934
+ def _existing_pr_match(
935
+ config_path: Path, repo: str, issue: int,
936
+ ) -> "ExistingPrMatch | None":
937
+ """#2377: resolve *repo*#*issue*'s conventional-branch PR, if any, to a
938
+ go/no-go CI verdict — the one place that owns the `gh pr list` + checks
939
+ read `coord.drive_queue.ExistingPrMatch` stays pure of.
940
+
941
+ Fail-open at every layer (unreadable config, no GitHub slug, `gh`
942
+ error, unreadable checks) — the same posture #2247's overlap prediction
943
+ takes: a false "nothing found" costs an operator a wasted relaunch, but
944
+ a false block on a healthy queue would be strictly worse (it IS the
945
+ queue). `coord.github_ops.find_open_pr_for_branch_patterns` and
946
+ `coord.ci_github.GitHubCi.list_checks_for_pr` already fail open on a
947
+ transient `gh` error on their own; this only adds the same posture
948
+ around the config/slug lookup wrapping them.
949
+
950
+ `all_green` here is a narrower "safe to merge instead of relaunching"
951
+ answer than `coord.merge_queue.plan()`'s own `PLAN_READY` verdict — it
952
+ reads raw `failed_checks`/`in_flight_checks` only and does not account
953
+ for `merge_queue._ci_checks_are_stale` (a green check that silently
954
+ outlived a base move), review state, or any other merge gate. The
955
+ issue's own design accepted either condition ("all green OR `coord merge
956
+ --plan` reads READY"), and `coord merge --only` re-runs its own full gate
957
+ check before actually merging either way, so the worst case from the gap
958
+ is a confusing round trip (recommended here, still BLOCKED there), never
959
+ an incorrect merge. Wiring the fuller verdict in would need this call
960
+ site to assemble `plan()`'s board/GhOps/smoke-verdict inputs for a
961
+ single PR lookup — a bigger, riskier change than this fix-round's scope;
962
+ left as a known gap rather than attempted half-wired.
963
+ """
964
+ coordinates = _repo_coordinates(config_path, repo)
965
+ if coordinates is None:
966
+ return None
967
+ repo_github, _base_branch = coordinates
968
+ if not repo_github:
969
+ return None
970
+ try:
971
+ from coord import github_ops # noqa: PLC0415
972
+
973
+ pr = github_ops.find_open_pr_for_branch_patterns(
974
+ repo_github, conventional_branch_patterns(issue)
975
+ )
976
+ except Exception: # noqa: BLE001 — fail-open, see docstring
977
+ pr = None
978
+ if not pr:
979
+ return None
980
+ number = pr.get("number")
981
+ if not isinstance(number, int):
982
+ return None
983
+ try:
984
+ from coord.ci_github import GitHubCi # noqa: PLC0415
985
+ from coord.ci_store import failed_checks, in_flight_checks # noqa: PLC0415
986
+
987
+ checks = GitHubCi().list_checks_for_pr(repo_github, number)
988
+ except Exception: # noqa: BLE001 — fail-open: an unreadable check list
989
+ # is not evidence of green OR red — treat it the same as "no checks
990
+ # reported", which `all_green` below already reads as not-green.
991
+ checks = []
992
+ all_green = bool(checks) and not failed_checks(checks) and not in_flight_checks(checks)
993
+ return ExistingPrMatch(
994
+ number=number,
995
+ branch=str(pr.get("headRefName") or ""),
996
+ url=str(pr.get("url") or ""),
997
+ all_green=all_green,
998
+ )
999
+
1000
+
903
1001
  def _predict_overlap(
904
1002
  config_path: Path, repo: str, issue: int, existing_entries: list[QueueEntry],
905
1003
  ) -> tuple[Prediction, str, str]:
@@ -6299,7 +6397,13 @@ def _requeue_command(entry: QueueEntry | None, key: str) -> str:
6299
6397
  )
6300
6398
 
6301
6399
 
6302
- def _blocked_escalation_command(entry: QueueEntry | None, key: str, reason: str) -> str:
6400
+ def _blocked_escalation_command(
6401
+ entry: QueueEntry | None,
6402
+ key: str,
6403
+ reason: str,
6404
+ *,
6405
+ config_path: Path | None = None,
6406
+ ) -> str:
6303
6407
  """The command a `blocked`/`oscillating` escalation should propose
6304
6408
  (#3016) — `_requeue_command` ONLY for a genuinely never-dispatched entry;
6305
6409
  a gate-specific remedy (or the safe read-only inspect fallback) whenever
@@ -6315,11 +6419,33 @@ def _blocked_escalation_command(entry: QueueEntry | None, key: str, reason: str)
6315
6419
  one place that maps a merge-gate reason to its safe one-line fix (or, if
6316
6420
  none is known blind, the inspect command); this only decides WHICH of
6317
6421
  the two families applies.
6422
+
6423
+ #2377: even when nothing names a merge-gate block, "nothing left to
6424
+ lose" from a blind requeue is only true when nothing ELSE has since
6425
+ fixed this entry by hand — the claude-coordinator#2283 incident: a
6426
+ manual `coord acceptance author` run outside the drive loop had already
6427
+ produced a green, ready-to-merge PR for this exact entry while it sat
6428
+ `blocked` on the empty-branch-death signature. So before falling back to
6429
+ `_requeue_command`, check GitHub for an OPEN PR on this entry's
6430
+ conventional branch name(s) and propose THAT remedy instead — merge it
6431
+ when every check is green, inspect it otherwise — never the requeue.
6432
+ *config_path* is optional (defaults to no check, i.e. today's unchanged
6433
+ behaviour) purely so every OTHER existing caller/test of this function
6434
+ that has no config to hand keeps working unchanged; the real `tick`
6435
+ call sites below always pass their own.
6318
6436
  """
6319
6437
  if is_merge_gate_block_reason(reason):
6320
6438
  parsed = parse_key(key)
6321
6439
  if parsed is not None:
6322
6440
  return merge_gate_remedy_command(reason, parsed[0], parsed[1])
6441
+ if config_path is not None:
6442
+ parsed = parse_key(key)
6443
+ if parsed is not None:
6444
+ repo, issue = parsed
6445
+ match = _existing_pr_match(config_path, repo, issue)
6446
+ remedy = existing_pr_relaunch_remedy(repo, issue, match)
6447
+ if remedy is not None:
6448
+ return remedy["command_or_action"]
6323
6449
  return _requeue_command(entry, key)
6324
6450
 
6325
6451
 
@@ -7121,7 +7247,9 @@ def drive_queue_tick(
7121
7247
  f"{entry.position if entry else '?'} | after="
7122
7248
  f"{','.join(entry.after) if entry and entry.after else '(none)'}"
7123
7249
  ),
7124
- command=_blocked_escalation_command(entry, item.key, item.reason),
7250
+ command=_blocked_escalation_command(
7251
+ entry, item.key, item.reason, config_path=config_path,
7252
+ ),
7125
7253
  )
7126
7254
 
7127
7255
  # #2230: an entry #2230's sweep would have resumed, but has already
@@ -7148,7 +7276,9 @@ def drive_queue_tick(
7148
7276
  f"/{MAX_BLOCKED_RESUMES} | position="
7149
7277
  f"{entry.position if entry else '?'}"
7150
7278
  ),
7151
- command=_blocked_escalation_command(entry, item.key, item.reason),
7279
+ command=_blocked_escalation_command(
7280
+ entry, item.key, item.reason, config_path=config_path,
7281
+ ),
7152
7282
  )
7153
7283
 
7154
7284
  # #2806: a `blocked` entry #2230's sweep targeted this tick, but whose
@@ -7310,7 +7440,14 @@ def drive_queue_tick(
7310
7440
  target.issue,
7311
7441
  reason=reason,
7312
7442
  gates=f"queue_state=blocked | attempts={attempts}",
7313
- command=_requeue_command(target, target.key),
7443
+ # #2377: route through the same existing-PR check as the
7444
+ # `plan.blocked`/`oscillating` escalations above — a launch
7445
+ # subprocess failing to even start says nothing about
7446
+ # whether a PR from an earlier attempt (or a manual
7447
+ # recovery) already landed the fix.
7448
+ command=_blocked_escalation_command(
7449
+ target, target.key, reason, config_path=config_path,
7450
+ ),
7314
7451
  )
7315
7452
  # #2235 Phase 0: a launch that never reached tmux is #2235's own
7316
7453
  # `stick-demo#1` row. It blocks OUTSIDE the plan (the subprocess
@@ -4274,6 +4274,96 @@ def is_dispatch_failure_reason(reason: str | None) -> bool:
4274
4274
  return _is_dispatch_failure_reason(reason)
4275
4275
 
4276
4276
 
4277
+ # ── don't relaunch over an already-fixed PR (#2377) ─────────────────────────
4278
+ #
4279
+ # The live incident: claude-coordinator#2283's drive-queue entry was `blocked`
4280
+ # on exactly the #2363 empty-branch-death signature, and the decisions
4281
+ # report's recommended remedy was a blind `coord drive-queue remove 2283 &&
4282
+ # coord drive-queue add 2283` — blind to the fact that PR #2353 already
4283
+ # carried the correctly re-authored work, merged into no branch yet but every
4284
+ # CI check green. Relaunching would have, at best, wasted work re-authoring
4285
+ # what already existed, at worst clobbered it mid-flight. See the two
4286
+ # chokepoints both `coord drive-queue add` and the tick's escalation writer
4287
+ # (`coord.commands.drive_queue._blocked_escalation_command`) funnel through.
4288
+
4289
+
4290
+ def conventional_branch_patterns(issue: int) -> list[str]:
4291
+ """The ``fnmatch`` glob(s) for *issue*'s conventional branch name(s)
4292
+ (#2377) — the two shapes this repo's own dispatch convention and
4293
+ `docs/ORACLE_LOOP.md` name, and deliberately ONLY these two (#2377 scopes
4294
+ a third naming scheme to "add one when one is actually observed to need
4295
+ it", not guessed ahead of time):
4296
+
4297
+ * ``issue-<n>-*`` — a plain ``type=work`` dispatch's branch. Globbed
4298
+ because the suffix is a free-text, worker/dispatch-chosen slug (e.g.
4299
+ this very issue's own branch, ``issue-2377-drive-queue-reliability-
4300
+ a-blocked-entry``) that a caller checking a drive-queue row has no way
4301
+ to predict ahead of time.
4302
+ * ``test-author-ms-*-slice-<n>`` — an oracle-loop JIT acceptance-author
4303
+ slice (`coord/test_author.py`'s ``target_branch``). Globbed on the
4304
+ milestone number for the same reason: a blocked/failed QUEUE entry
4305
+ does not reliably carry which epic/milestone its issue belongs to
4306
+ without a live GitHub read of its own.
4307
+ """
4308
+ return [f"issue-{issue}-*", f"test-author-ms-*-slice-{issue}"]
4309
+
4310
+
4311
+ @dataclass(frozen=True)
4312
+ class ExistingPrMatch:
4313
+ """An OPEN PR found on one of *issue*'s conventional branch names
4314
+ (#2377), already resolved to a go/no-go CI verdict by the caller that
4315
+ built it — :func:`coord.commands.drive_queue._existing_pr_match`, the
4316
+ one place that owns the `gh pr list` + checks read this module stays
4317
+ pure of.
4318
+ """
4319
+
4320
+ number: int
4321
+ branch: str
4322
+ url: str
4323
+ all_green: bool
4324
+
4325
+
4326
+ def existing_pr_relaunch_remedy(
4327
+ repo: str, issue: int, match: "ExistingPrMatch | None"
4328
+ ) -> dict[str, str] | None:
4329
+ """#2377: the option (and `drive-queue add` refusal message) *match*
4330
+ recommends INSTEAD OF a blind ``remove && add`` relaunch — or ``None``
4331
+ when *match* is ``None`` (today's only behaviour unchanged: no PR on the
4332
+ conventional branch name(s), start fresh).
4333
+
4334
+ Two shapes, both refusing the relaunch — a red/stale-checks PR is NOT a
4335
+ green light to requeue either: something else may already be mid-fixing
4336
+ that branch, and a fresh drive launched on top of it is exactly the "at
4337
+ best wasted work, at worst clobbering it mid-flight" risk #2377 opens
4338
+ with. Merging a discovered PR is deliberately NOT done here — surfacing
4339
+ it (or refusing the relaunch) is enough; merging stays a `coord merge`
4340
+ decision.
4341
+ """
4342
+ if match is None:
4343
+ return None
4344
+ key = entry_key(repo, issue)
4345
+ if match.all_green:
4346
+ return {
4347
+ "label": "Merge existing PR",
4348
+ "command_or_action": f"coord merge --only {key}",
4349
+ "what_happens": (
4350
+ f"PR #{match.number} ({match.branch}) already carries this "
4351
+ "work with every check green — merge it instead of "
4352
+ "relaunching a fresh drive over it."
4353
+ ),
4354
+ }
4355
+ return {
4356
+ "label": "Inspect existing PR",
4357
+ "command_or_action": merge_plan_inspect_command(repo),
4358
+ "what_happens": (
4359
+ f"PR #{match.number} ({match.branch}) already exists for this "
4360
+ "entry, but its checks are not all green — fix it forward (or "
4361
+ "confirm by hand it is truly dead) before relaunching a fresh "
4362
+ "drive over it."
4363
+ ),
4364
+ }
4365
+
4366
+
4277
4367
  # ── `add`-time preflight (#2339) ─────────────────────────────────────────────
4278
4368
 
4279
4369
  #: Board statuses a queue attempt can never move on its own — every launch
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import base64
6
+ import fnmatch
6
7
  import json
7
8
  import re
8
9
  import socket
@@ -2345,6 +2346,58 @@ def find_pr_for_branch(repo: str, branch: str) -> dict | None:
2345
2346
  return items[0] if items else None
2346
2347
 
2347
2348
 
2349
+ def find_open_pr_for_branch_patterns(repo: str, patterns: Sequence[str]) -> dict | None:
2350
+ """Return the first OPEN, non-draft PR on *repo* whose head branch
2351
+ matches one of *patterns* (``fnmatch`` globs), or ``None`` when none
2352
+ match or ``gh`` fails (#2377).
2353
+
2354
+ Unlike :func:`find_pr_for_branch` (an exact ``gh pr list --head
2355
+ <branch>`` match), the caller here does not know the exact branch name
2356
+ ahead of time — only its conventional SHAPE (see
2357
+ `coord.drive_queue.conventional_branch_patterns`), since a worker's real
2358
+ branch carries a free-text descriptive suffix a caller cannot predict.
2359
+ This lists every OPEN PR once and matches client-side instead.
2360
+
2361
+ Draft PRs are skipped: a draft matching the conventional branch pattern
2362
+ with green checks is not a valid "don't relaunch, merge this instead"
2363
+ answer, since `coord merge --only <n>` cannot merge a draft — surfacing
2364
+ one here would just trade a safe relaunch refusal for a dead-end one.
2365
+
2366
+ Capped at 200 open PRs with no further paging — a repo with more than
2367
+ 200 concurrently open PRs would silently read a true match past the
2368
+ limit as "not found" (the same fail-open posture as everything else
2369
+ here: a missed match costs a wasted relaunch, not a wrong block).
2370
+
2371
+ Fail-open like every other read in this module: a transient ``gh``
2372
+ error returns ``None`` — "no match found" — the same answer a caller
2373
+ gets when no PR actually exists. Both degrade to the caller's existing
2374
+ "nothing found, proceed" default, which is the deliberately safe
2375
+ posture here: a false negative (missed an existing PR) costs an
2376
+ operator a wasted relaunch; a false block on a healthy queue would be
2377
+ strictly worse.
2378
+ """
2379
+ try:
2380
+ raw = _gh(
2381
+ "pr", "list", "--repo", repo, "--state", "open",
2382
+ "--json", "number,headRefName,url,isDraft", "--limit", "200",
2383
+ caller="github_ops.find_open_pr_for_branch_patterns",
2384
+ )
2385
+ except RuntimeError:
2386
+ return None
2387
+ prs = _json_loads_or(raw, default=[])
2388
+ if not isinstance(prs, list):
2389
+ return None
2390
+ for pr in prs:
2391
+ if not isinstance(pr, dict):
2392
+ continue
2393
+ if pr.get("isDraft"):
2394
+ continue
2395
+ branch = str(pr.get("headRefName") or "")
2396
+ if branch and any(fnmatch.fnmatch(branch, pattern) for pattern in patterns):
2397
+ return pr
2398
+ return None
2399
+
2400
+
2348
2401
  def get_pr_state_for_branch(repo: str, branch: str) -> str | None:
2349
2402
  """Return the current lifecycle state (``OPEN``/``MERGED``/``CLOSED``) of
2350
2403
  the PR whose head is *branch*, or ``None`` when no such PR exists (or
@@ -814,7 +814,18 @@ class Win32Calls:
814
814
  desktop exists to open at all), ``WTSGetActiveConsoleSessionId``
815
815
  reports a real console session, and no ``LogonUI.exe`` is running
816
816
  in that session (the lock-screen host process). Any one of these
817
- failing means the host's desktop is locked or absent."""
817
+ failing means the host's desktop is locked or absent.
818
+
819
+ Defensive by design: this gates every ``win-native`` run (#3510), so
820
+ a probe that raises (e.g. a lookup error on a function that doesn't
821
+ live where expected — #3521) must report "unavailable, here's why"
822
+ rather than take the whole lane down with an uncaught exception."""
823
+ try:
824
+ return self._session_available_unchecked()
825
+ except Exception as exc: # noqa: BLE001 - must never crash the lane
826
+ return False, f"session_available probe failed: {exc}"
827
+
828
+ def _session_available_unchecked(self) -> tuple[bool, str]:
818
829
  ctypes = self._ctypes
819
830
  DESKTOP_READOBJECTS = 0x0001
820
831
  hdesk = self._user32.OpenInputDesktop(0, False, DESKTOP_READOBJECTS)
@@ -825,9 +836,12 @@ class Win32Calls:
825
836
  )
826
837
  self._user32.CloseDesktop(hdesk)
827
838
 
828
- wtsapi32 = ctypes.windll.wtsapi32
839
+ # WTSGetActiveConsoleSessionId is exported by kernel32, not
840
+ # wtsapi32 (#3521) — it's the one WTS* function that lives there;
841
+ # the rest of the WTS family (WTSQuerySessionInformation etc.) is
842
+ # genuinely in wtsapi32, which is the likely source of the mix-up.
829
843
  INVALID_SESSION_ID = 0xFFFFFFFF
830
- session_id = wtsapi32.WTSGetActiveConsoleSessionId()
844
+ session_id = self._kernel32.WTSGetActiveConsoleSessionId()
831
845
  if session_id == INVALID_SESSION_ID:
832
846
  return False, (
833
847
  "WTSGetActiveConsoleSessionId reports no active console "
@@ -515,6 +515,36 @@ def _no_live_tmux_driver_probe(monkeypatch):
515
515
  monkeypatch.setattr("coord.drive.tmux_session_alive", lambda *a, **k: False)
516
516
 
517
517
 
518
+ @pytest.fixture(autouse=True)
519
+ def _no_existing_pr_match(monkeypatch):
520
+ """#2377: default ``coord.commands.drive_queue._existing_pr_match`` to
521
+ "no PR found" instead of shelling out to a real ``gh pr list``.
522
+
523
+ ``coord drive-queue add`` (and the tick's blocked/oscillating escalation
524
+ writer) now checks GitHub for an OPEN PR on the entry's conventional
525
+ branch name before proposing a relaunch. Left unmocked, a test whose
526
+ fixture ALSO replaces ``coord.commands.drive_queue.subprocess.run`` (the
527
+ ``launches`` fixture in ``tests/test_cli_drive_queue.py`` and its
528
+ siblings — one process-wide symbol, so it sees every subprocess call the
529
+ module makes, not just a drive launch) would route this new `gh pr list`
530
+ call through the real ``coord.github_ops._gh`` (per ``_no_live_gh``
531
+ above: once a test mocks the subprocess boundary, the real `_gh` body
532
+ runs against THAT mock) and the resulting ``["gh", "pr", "list", ...]``
533
+ argv would land in the SAME captured-launches list those tests assert is
534
+ `coord drive --tmux` argv only — the exact #2839 hazard
535
+ ``_default_pipeline_labels`` (see ``tests/test_cli_drive_queue.py``)
536
+ already guards for `apply_issue_labels`'s own `gh issue` calls.
537
+
538
+ A test that wants to exercise the real check monkeypatches this back
539
+ explicitly — its own ``monkeypatch.setattr`` call runs after this
540
+ fixture's, so it wins — exactly as the #2377 tests in
541
+ ``tests/test_cli_drive_queue.py`` do.
542
+ """
543
+ monkeypatch.setattr(
544
+ "coord.commands.drive_queue._existing_pr_match", lambda *a, **k: None
545
+ )
546
+
547
+
518
548
  @pytest.fixture(autouse=True)
519
549
  def _interactive_stdin_is_tty(monkeypatch):
520
550
  """#2086: ``coord assign --interactive`` now refuses up front when