code-coordinator 0.5.660__tar.gz → 0.5.662__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 (981) hide show
  1. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/merge.py +61 -42
  5. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/confirm_test.py +38 -19
  6. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/merge_queue.py +75 -11
  7. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/notify.py +29 -5
  8. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/progress.py +24 -3
  9. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_fix_headless_review.py +40 -0
  10. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_merge.py +43 -0
  11. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_epic_up_down_symlinked_config_1887.py +30 -1
  12. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_merge_queue.py +161 -1
  13. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_notify.py +54 -0
  14. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_progress.py +54 -0
  15. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/.claude/commands/board.md +0 -0
  16. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/.claude/commands/complete-session.md +0 -0
  17. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/.claude/commands/coordinator.md +0 -0
  18. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/.githooks/_lib.sh +0 -0
  19. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/.githooks/post-checkout +0 -0
  20. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/.githooks/post-commit +0 -0
  21. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/.githooks/post-merge +0 -0
  22. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  23. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/.github/coord-ci-acceptance.yml +0 -0
  24. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/.github/workflows/auto-release.yml +0 -0
  25. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/.github/workflows/publish.yml +0 -0
  26. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/.github/workflows/test.yml +0 -0
  27. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/.gitignore +0 -0
  28. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/CLAUDE.md +0 -0
  29. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/GOAL.md +0 -0
  30. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/LICENSE +0 -0
  31. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/MANIFEST.in +0 -0
  32. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/README.md +0 -0
  33. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/code_coordinator.egg-info/SOURCES.txt +0 -0
  34. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/code_coordinator.egg-info/dependency_links.txt +0 -0
  35. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/code_coordinator.egg-info/entry_points.txt +0 -0
  36. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/code_coordinator.egg-info/requires.txt +0 -0
  37. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/code_coordinator.egg-info/scm_file_list.json +0 -0
  38. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/code_coordinator.egg-info/top_level.txt +0 -0
  39. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/__init__.py +0 -0
  40. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/_board_mapping.py +0 -0
  41. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/acceptance.py +0 -0
  42. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/acceptance_drivers.py +0 -0
  43. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/agent.py +0 -0
  44. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/agent_app.py +0 -0
  45. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/agent_update.py +0 -0
  46. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/agents/opencode/.gitignore +0 -0
  47. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/agents/opencode/agents/work.md +0 -0
  48. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/agents/opencode/routing.jsonc +0 -0
  49. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/app_drive.py +0 -0
  50. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/app_drive_daemon.py +0 -0
  51. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/approved_work.py +0 -0
  52. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/audit.py +0 -0
  53. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/auto_loop.py +0 -0
  54. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/backup.py +0 -0
  55. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/block_log.py +0 -0
  56. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/board_schema.py +0 -0
  57. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/board_service.py +0 -0
  58. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/board_wire.py +0 -0
  59. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/brain.py +0 -0
  60. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/branch_model.py +0 -0
  61. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/briefing_lessons.py +0 -0
  62. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/bug_intake.py +0 -0
  63. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/bugbash.py +0 -0
  64. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/cargo_cache.py +0 -0
  65. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/ci_fix.py +0 -0
  66. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/ci_github.py +0 -0
  67. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/ci_gitlab.py +0 -0
  68. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/ci_store.py +0 -0
  69. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/claim.py +0 -0
  70. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/claude_setup_token.py +0 -0
  71. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/cli.py +0 -0
  72. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/client.py +0 -0
  73. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/codegen.py +0 -0
  74. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/__init__.py +0 -0
  75. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/_common.py +0 -0
  76. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/acceptance.py +0 -0
  77. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/agent_ops.py +0 -0
  78. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/app_drive.py +0 -0
  79. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/audit.py +0 -0
  80. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/backup.py +0 -0
  81. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/bugbash.py +0 -0
  82. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/chat.py +0 -0
  83. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/ci.py +0 -0
  84. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/codegen.py +0 -0
  85. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/dispatch.py +0 -0
  86. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/dispatch_workers.py +0 -0
  87. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/dr.py +0 -0
  88. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/drive.py +0 -0
  89. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/drive_queue.py +0 -0
  90. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/gate_a.py +0 -0
  91. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/gates.py +0 -0
  92. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/issues.py +0 -0
  93. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/lifecycle.py +0 -0
  94. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/machine.py +0 -0
  95. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/milestone.py +0 -0
  96. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/plan_followup.py +0 -0
  97. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/plans.py +0 -0
  98. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/portal.py +0 -0
  99. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/pr.py +0 -0
  100. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/release.py +0 -0
  101. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/repo.py +0 -0
  102. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/report.py +0 -0
  103. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/review.py +0 -0
  104. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/scorecard.py +0 -0
  105. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/sessions.py +0 -0
  106. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/setup.py +0 -0
  107. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/smoke.py +0 -0
  108. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/status.py +0 -0
  109. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/store_migrate.py +0 -0
  110. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/terminal.py +0 -0
  111. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/test_gate.py +0 -0
  112. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/commands/tui.py +0 -0
  113. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/comments.py +0 -0
  114. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/config.py +0 -0
  115. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/config_reload.py +0 -0
  116. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/conflict_fix.py +0 -0
  117. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/dao.py +0 -0
  118. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/dashboard/__init__.py +0 -0
  119. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/dashboard/fixture.py +0 -0
  120. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/dashboard/index.html +0 -0
  121. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/dashboard/reports.html +0 -0
  122. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/dashboard/server.py +0 -0
  123. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/dashboard/terminal.py +0 -0
  124. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/db.py +0 -0
  125. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/dead_end.py +0 -0
  126. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/decomposition_chat.py +0 -0
  127. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/README.md +0 -0
  128. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-agent.service +0 -0
  129. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-backup.service +0 -0
  130. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-backup.timer +0 -0
  131. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-db-backup.service +0 -0
  132. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-db-backup.sh +0 -0
  133. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-db-backup.timer +0 -0
  134. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-dr-verify.service +0 -0
  135. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-dr-verify.timer +0 -0
  136. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-drive-queue.service +0 -0
  137. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-drive-queue.timer +0 -0
  138. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-failure-notify.service +0 -0
  139. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-fleet-watchdog.service +0 -0
  140. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  141. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-nightly-smoke.service +0 -0
  142. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-nightly-smoke.timer +0 -0
  143. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-notify.service +0 -0
  144. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-notify.timer +0 -0
  145. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-release-propagate.service +0 -0
  146. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-release-propagate.timer +0 -0
  147. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-release-window.service +0 -0
  148. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-release-window.timer +0 -0
  149. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-serve.service +0 -0
  150. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-web-dist-build.service +0 -0
  151. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-web-dist-build.timer +0 -0
  152. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy/coord-web.service +0 -0
  153. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy_manifest.py +0 -0
  154. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deploy_units.py +0 -0
  155. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deprecation_telemetry.py +0 -0
  156. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/deps.py +0 -0
  157. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/diagnose.py +0 -0
  158. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/dirlink.py +0 -0
  159. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/dispatch.py +0 -0
  160. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/dispatch_liveness.py +0 -0
  161. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/dist_name.py +0 -0
  162. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/dr_promote.py +0 -0
  163. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/dr_verify.py +0 -0
  164. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/drive.py +0 -0
  165. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/drive_queue.py +0 -0
  166. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/drive_sessions_snapshot.py +0 -0
  167. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/drive_state.py +0 -0
  168. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/events.py +0 -0
  169. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/failure_class.py +0 -0
  170. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/failure_classifier.py +0 -0
  171. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/filelock.py +0 -0
  172. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/fleet_config_health.py +0 -0
  173. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/forge_availability.py +0 -0
  174. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/freshness.py +0 -0
  175. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/gate_a.py +0 -0
  176. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/gate_b.py +0 -0
  177. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/gate_snapshot.py +0 -0
  178. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/gates.py +0 -0
  179. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/gen_board_fixture.py +0 -0
  180. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/github_ops.py +0 -0
  181. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/github_throttle.py +0 -0
  182. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/goal.py +0 -0
  183. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/graph_health.py +0 -0
  184. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/gtk_native_driver.py +0 -0
  185. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/__init__.py +0 -0
  186. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/aggregate.py +0 -0
  187. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/__init__.py +0 -0
  188. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/_ci_pin.py +0 -0
  189. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/agent_install.py +0 -0
  190. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/cargo_targets.py +0 -0
  191. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/claude_binary.py +0 -0
  192. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/config_drift.py +0 -0
  193. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  194. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/coord_web_ci_pin.py +0 -0
  195. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/deploy_lane_facts.py +0 -0
  196. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/disk.py +0 -0
  197. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/fleet_board.py +0 -0
  198. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  199. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/fleet_phantom.py +0 -0
  200. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/fleet_unit_drift.py +0 -0
  201. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/graph.py +0 -0
  202. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/graphify_cli.py +0 -0
  203. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/gui_lane_preflight.py +0 -0
  204. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/index_lock.py +0 -0
  205. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/issues_sync_staleness.py +0 -0
  206. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/local_machine_identity.py +0 -0
  207. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/plan_usage.py +0 -0
  208. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/pr_churn.py +0 -0
  209. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/release_cordon.py +0 -0
  210. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/repo_state.py +0 -0
  211. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/spawned_coord.py +0 -0
  212. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/stalled_pipeline.py +0 -0
  213. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/timer_active.py +0 -0
  214. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/toolchain.py +0 -0
  215. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/unit_drift.py +0 -0
  216. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/unit_enablement.py +0 -0
  217. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/wedged_drive_queue.py +0 -0
  218. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/checks/worktrees.py +0 -0
  219. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/cli.py +0 -0
  220. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/context.py +0 -0
  221. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/fleet_snapshot.py +0 -0
  222. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/models.py +0 -0
  223. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/pypi.py +0 -0
  224. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/registry.py +0 -0
  225. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/render.py +0 -0
  226. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/health/units.py +0 -0
  227. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/hooks.py +0 -0
  228. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/housekeeping.py +0 -0
  229. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/interactive.py +0 -0
  230. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/invariant_alarms.py +0 -0
  231. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/issue_store.py +0 -0
  232. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/issues_sync_status.py +0 -0
  233. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/key_spec.py +0 -0
  234. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/liveness_auditor.py +0 -0
  235. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/mac_native_driver.py +0 -0
  236. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/machine_fault.py +0 -0
  237. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/machine_metrics.py +0 -0
  238. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/machine_onboard.py +0 -0
  239. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/machine_pause.py +0 -0
  240. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/machine_stats.py +0 -0
  241. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/milestone_chat.py +0 -0
  242. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/milestone_dispatch.py +0 -0
  243. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/milestone_gate.py +0 -0
  244. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/milestone_order.py +0 -0
  245. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/mock_author.py +0 -0
  246. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/models.py +0 -0
  247. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/native_fs_wait.py +0 -0
  248. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/native_pixels.py +0 -0
  249. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/network.py +0 -0
  250. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/new_issue_chat.py +0 -0
  251. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/nightly_runner.py +0 -0
  252. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/nightly_smoke.py +0 -0
  253. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/nightly_status.py +0 -0
  254. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/nightly_store.py +0 -0
  255. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/notifier/__init__.py +0 -0
  256. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/notifier/baseline.py +0 -0
  257. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/notifier/cli.py +0 -0
  258. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/notifier/collect.py +0 -0
  259. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/notifier/digest.py +0 -0
  260. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/notifier/models.py +0 -0
  261. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/notifier/predicate.py +0 -0
  262. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/notifier/service.py +0 -0
  263. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/notifier/store.py +0 -0
  264. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/notifier/transport.py +0 -0
  265. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/openapi.py +0 -0
  266. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/overlap_fence.py +0 -0
  267. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/overlap_predict.py +0 -0
  268. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/parentage.py +0 -0
  269. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/parentage_github.py +0 -0
  270. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/pipeline.py +0 -0
  271. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/plan_parser.py +0 -0
  272. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/plans.py +0 -0
  273. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/platform_paths.py +0 -0
  274. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/portal_bridge.py +0 -0
  275. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/portal_store.py +0 -0
  276. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/portal_sync.py +0 -0
  277. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/pr_body_lint.py +0 -0
  278. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/prereqs.py +0 -0
  279. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/prereview_gate.py +0 -0
  280. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/providers/__init__.py +0 -0
  281. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/providers/base.py +0 -0
  282. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/providers/claude.py +0 -0
  283. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/providers/claude_pty.py +0 -0
  284. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/providers/opencode.py +0 -0
  285. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/queue_diagnose.py +0 -0
  286. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/reconcile.py +0 -0
  287. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/reconcile_tick.py +0 -0
  288. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/refine_chat.py +0 -0
  289. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/release_cordon.py +0 -0
  290. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/release_gate.py +0 -0
  291. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/release_propagate.py +0 -0
  292. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/release_verify.py +0 -0
  293. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/release_window.py +0 -0
  294. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/repo_dormancy.py +0 -0
  295. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/repo_edit.py +0 -0
  296. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/repo_onboard.py +0 -0
  297. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/reports.py +0 -0
  298. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/rest_schema.py +0 -0
  299. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/restart_cmd.py +0 -0
  300. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/revalidate.py +0 -0
  301. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/review.py +0 -0
  302. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/scorecard.py +0 -0
  303. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/self_health.py +0 -0
  304. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/serve_app.py +0 -0
  305. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/shell_exec_wrap.py +0 -0
  306. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  307. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  308. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  309. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  310. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  311. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/skills/portal-followup/SKILL.md +0 -0
  312. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/skills/release-now/SKILL.md +0 -0
  313. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  314. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  315. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/skills/update-issue/SKILL.md +0 -0
  316. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/smoke.py +0 -0
  317. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/smoke_tags.py +0 -0
  318. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/spend_ceiling.py +0 -0
  319. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/split_work.py +0 -0
  320. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/sql.py +0 -0
  321. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/stage_projection.py +0 -0
  322. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/state.py +0 -0
  323. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/store_migrate.py +0 -0
  324. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/store_parity.py +0 -0
  325. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/templates/deploy-cloudflare.node.yml +0 -0
  326. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/test_author.py +0 -0
  327. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/test_chat.py +0 -0
  328. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/test_orchestrator.py +0 -0
  329. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/test_report.py +0 -0
  330. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/tui_pty_driver.py +0 -0
  331. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/tui_release.py +0 -0
  332. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/uat_checks.py +0 -0
  333. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/upstream_gaps.py +0 -0
  334. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/usage.py +0 -0
  335. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/usage_limits.py +0 -0
  336. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/usage_rollup.py +0 -0
  337. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/win_native_bridge.py +0 -0
  338. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/win_native_driver.py +0 -0
  339. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coord/worker_events.py +0 -0
  340. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/coordinator.example.yml +0 -0
  341. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-agent.service +0 -0
  342. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-backup.service +0 -0
  343. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-backup.timer +0 -0
  344. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-db-backup.service +0 -0
  345. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-db-backup.sh +0 -0
  346. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-db-backup.timer +0 -0
  347. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-dr-verify.service +0 -0
  348. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-dr-verify.timer +0 -0
  349. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-drive-queue.service +0 -0
  350. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-drive-queue.timer +0 -0
  351. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-failure-notify.service +0 -0
  352. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-failure-notify.sh +0 -0
  353. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-fleet-watchdog.service +0 -0
  354. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-fleet-watchdog.timer +0 -0
  355. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-nightly-smoke.service +0 -0
  356. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-nightly-smoke.timer +0 -0
  357. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-notify.service +0 -0
  358. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-notify.timer +0 -0
  359. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-release-propagate.service +0 -0
  360. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-release-propagate.timer +0 -0
  361. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-release-window.service +0 -0
  362. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-release-window.timer +0 -0
  363. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-serve.service +0 -0
  364. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-web-dist-build.service +0 -0
  365. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-web-dist-build.sh +0 -0
  366. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-web-dist-build.timer +0 -0
  367. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-web-rollback.sh +0 -0
  368. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/coord-web.service +0 -0
  369. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/deploy/node-shim.sh +0 -0
  370. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/ADR_COORD_TUI_CI.md +0 -0
  371. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  372. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/ADR_COORD_WEB_CI.md +0 -0
  373. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/ADR_COORD_WEB_DIST.md +0 -0
  374. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  375. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/AGENT_OPERATIONS.md +0 -0
  376. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/ARCHITECTURE.md +0 -0
  377. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/ARCH_SECURITY_GATES.md +0 -0
  378. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/COCKPIT.md +0 -0
  379. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/CONTROL_CENTER.md +0 -0
  380. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/COST_DISCIPLINE.md +0 -0
  381. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/CROSS_PLATFORM.md +0 -0
  382. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/CUSTOMER_FACING_APPS.md +0 -0
  383. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/CUSTOMER_PORTAL.md +0 -0
  384. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/DATA_STORE_SELECTION.md +0 -0
  385. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/DISASTER_RECOVERY.md +0 -0
  386. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/DRIVE_QUEUE.md +0 -0
  387. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/EPHEMERAL_WORKERS.md +0 -0
  388. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/FORGE_MIGRATION.md +0 -0
  389. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/GRAPHIFY_SETUP.md +0 -0
  390. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/ISSUE_GUIDANCE.md +0 -0
  391. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/MAC_MINI.md +0 -0
  392. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  393. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/NOTIFIER.md +0 -0
  394. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/OPENCODE_VERIFICATION.md +0 -0
  395. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/OPERATING_GOTCHAS.md +0 -0
  396. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/OPERATOR_GUIDES.md +0 -0
  397. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/ORACLE_LOOP.md +0 -0
  398. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/PHONE_WEBAPP.md +0 -0
  399. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/PIPELINE_V2.md +0 -0
  400. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/PLATFORM_EVOLUTION.md +0 -0
  401. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/SECOND_BACKEND.md +0 -0
  402. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/STORE_SERVICE.md +0 -0
  403. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  404. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/WEB_CONTROL_CENTER.md +0 -0
  405. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/WSL_WINDOWS_WORKER.md +0 -0
  406. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/mocks/web/README.md +0 -0
  407. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/mocks/web/_tokens.css +0 -0
  408. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/mocks/web/issue-detail.html +0 -0
  409. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/mocks/web/pipeline-narrow.html +0 -0
  410. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/docs/mocks/web/pipeline-wide.html +0 -0
  411. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/graphify-out/.gitignore +0 -0
  412. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/install-agent.sh +0 -0
  413. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/pyproject.toml +0 -0
  414. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/audit_review_verdict_overrides.py +0 -0
  415. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  416. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/azure-workers/build-worker-image.sh +0 -0
  417. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/azure-workers/coordinator-machine.py +0 -0
  418. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/azure-workers/dr-down.sh +0 -0
  419. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/azure-workers/dr-up.sh +0 -0
  420. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/azure-workers/epic-down.sh +0 -0
  421. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/azure-workers/epic-up.sh +0 -0
  422. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/azure-workers/preflight.sh +0 -0
  423. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/azure-workers/provision-server.sh +0 -0
  424. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/azure-workers/provision-worker.sh +0 -0
  425. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  426. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  427. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/azure-workers/throwaway-vm.sh +0 -0
  428. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/azure-workers/verify-github-token.sh +0 -0
  429. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/check_gh_argv_containment.py +0 -0
  430. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/codegen.py +0 -0
  431. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/comment_cruft.py +0 -0
  432. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/coord-test-runner.sh +0 -0
  433. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  434. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  435. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  436. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  437. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/coord-venv-rollback.sh +0 -0
  438. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/drive-batch.sh +0 -0
  439. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/extract-coord-tui.sh +0 -0
  440. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/fleet_watchdog.py +0 -0
  441. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/gen_board_fixture.py +0 -0
  442. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/gen_mock_index.py +0 -0
  443. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/lib/provision-core.sh +0 -0
  444. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/next_release_tag.py +0 -0
  445. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/provision-machine.sh +0 -0
  446. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/run_tests_in_populated_home.sh +0 -0
  447. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/run_tests_without_gh.sh +0 -0
  448. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/setup-macmini.sh +0 -0
  449. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/smoke_437_interactive.py +0 -0
  450. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/verify-provision-noble.sh +0 -0
  451. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/verify_878_review_capture.py +0 -0
  452. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/verify_release_published.py +0 -0
  453. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/scripts/verify_release_wheel.py +0 -0
  454. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/setup.cfg +0 -0
  455. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/SMOKE_SET.md +0 -0
  456. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/__init__.py +0 -0
  457. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/acceptance/ms-37/conftest.py +0 -0
  458. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/acceptance/ms-37/contract.md +0 -0
  459. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/acceptance/ms-37/manifest.yml +0 -0
  460. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  461. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  462. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/acceptance/ms-51/contract.md +0 -0
  463. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  464. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  465. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/acceptance/ms-51/manifest.yml +0 -0
  466. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  467. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/acceptance/ms-51/tsconfig.json +0 -0
  468. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  469. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/backends.py +0 -0
  470. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/conftest.py +0 -0
  471. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/board-pipeline-basic.json +0 -0
  472. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  473. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  474. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  475. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  476. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/playwright/all_pass.json +0 -0
  477. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  478. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/playwright/mixed_fail.json +0 -0
  479. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  480. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  481. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/playwright/skip.json +0 -0
  482. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/playwright/truncated.json +0 -0
  483. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  484. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  485. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  486. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  487. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
  488. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  489. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  490. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  491. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  492. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_acceptance.py +0 -0
  493. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_acceptance_drivers.py +0 -0
  494. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent.py +0 -0
  495. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_api_error.py +0 -0
  496. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_app.py +0 -0
  497. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_branch_base.py +0 -0
  498. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_branch_capture.py +0 -0
  499. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_config_free_1712.py +0 -0
  500. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_deploy_units_endpoint.py +0 -0
  501. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_dirty_worktree.py +0 -0
  502. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  503. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_graceful_shutdown_3649.py +0 -0
  504. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_graph_refresh.py +0 -0
  505. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_graph_self_heal.py +0 -0
  506. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_health_h3.py +0 -0
  507. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_idle_restart.py +0 -0
  508. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_push_failure.py +0 -0
  509. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_reap.py +0 -0
  510. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_repos_and_pull.py +0 -0
  511. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_restart_services_endpoint.py +0 -0
  512. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_skills_self_heal.py +0 -0
  513. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_startup_diagnostics.py +0 -0
  514. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_update.py +0 -0
  515. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_update_bluegreen.py +0 -0
  516. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_usage_limit.py +0 -0
  517. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_agent_zero_commit.py +0 -0
  518. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_ambient_home_isolation.py +0 -0
  519. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_app_drive.py +0 -0
  520. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_approve_capability_reroute_3241.py +0 -0
  521. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_approve_dependency_busy_2804.py +0 -0
  522. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_approve_reject_plan.py +0 -0
  523. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_approve_usage_gate.py +0 -0
  524. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_approved_work_2532.py +0 -0
  525. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_approved_work_2996.py +0 -0
  526. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_assignment_already_recorded_daemon.py +0 -0
  527. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_audit_log.py +0 -0
  528. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_audit_outcome.py +0 -0
  529. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_audit_query.py +0 -0
  530. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_auto_loop.py +0 -0
  531. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_auto_release_publish_2035.py +0 -0
  532. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_backend_selection.py +0 -0
  533. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_backup.py +0 -0
  534. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_base_checkout_restore.py +0 -0
  535. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_block_log.py +0 -0
  536. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_board_cap_762.py +0 -0
  537. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_board_fixture.py +0 -0
  538. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_board_nightly_status.py +0 -0
  539. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_board_read_path.py +0 -0
  540. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_board_schema.py +0 -0
  541. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_board_service.py +0 -0
  542. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_board_state.py +0 -0
  543. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_board_wire.py +0 -0
  544. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_brain.py +0 -0
  545. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_branch_model.py +0 -0
  546. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_briefing_lessons.py +0 -0
  547. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_bug_intake.py +0 -0
  548. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_bugbash.py +0 -0
  549. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_build_worker_image_env_update.py +0 -0
  550. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cargo_cache.py +0 -0
  551. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_check_gh_argv_containment.py +0 -0
  552. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_ci_acceptance_gate_1950.py +0 -0
  553. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_ci_fix.py +0 -0
  554. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_ci_github.py +0 -0
  555. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_ci_gitlab.py +0 -0
  556. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_ci_parity_2091.py +0 -0
  557. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_ci_store.py +0 -0
  558. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_claim.py +0 -0
  559. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_claude_md_budget.py +0 -0
  560. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_claude_setup_token.py +0 -0
  561. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_acceptance.py +0 -0
  562. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_assign.py +0 -0
  563. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  564. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_assign_interactive_remote.py +0 -0
  565. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_assign_provider.py +0 -0
  566. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  567. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_audit.py +0 -0
  568. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_chat_continue.py +0 -0
  569. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_ci.py +0 -0
  570. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_codegen.py +0 -0
  571. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_decide.py +0 -0
  572. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_diagnose_capability_rules.py +0 -0
  573. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_diagnose_config_provenance.py +0 -0
  574. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_diagnose_forge_availability.py +0 -0
  575. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_diagnose_graph.py +0 -0
  576. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_diagnose_self.py +0 -0
  577. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_diagnose_test_coverage.py +0 -0
  578. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_doctor.py +0 -0
  579. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_doctor_config_free_1801.py +0 -0
  580. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  581. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  582. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_drive.py +0 -0
  583. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_drive_queue.py +0 -0
  584. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_escalate.py +0 -0
  585. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_gate_a.py +0 -0
  586. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_inject_board_less.py +0 -0
  587. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_install_drift.py +0 -0
  588. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_install_skills.py +0 -0
  589. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_issue_close_wrong_repo.py +0 -0
  590. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_issue_comment.py +0 -0
  591. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_issue_create_label.py +0 -0
  592. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_issue_reopen.py +0 -0
  593. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_issue_view_list.py +0 -0
  594. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_issues.py +0 -0
  595. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_milestone_assign.py +0 -0
  596. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_milestone_capture.py +0 -0
  597. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_milestone_chat_add_child.py +0 -0
  598. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_milestone_dispatch.py +0 -0
  599. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_milestone_gate_b.py +0 -0
  600. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_milestone_gate_c.py +0 -0
  601. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_milestone_order.py +0 -0
  602. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  603. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_milestone_ship.py +0 -0
  604. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_network.py +0 -0
  605. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_new_issue_chat.py +0 -0
  606. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_plans.py +0 -0
  607. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_portal.py +0 -0
  608. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_pr.py +0 -0
  609. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_pull_artifact.py +0 -0
  610. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_queue.py +0 -0
  611. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_reattach_sessions.py +0 -0
  612. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_refine_board.py +0 -0
  613. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_release_preflight.py +0 -0
  614. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_release_propagate.py +0 -0
  615. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_release_window.py +0 -0
  616. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_repo_2220.py +0 -0
  617. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  618. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_scorecard.py +0 -0
  619. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_serve_store_backend_3084.py +0 -0
  620. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_set_review_findings.py +0 -0
  621. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_smoke_nightly.py +0 -0
  622. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_smoke_nightly_sweep.py +0 -0
  623. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_status_advisory_terminal.py +0 -0
  624. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_status_contested_tag.py +0 -0
  625. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_status_invariant_alarms.py +0 -0
  626. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_status_machine_fault.py +0 -0
  627. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_status_merge_queue.py +0 -0
  628. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_status_nightly.py +0 -0
  629. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_status_provider.py +0 -0
  630. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_status_retried_3340.py +0 -0
  631. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_status_review_finalizing.py +0 -0
  632. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_status_supervisor_3366.py +0 -0
  633. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_status_test_failed_tag.py +0 -0
  634. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_status_usage_limit.py +0 -0
  635. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_sync_comments_873.py +0 -0
  636. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_test_plan.py +0 -0
  637. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_track.py +0 -0
  638. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_tui_update.py +0 -0
  639. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cli_wait.py +0 -0
  640. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_client.py +0 -0
  641. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_client_base_install.py +0 -0
  642. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_client_config_cache_atomic_3052.py +0 -0
  643. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_client_resource_migration_1946.py +0 -0
  644. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_commands_common.py +0 -0
  645. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_comment_cruft.py +0 -0
  646. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_comments.py +0 -0
  647. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_completion_summary.py +0 -0
  648. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_config.py +0 -0
  649. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_config_acceptance.py +0 -0
  650. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_config_audit.py +0 -0
  651. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_config_drift_check.py +0 -0
  652. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_config_effective.py +0 -0
  653. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_config_prereview_gate.py +0 -0
  654. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_config_pricing.py +0 -0
  655. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  656. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_config_usage_gate.py +0 -0
  657. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_confirm_test.py +0 -0
  658. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_conflict_fix.py +0 -0
  659. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_conflict_fix_semantic.py +0 -0
  660. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  661. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_coord_test.py +0 -0
  662. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  663. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_coord_test_runner_baseline.py +0 -0
  664. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_coord_test_runner_populated_home.py +0 -0
  665. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_coord_test_runner_routing.py +0 -0
  666. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_coord_test_runner_toolchain.py +0 -0
  667. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_coord_uat.py +0 -0
  668. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_coord_web_sse_restart_live.py +0 -0
  669. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_coordinator_machine.py +0 -0
  670. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_cross_platform_imports.py +0 -0
  671. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dao.py +0 -0
  672. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dashboard.py +0 -0
  673. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dashboard_api.py +0 -0
  674. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dashboard_fixture.py +0 -0
  675. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dashboard_reports.py +0 -0
  676. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dashboard_server.py +0 -0
  677. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dashboard_terminal.py +0 -0
  678. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dashboard_terminal_live.py +0 -0
  679. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_db.py +0 -0
  680. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dead_end.py +0 -0
  681. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_decomposition_chat.py +0 -0
  682. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_deploy_coord_db_backup.py +0 -0
  683. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_deploy_coord_web_dist.py +0 -0
  684. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_deploy_coord_web_rollback.py +0 -0
  685. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_deploy_db_backup_unit.py +0 -0
  686. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_deploy_drive_queue_unit.py +0 -0
  687. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_deploy_failure_notify_unit.py +0 -0
  688. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_deploy_manifest.py +0 -0
  689. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_deploy_notify_unit.py +0 -0
  690. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_deploy_units_lane.py +0 -0
  691. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_deploy_web_unit.py +0 -0
  692. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_deprecation_telemetry.py +0 -0
  693. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_deps.py +0 -0
  694. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_diagnose.py +0 -0
  695. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dirlink.py +0 -0
  696. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dispatch.py +0 -0
  697. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dispatch_liveness.py +0 -0
  698. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dispatch_target_validation.py +0 -0
  699. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dispatch_workers.py +0 -0
  700. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dist_name.py +0 -0
  701. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_done_housekeeping.py +0 -0
  702. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dr_azure_scripts.py +0 -0
  703. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dr_promote.py +0 -0
  704. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_dr_verify.py +0 -0
  705. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_drive.py +0 -0
  706. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_drive_machine_fault.py +0 -0
  707. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_drive_queue.py +0 -0
  708. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_drive_queue_blocked_rendering.py +0 -0
  709. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_drive_queue_launch_argv.py +0 -0
  710. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_drive_queue_max_parallel_config.py +0 -0
  711. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  712. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_drive_queue_roll_pending.py +0 -0
  713. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  714. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_drive_sessions_snapshot.py +0 -0
  715. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_drive_state.py +0 -0
  716. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_drive_tmux.py +0 -0
  717. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_epic_up_capability_detection.py +0 -0
  718. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_epic_up_image_provenance.py +0 -0
  719. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_errors.py +0 -0
  720. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_events.py +0 -0
  721. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_failure_class.py +0 -0
  722. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_failure_classifier.py +0 -0
  723. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_filelock.py +0 -0
  724. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  725. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_fix_escalation_classifier.py +0 -0
  726. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_fix_of_force_override.py +0 -0
  727. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_fleet_config_health.py +0 -0
  728. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_fleet_health_probes.py +0 -0
  729. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_fleet_health_snapshot.py +0 -0
  730. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_fleet_watchdog.py +0 -0
  731. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_forge_availability.py +0 -0
  732. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_freshness.py +0 -0
  733. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_gate_a.py +0 -0
  734. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_gate_b.py +0 -0
  735. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_gate_snapshot_staleness.py +0 -0
  736. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_gates.py +0 -0
  737. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  738. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_gen_mock_index.py +0 -0
  739. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_generated_rust_fixture.py +0 -0
  740. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_generated_rust_requests.py +0 -0
  741. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_generated_types_fixture.py +0 -0
  742. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_github_ops.py +0 -0
  743. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_github_throttle.py +0 -0
  744. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_goal.py +0 -0
  745. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_graph_health.py +0 -0
  746. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_graph_selfheal_absent_2237.py +0 -0
  747. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_gtk_native_driver.py +0 -0
  748. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_handoff.py +0 -0
  749. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_checks.py +0 -0
  750. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_cli.py +0 -0
  751. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_cli_graph.py +0 -0
  752. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_config.py +0 -0
  753. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_context.py +0 -0
  754. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_coord_tui_ci_pin.py +0 -0
  755. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_coord_web_ci_pin.py +0 -0
  756. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_deploy_lane_facts.py +0 -0
  757. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_fix.py +0 -0
  758. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_incident_regression.py +0 -0
  759. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_issues_sync_staleness.py +0 -0
  760. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_pr_churn.py +0 -0
  761. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_pypi.py +0 -0
  762. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_registry.py +0 -0
  763. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_release_cordon_probe.py +0 -0
  764. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_timer_active.py +0 -0
  765. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_toolchain.py +0 -0
  766. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_unit_drift.py +0 -0
  767. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_unit_enablement.py +0 -0
  768. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_health_wedged_drive_queue.py +0 -0
  769. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_hooks.py +0 -0
  770. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_housekeeping.py +0 -0
  771. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_human_attended_437.py +0 -0
  772. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_init.py +0 -0
  773. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_install_agent_capabilities_3515.py +0 -0
  774. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_install_agent_venv_2911.py +0 -0
  775. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_install_agent_wsl_bridge_3515.py +0 -0
  776. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_integration.py +0 -0
  777. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_interactive.py +0 -0
  778. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_interactive_briefing_echo.py +0 -0
  779. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_interactive_pane_log_2541.py +0 -0
  780. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_interactive_prefill_state.py +0 -0
  781. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_interactive_session_relaunch.py +0 -0
  782. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_interactive_test_verdict_backstop.py +0 -0
  783. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_interactive_token_attribution.py +0 -0
  784. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_interactive_worktree.py +0 -0
  785. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_invariant_alarms.py +0 -0
  786. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_issue_store_seam.py +0 -0
  787. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_issues_sync_status.py +0 -0
  788. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_key_spec.py +0 -0
  789. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_liveness_auditor.py +0 -0
  790. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_liveness_notify.py +0 -0
  791. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_lock_contention_ratchet.py +0 -0
  792. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_mac_native_driver.py +0 -0
  793. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_machine_fault.py +0 -0
  794. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_machine_metrics.py +0 -0
  795. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_machine_onboard.py +0 -0
  796. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_machine_pause.py +0 -0
  797. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_machine_stats.py +0 -0
  798. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_merge_verification.py +0 -0
  799. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_merge_verify.py +0 -0
  800. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_milestone_chat.py +0 -0
  801. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_milestone_dispatch.py +0 -0
  802. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_milestone_gate.py +0 -0
  803. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_milestone_order.py +0 -0
  804. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_milestone_seam.py +0 -0
  805. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_mock_author.py +0 -0
  806. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_model_tiering.py +0 -0
  807. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_models.py +0 -0
  808. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_models_config_labels.py +0 -0
  809. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_models_pinned_1650.py +0 -0
  810. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_native_fs_wait.py +0 -0
  811. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_native_pixels.py +0 -0
  812. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_needs_attention.py +0 -0
  813. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_network.py +0 -0
  814. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_new_issue_chat.py +0 -0
  815. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_next_release_tag.py +0 -0
  816. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_nightly_runner.py +0 -0
  817. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_nightly_smoke.py +0 -0
  818. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_nightly_status.py +0 -0
  819. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_nightly_store.py +0 -0
  820. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_no_eligible_host_3600.py +0 -0
  821. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_node_shim.py +0 -0
  822. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_notifier_baseline.py +0 -0
  823. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_notifier_cli.py +0 -0
  824. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_notifier_collect.py +0 -0
  825. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_notifier_config.py +0 -0
  826. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_notifier_drive_seam.py +0 -0
  827. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_notifier_isolation.py +0 -0
  828. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_notifier_predicate.py +0 -0
  829. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_notifier_quiet_hours.py +0 -0
  830. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_notifier_service.py +0 -0
  831. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_notify_drain.py +0 -0
  832. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_openapi.py +0 -0
  833. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_operational_defaults.py +0 -0
  834. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_overlap_fence.py +0 -0
  835. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_overlap_predict.py +0 -0
  836. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_packaged_deploy_units.py +0 -0
  837. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_parentage.py +0 -0
  838. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_paste_landed.py +0 -0
  839. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  840. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_pipeline.py +0 -0
  841. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_plain_runner_smoke_3673.py +0 -0
  842. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_plan_followup_approve_plan_command.py +0 -0
  843. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_plan_followup_pr_command.py +0 -0
  844. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_plan_followup_review_command.py +0 -0
  845. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_plan_only.py +0 -0
  846. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_plan_parser.py +0 -0
  847. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_platform_paths.py +0 -0
  848. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_portal_bridge.py +0 -0
  849. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_portal_config.py +0 -0
  850. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_portal_store.py +0 -0
  851. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_portal_sync.py +0 -0
  852. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_pr_body_lint.py +0 -0
  853. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_prereqs.py +0 -0
  854. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_prereview_gate.py +0 -0
  855. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_production_db_guard.py +0 -0
  856. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_provider_seam.py +0 -0
  857. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_providers.py +0 -0
  858. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_providers_config_labels.py +0 -0
  859. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_providers_pty.py +0 -0
  860. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_provision_core.py +0 -0
  861. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_provision_machine.py +0 -0
  862. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_py_rust_mirror_inventory.py +0 -0
  863. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_quiet_hours.py +0 -0
  864. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_quiet_hours_store_2146.py +0 -0
  865. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_reap_merged_sessions.py +0 -0
  866. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_reap_stale_interactive_tick.py +0 -0
  867. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_reconcile.py +0 -0
  868. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_reconcile_branch.py +0 -0
  869. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_reconcile_completions.py +0 -0
  870. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  871. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_reconcile_merges.py +0 -0
  872. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_reconcile_no_agent_record.py +0 -0
  873. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_reconcile_tick.py +0 -0
  874. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_reconcile_usage_limit_done.py +0 -0
  875. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_refine_chat.py +0 -0
  876. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_release_cordon_2101.py +0 -0
  877. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  878. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_release_cordon_deadlock_2240.py +0 -0
  879. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  880. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_release_cordon_stuck_2490.py +0 -0
  881. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_release_gate.py +0 -0
  882. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_release_propagate.py +0 -0
  883. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_release_propagate_threshold.py +0 -0
  884. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_release_roll_between_legs_2854.py +0 -0
  885. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_release_roll_window_handoff.py +0 -0
  886. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_release_unified_1242.py +0 -0
  887. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_release_verify.py +0 -0
  888. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_release_window.py +0 -0
  889. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_remote_auto_prune.py +0 -0
  890. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_remote_interactive_reaper.py +0 -0
  891. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_repo_add.py +0 -0
  892. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_repo_dormancy.py +0 -0
  893. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_repo_edit_2220.py +0 -0
  894. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_repo_graph_fleet_2237.py +0 -0
  895. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_repo_max_parallel_3423.py +0 -0
  896. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_repo_onboard_2220.py +0 -0
  897. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_report_public_export.py +0 -0
  898. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_report_result_push.py +0 -0
  899. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_reports.py +0 -0
  900. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_restart_cmd.py +0 -0
  901. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_retry.py +0 -0
  902. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_retry_advisory_1606.py +0 -0
  903. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_retry_escalation_classify_3360.py +0 -0
  904. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_retry_type_1636.py +0 -0
  905. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_revalidate.py +0 -0
  906. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_review.py +0 -0
  907. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_review_end_review_without_verdict.py +0 -0
  908. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_review_parse_failure_diagnostic.py +0 -0
  909. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_review_reaffirm.py +0 -0
  910. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_review_state.py +0 -0
  911. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_review_verdict_backstop.py +0 -0
  912. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_review_verdict_override_audit.py +0 -0
  913. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_review_verdict_relay.py +0 -0
  914. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_review_zero_commits.py +0 -0
  915. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_scoped_review_wiring.py +0 -0
  916. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_scorecard.py +0 -0
  917. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_self_health.py +0 -0
  918. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_serve.py +0 -0
  919. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_serve_app.py +0 -0
  920. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_serve_app_board_trim.py +0 -0
  921. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_serve_rest_routes.py +0 -0
  922. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_session.py +0 -0
  923. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_slice_issue_attribution.py +0 -0
  924. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_smoke.py +0 -0
  925. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  926. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_smoke_live_checkout_restore.py +0 -0
  927. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_smoke_plain_runner_3673.py +0 -0
  928. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_smoke_workflow.py +0 -0
  929. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_spend_ceiling.py +0 -0
  930. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_spend_ceiling_coordinator.py +0 -0
  931. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_split.py +0 -0
  932. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_split_work.py +0 -0
  933. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_sql_dialect.py +0 -0
  934. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_sqlite_connect_ratchet.py +0 -0
  935. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_stage_projection.py +0 -0
  936. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_stale_busy_reviewer_697.py +0 -0
  937. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_stalled_pipeline.py +0 -0
  938. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_state.py +0 -0
  939. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_state_review_findings_daemon.py +0 -0
  940. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_status_fleet_footer.py +0 -0
  941. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_stop_1567.py +0 -0
  942. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_store_contract.py +0 -0
  943. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_store_migrate.py +0 -0
  944. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_stuck.py +0 -0
  945. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  946. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_terminal_command.py +0 -0
  947. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_test_author.py +0 -0
  948. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_test_chat.py +0 -0
  949. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_test_orchestrator.py +0 -0
  950. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_test_report.py +0 -0
  951. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_test_verdict_parsing.py +0 -0
  952. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_test_verdict_transcript_floor.py +0 -0
  953. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_text_io_encoding_audit.py +0 -0
  954. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_thin_client_board_audit.py +0 -0
  955. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_thin_client_config_load_1080.py +0 -0
  956. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_thin_client_daemon_routing_906.py +0 -0
  957. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_throwaway_vm.py +0 -0
  958. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_tmux_host.py +0 -0
  959. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_tmux_session.py +0 -0
  960. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_transcript_floor.py +0 -0
  961. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_tui_pty_driver.py +0 -0
  962. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_uat_checks.py +0 -0
  963. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_upstream_gaps.py +0 -0
  964. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_usage.py +0 -0
  965. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_usage_limits.py +0 -0
  966. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_usage_rollup.py +0 -0
  967. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_venv_live_install_2121.py +0 -0
  968. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_version_single_source.py +0 -0
  969. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_watch.py +0 -0
  970. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_win_native_bridge.py +0 -0
  971. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_win_native_driver.py +0 -0
  972. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  973. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_worker_env_venv_isolation.py +0 -0
  974. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_worker_events.py +0 -0
  975. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_worker_image_pin_sync.py +0 -0
  976. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_worker_safety.py +0 -0
  977. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_worker_test_scoping.py +0 -0
  978. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_worktree.py +0 -0
  979. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  980. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/tests/test_write_parity.py +0 -0
  981. {code_coordinator-0.5.660 → code_coordinator-0.5.662}/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.660
3
+ Version: 0.5.662
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.660
3
+ Version: 0.5.662
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.660",
2
+ "tag": "0.5.662",
3
3
  "distance": 0,
4
- "node": "g84e0243c5811e3c81d1a5513d483f0637e3c0f74",
4
+ "node": "ge117a8cdf2f43c28be0be40fec94a54767d63259",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-10-22"
@@ -2114,7 +2114,12 @@ def merge(
2114
2114
  # #1477: re-test any parked CONFLICT entry before resolving
2115
2115
  # --only — a branch repaired since the last tick should be eligible
2116
2116
  # for --only the moment it's clean, not only after a manual --drop.
2117
+ # Keep the events so the --override-human-required check below can
2118
+ # tell "already HUMAN_REQUIRED" apart from "just auto-cleared by this
2119
+ # same reconcile pass" instead of treating the latter as a usage error.
2120
+ _reconciled_assignment_ids = set()
2117
2121
  for _ev in mq.reconcile_conflict_entries(gh_ops):
2122
+ _reconciled_assignment_ids.add(_ev.entry.assignment_id)
2118
2123
  click.echo(
2119
2124
  f" {_ev.entry.repo_name} #{_ev.entry.issue_number} "
2120
2125
  f"({_ev.entry.branch}): {_ev.kind} — {_ev.message}"
@@ -2173,49 +2178,63 @@ def merge(
2173
2178
  # so it gets its own flag, its own validation, and its own audit
2174
2179
  # row, never bundled into --force-merge.
2175
2180
  if override_human_required:
2181
+ _override_already_moot = False
2176
2182
  if only_entry.state != HUMAN_REQUIRED:
2177
- click.echo(
2178
- "error: --override-human-required only applies to a "
2179
- f"HUMAN_REQUIRED entry; {only_assignment!r} is in state "
2180
- f"{only_entry.state!r}",
2181
- err=True,
2182
- )
2183
- sys.exit(1)
2184
- if dry_run:
2185
- click.echo(
2186
- " --override-human-required: (dry run) would clear "
2187
- f"HUMAN_REQUIRED on {only_assignment!r} — "
2188
- f"{override_human_required!r}"
2189
- )
2190
- else:
2191
- from coord.audit import record_audit # noqa: PLC0415
2192
-
2193
- record_audit(
2194
- tier="business",
2195
- category="merge",
2196
- event_type="human_required_override",
2197
- actor="user",
2198
- summary=(
2199
- f"human_required override: {only_entry.repo_name}"
2200
- f"#{only_entry.issue_number} ({only_assignment}) — "
2201
- f"{override_human_required}"
2202
- ),
2203
- repo=only_entry.repo_name,
2204
- issue=only_entry.issue_number,
2205
- assignment_id=only_entry.assignment_id,
2206
- details={"reason": override_human_required},
2207
- )
2208
- click.echo(
2209
- " --override-human-required: cleared HUMAN_REQUIRED on "
2210
- f"{only_assignment!r} — {override_human_required!r} — "
2211
- "requeued as PENDING"
2212
- )
2213
- # Reset in-memory state either way so the dry-run event stream
2214
- # below reflects what a real run would do (matching the review/
2215
- # smoke gate dry-run convention); actual persistence is still
2216
- # gated on `not dry_run` in the save block further down.
2217
- only_entry.state = PENDING
2218
- only_entry.error = None
2183
+ if only_entry.assignment_id in _reconciled_assignment_ids:
2184
+ # The reconcile pass just above this already found the
2185
+ # PR mergeable again and cleared the latch itself — the
2186
+ # override the operator asked for is moot, not an error.
2187
+ _override_already_moot = True
2188
+ click.echo(
2189
+ " --override-human-required: not needed — "
2190
+ f"{only_assignment!r} was already auto-cleared to "
2191
+ f"{only_entry.state!r} by the conflict reconcile pass"
2192
+ )
2193
+ else:
2194
+ click.echo(
2195
+ "error: --override-human-required only applies to a "
2196
+ f"HUMAN_REQUIRED entry; {only_assignment!r} is in state "
2197
+ f"{only_entry.state!r}",
2198
+ err=True,
2199
+ )
2200
+ sys.exit(1)
2201
+ if not _override_already_moot:
2202
+ if dry_run:
2203
+ click.echo(
2204
+ " --override-human-required: (dry run) would clear "
2205
+ f"HUMAN_REQUIRED on {only_assignment!r} — "
2206
+ f"{override_human_required!r}"
2207
+ )
2208
+ else:
2209
+ from coord.audit import record_audit # noqa: PLC0415
2210
+
2211
+ record_audit(
2212
+ tier="business",
2213
+ category="merge",
2214
+ event_type="human_required_override",
2215
+ actor="user",
2216
+ summary=(
2217
+ f"human_required override: {only_entry.repo_name}"
2218
+ f"#{only_entry.issue_number} ({only_assignment}) — "
2219
+ f"{override_human_required}"
2220
+ ),
2221
+ repo=only_entry.repo_name,
2222
+ issue=only_entry.issue_number,
2223
+ assignment_id=only_entry.assignment_id,
2224
+ details={"reason": override_human_required},
2225
+ )
2226
+ click.echo(
2227
+ " --override-human-required: cleared HUMAN_REQUIRED on "
2228
+ f"{only_assignment!r} — {override_human_required!r} — "
2229
+ "requeued as PENDING"
2230
+ )
2231
+ # Reset in-memory state either way so the dry-run event
2232
+ # stream below reflects what a real run would do (matching
2233
+ # the review/smoke gate dry-run convention); actual
2234
+ # persistence is still gated on `not dry_run` in the save
2235
+ # block further down.
2236
+ only_entry.state = PENDING
2237
+ only_entry.error = None
2219
2238
  # #2157: MERGED is the one non-PENDING state that is not a failure.
2220
2239
  # An exit code reports whether the CALLER's postcondition holds, and
2221
2240
  # for `--only <aid>` that postcondition is "aid's branch is on the
@@ -788,6 +788,41 @@ class ConfirmationResult:
788
788
  return self.kind in INCONCLUSIVE_KINDS
789
789
 
790
790
 
791
+ def write_test_output_file(assignment_id: str, output: str) -> Path | None:
792
+ """Best-effort persist of *output* to ``COORD_DIR/test_output/<assignment_id>.txt``.
793
+
794
+ This is the one dedicated channel for quoting raw worker-/suite-authored
795
+ text back to a fix worker: ``coord fix`` (:mod:`coord.commands.plan_followup`)
796
+ prefers reading this file over every other evidence source, and —
797
+ critically — ``test_reason`` does not: that column is scanned by several
798
+ unanchored regex readers (:func:`coord.state.classify_failure` on every
799
+ ``test_state="failed"`` write, the smoke budget tallies in
800
+ :mod:`coord.smoke`) that must never see raw log prose, only the
801
+ coordinator's own one-line summaries. Anything longer than a headline
802
+ belongs here, not in ``test_reason``.
803
+
804
+ *assignment_id* is the parent **work** row's id (the one a fix leg is
805
+ spawned from), not a confirming/smoke transition's id — the same key
806
+ :func:`coord.commands.plan_followup.fix` reads back by.
807
+
808
+ A no-op, returning ``None``, when there is nothing to write or when the
809
+ write itself fails (a read-only ``COORD_DIR``, a full disk, ...); callers
810
+ treat this as best-effort and must never let it break verdict recording.
811
+ """
812
+ if not output:
813
+ return None
814
+ from coord.state import COORD_DIR # noqa: PLC0415
815
+
816
+ try:
817
+ test_output_dir = COORD_DIR / "test_output"
818
+ test_output_dir.mkdir(parents=True, exist_ok=True)
819
+ stored = test_output_dir / f"{assignment_id}.txt"
820
+ stored.write_text(output)
821
+ except OSError:
822
+ return None
823
+ return stored
824
+
825
+
791
826
  def write_confirmation_output(assignment_id: str, result: ConfirmationResult) -> Path | None:
792
827
  """Persist a confirmation run's captured output tail for the fix briefing (#2563).
793
828
 
@@ -802,29 +837,13 @@ def write_confirmation_output(assignment_id: str, result: ConfirmationResult) ->
802
837
  failing test names, no tracebacks, and had to re-derive the diagnosis the
803
838
  daemon already held in memory.
804
839
 
805
- *assignment_id* is the parent **work** row's id (the one the fix leg is
806
- spawned from), not the confirming smoke transition's id — same key
807
- :func:`coord.commands.plan_followup.fix` reads back by.
808
-
809
840
  A no-op, returning ``None``, when there is nothing to write (``KIND_OK``
810
841
  and ``KIND_SETUP`` both carry an empty ``.output`` — the former because
811
842
  nothing failed, the latter because no command ever ran) or when the write
812
- itself fails (a read-only ``COORD_DIR``, a full disk, ...); this must
813
- never break verdict recording, which is why the caller in
814
- :mod:`coord.notify` treats it as best-effort.
843
+ itself fails; see :func:`write_test_output_file`, which does the actual
844
+ work.
815
845
  """
816
- if not result.output:
817
- return None
818
- from coord.state import COORD_DIR # noqa: PLC0415
819
-
820
- try:
821
- test_output_dir = COORD_DIR / "test_output"
822
- test_output_dir.mkdir(parents=True, exist_ok=True)
823
- stored = test_output_dir / f"{assignment_id}.txt"
824
- stored.write_text(result.output)
825
- except OSError:
826
- return None
827
- return stored
846
+ return write_test_output_file(assignment_id, result.output)
828
847
 
829
848
 
830
849
  def confirmation_enabled(config=None) -> bool:
@@ -5763,21 +5763,69 @@ def refresh_entry_assignment(
5763
5763
 
5764
5764
  # ── Stale-conflict reconciliation (#1477) ───────────────────────────────────
5765
5765
 
5766
+ # A HUMAN_REQUIRED entry's `error` is not always the pristine original
5767
+ # conflict message: `coord.reconcile`'s conflict-fix completion hook builds
5768
+ # several of its own escalation messages as `f"{existing_error}; ..."`,
5769
+ # prefixing a fresh explanation onto whatever was already there rather than
5770
+ # replacing it. `classify_conflict` only pattern-matches wording, so a
5771
+ # message carrying one of these prefixes can still contain a `_REBASEABLE_
5772
+ # SIGNALS` phrase from the ORIGINAL conflict text and classify as
5773
+ # "rebaseable" even though the actual latch reason has nothing to do with
5774
+ # mergeability (the branch's content already landed elsewhere, a worker was
5775
+ # killed by a usage-limit reset, a reword was refused as non-content-
5776
+ # preserving, or an escalation attempt itself could not be dispatched).
5777
+ # These phrases are the ones `reconcile_conflict_entries` must still
5778
+ # recognize and refuse to unpark, even when `classify_conflict` disagrees.
5779
+ _NON_MERGEABILITY_HUMAN_REQUIRED_SIGNALS = (
5780
+ "not a real conflict", # usage-limit kill — never was a conflict
5781
+ "nothing to merge", # already-upstream — content already landed elsewhere
5782
+ "manual reword required", # reword worker declined a non-content-preserving rewrite
5783
+ "escalation could not be dispatched", # ordinary conflict-fix escalation itself declined
5784
+ )
5785
+
5786
+
5787
+ def _is_non_mergeability_human_latch(error: str | None) -> bool:
5788
+ """True when ``error`` carries a known non-mergeability escalation
5789
+ phrase, even though it may also contain conflict wording from a
5790
+ prefixed original message (see ``_NON_MERGEABILITY_HUMAN_REQUIRED_
5791
+ SIGNALS`` above).
5792
+ """
5793
+ if not error:
5794
+ return False
5795
+ text = error.lower()
5796
+ return any(sig in text for sig in _NON_MERGEABILITY_HUMAN_REQUIRED_SIGNALS)
5797
+
5798
+
5766
5799
  def reconcile_conflict_entries(gh_ops: "GhOps") -> list["MergeEvent"]:
5767
- """Re-test every ``CONFLICT`` entry's mergeability and clear stale verdicts.
5800
+ """Re-test stale conflict verdicts (``CONFLICT``, and retry-cap-latched
5801
+ ``HUMAN_REQUIRED``) against live mergeability and clear them when stale.
5768
5802
 
5769
5803
  A ``CONFLICT`` entry caches the ``gh pr merge`` failure message from
5770
5804
  whenever the queue last attempted it, and ``process()`` never looks at it
5771
5805
  again — it only ever iterates ``PENDING`` entries. When a conflict-fix
5772
- worker (#241) lands a rebase, or a human pushes a fix by hand, the branch
5806
+ worker lands a rebase, or a human pushes a fix by hand, the branch
5773
5807
  becomes clean but the entry sits parked on the old verdict forever,
5774
- requiring the three-step manual incantation described in #1477
5775
- (``--drop`` → a bare re-enqueue → ``--only``) to notice.
5776
-
5777
- This re-tests GitHub's own mergeability computation for every
5778
- ``CONFLICT`` entry that has an open PR and, when it now reports clean,
5779
- returns the entry to ``PENDING`` and clears the stored error so it
5780
- re-enters the ordinary merge flow on this tick — no manual archaeology.
5808
+ requiring a manual ``--drop`` → re-enqueue → ``--only`` incantation to
5809
+ notice.
5810
+
5811
+ The same staleness bites a ``HUMAN_REQUIRED`` entry escalated after a
5812
+ conflict-fix retry-cap hit: if the branch was rebased or the conflict
5813
+ resolved by hand afterwards (e.g. a develop merge that happened to land
5814
+ after the latch), the cached error is now pure archaeology and nothing
5815
+ else re-checks it — a clean, approved branch stays blocked until a
5816
+ manual ``--override-human-required``. Eligibility here requires BOTH
5817
+ that :func:`classify_conflict` reads the message as ``"rebaseable"``
5818
+ AND that it does not carry one of the ``_NON_MERGEABILITY_HUMAN_
5819
+ REQUIRED_SIGNALS`` phrases — a permission/protection latch
5820
+ (``classify_conflict(...) == "human"``), and any latch whose actual
5821
+ cause was never a mergeability question in the first place (content
5822
+ already upstream, a usage-limit kill, a declined reword, a declined
5823
+ escalation), are left untouched.
5824
+
5825
+ This re-tests GitHub's own mergeability computation for every eligible
5826
+ entry that has an open PR and, when it now reports clean, returns the
5827
+ entry to ``PENDING`` and clears the stored error so it re-enters the
5828
+ ordinary merge flow on this tick — no manual archaeology.
5781
5829
 
5782
5830
  Fail-closed by design: an entry with no PR yet, or whose mergeability
5783
5831
  can't be determined (``gh`` error, or GitHub still computing it — both
@@ -5812,7 +5860,22 @@ def reconcile_conflict_entries(gh_ops: "GhOps") -> list["MergeEvent"]:
5812
5860
  events: list[MergeEvent] = []
5813
5861
  changed = False
5814
5862
  for entry in items:
5815
- if entry.state != CONFLICT or not entry.pr_number:
5863
+ if not entry.pr_number:
5864
+ continue
5865
+ was_human_required = entry.state == HUMAN_REQUIRED
5866
+ if was_human_required:
5867
+ # Only a conflict-fix retry-cap latch is a mergeability
5868
+ # question — a permission/protection latch, or a latch whose
5869
+ # message merely contains leftover conflict wording from a
5870
+ # prefixed original error but was actually caused by something
5871
+ # re-checking `check_pr_mergeable` could never resolve, is left
5872
+ # alone.
5873
+ if (
5874
+ classify_conflict(entry.error) != "rebaseable"
5875
+ or _is_non_mergeability_human_latch(entry.error)
5876
+ ):
5877
+ continue
5878
+ elif entry.state != CONFLICT:
5816
5879
  continue
5817
5880
  try:
5818
5881
  mergeable = gh_ops.check_pr_mergeable(entry.repo_github, entry.pr_number)
@@ -5835,9 +5898,10 @@ def reconcile_conflict_entries(gh_ops: "GhOps") -> list["MergeEvent"]:
5835
5898
  entry.state = PENDING
5836
5899
  entry.error = None
5837
5900
  changed = True
5901
+ cleared_kind = "human_required latch" if was_human_required else "conflict"
5838
5902
  events.append(MergeEvent(
5839
5903
  entry, "reopened",
5840
- f"conflict cleared — PR #{entry.pr_number} ({entry.branch}) is "
5904
+ f"{cleared_kind} cleared — PR #{entry.pr_number} ({entry.branch}) is "
5841
5905
  "mergeable again, returned to pending",
5842
5906
  ))
5843
5907
  if changed:
@@ -3280,14 +3280,38 @@ def _record_smoke_verdict(
3280
3280
  # `test_state`, so a headless smoke FAILURE lands as
3281
3281
  # test_state='failed' AND smoke_test='fail' and stays reachable from
3282
3282
  # `coord fix`.
3283
+ #
3284
+ # A plain-runner's marker line (`SMOKE: fail exit=1`) carries nothing
3285
+ # but an exit code — useless to a fix worker who can't tell its own
3286
+ # diff from a red base from that alone. `verdict.context` is the
3287
+ # bounded log tail that preceded the marker, which for the
3288
+ # plain-runner is the captured failing-test output (panic/assertion
3289
+ # lines, the `error: test failed, to rerun pass -p <crate> --test
3290
+ # <name>` hint), and for a `claude -p` smoke worker is usually the
3291
+ # turn where it identified the failure.
3292
+ #
3293
+ # That text is raw worker-/suite-authored prose, so it goes to the
3294
+ # dedicated `test_output` file (`coord.confirm_test.
3295
+ # write_test_output_file`), never into `test_reason` itself —
3296
+ # `test_reason` is scanned unanchored by several readers
3297
+ # (`coord.state.classify_failure` on every failed write,
3298
+ # `coord.smoke`'s budget tallies) that must only ever see the
3299
+ # coordinator's own short summary, not a worker's log output which
3300
+ # could coincidentally contain one of their matched phrases.
3301
+ # `plan_followup.fix()` already prefers this file over `test_reason`
3302
+ # when composing the briefing.
3303
+ from coord.confirm_test import write_test_output_file # noqa: PLC0415
3304
+
3305
+ write_test_output_file(parent_id, verdict.context)
3306
+ headline = (
3307
+ f"headless smoke: {verdict.reason}"
3308
+ if verdict.reason
3309
+ else "headless smoke reported SMOKE: fail"
3310
+ )
3283
3311
  record_test_verdict(
3284
3312
  assignment_id=parent_id,
3285
3313
  test_state="failed",
3286
- test_reason=(
3287
- f"headless smoke: {verdict.reason}"
3288
- if verdict.reason
3289
- else "headless smoke reported SMOKE: fail"
3290
- ),
3314
+ test_reason=headline,
3291
3315
  )
3292
3316
  return
3293
3317
 
@@ -90,11 +90,22 @@ class SmokeVerdict:
90
90
  """#2244: a smoke worker's self-reported verdict line.
91
91
 
92
92
  ``kind`` is normalised to exactly one of ``"pass"``, ``"fail"`` or
93
- ``"baseline-red"``; ``reason`` is the (possibly empty) trailing text.
93
+ ``"baseline-red"``; ``reason`` is the (possibly empty) trailing text on
94
+ the marker's own line.
95
+
96
+ ``context`` is a bounded tail (:func:`coord.revalidate._tail`) of
97
+ whatever text preceded the marker — a plain-runner writes its captured
98
+ test output immediately before `SMOKE: fail exit=N`, and a `claude -p`
99
+ smoke worker usually states the failing test/assertion in the same turn
100
+ it prints the marker. This is raw worker-authored text, not a short
101
+ summary: callers must route it to a channel meant for that (e.g.
102
+ `coord.confirm_test.write_test_output_file`), never append it to a
103
+ structured field like `test_reason`.
94
104
  """
95
105
 
96
106
  kind: str
97
107
  reason: str = ""
108
+ context: str = ""
98
109
 
99
110
 
100
111
  @dataclass
@@ -484,17 +495,27 @@ def _extract_smoke_verdict_from_text(text: str) -> "SmokeVerdict | None":
484
495
  itself — "I said baseline-red, but re-running shows a real failure")
485
496
  means the final line, not the first.
486
497
  """
498
+ from coord.revalidate import _tail # noqa: PLC0415
499
+
487
500
  matches = list(_SMOKE_VERDICT_RE.finditer(text))
488
501
  if not matches:
489
502
  return None
490
- raw_kind = matches[-1].group(1).lower()
503
+ last = matches[-1]
504
+ raw_kind = last.group(1).lower()
491
505
  if raw_kind.startswith("baseline"):
492
506
  kind = "baseline-red"
493
507
  elif raw_kind.startswith("pass"):
494
508
  kind = "pass"
495
509
  else:
496
510
  kind = "fail"
497
- return SmokeVerdict(kind=kind, reason=matches[-1].group(2).strip())
511
+ # Whatever preceded the marker line, bounded the same way
512
+ # `coord.revalidate`'s own failure tails are. `text[:last.start()]` not
513
+ # `.end()` — the marker line itself (e.g. `SMOKE: fail exit=1`) is
514
+ # already captured as `reason` and would just duplicate here.
515
+ preceding = _tail(text[: last.start()])
516
+ return SmokeVerdict(
517
+ kind=kind, reason=last.group(2).strip(), context=preceding,
518
+ )
498
519
 
499
520
 
500
521
  def _smoke_verdict_texts_from_event(event: object) -> list[str]:
@@ -594,6 +594,46 @@ class TestFixFromRedCi:
594
594
 
595
595
  assert result.exit_code == 0, result.output
596
596
 
597
+ def test_test_output_file_content_reaches_the_rendered_briefing(
598
+ self, ci_config: Path, coord_dir: Path, monkeypatch
599
+ ) -> None:
600
+ """`fix()`'s `elif test_output_file.exists()` branch wins over
601
+ `test_reason` — pin that the file's content, not just its
602
+ existence, actually lands in the rendered `## Test failure`
603
+ section a fix worker reads."""
604
+ work = _work(test_state="failed", test_reason="exit=1")
605
+ state_mod.save_board(Board(completed=[work]))
606
+
607
+ def boom(*a, **k):
608
+ raise AssertionError("CI must not be consulted when the test gate failed")
609
+
610
+ monkeypatch.setattr("coord.ci_store.build_ci_store", boom)
611
+
612
+ test_output_dir = coord_dir / "test_output"
613
+ test_output_dir.mkdir(parents=True, exist_ok=True)
614
+ (test_output_dir / "work-abc.txt").write_text(
615
+ "FAILED tests/readme_truth.rs::version_matches\n"
616
+ "error: test failed, to rerun pass -p vimcode --test readme_truth\n"
617
+ "SMOKE: fail exit=1\n"
618
+ )
619
+
620
+ captured = {}
621
+
622
+ def fake_dispatch(proposal, config, **kwargs):
623
+ captured["briefing"] = proposal.briefing
624
+ return {"id": "fix-t"}
625
+
626
+ with patch("coord.dispatch.dispatch", side_effect=fake_dispatch), \
627
+ patch("coord.github_ops.post_issue_comment"):
628
+ result = CliRunner().invoke(
629
+ main, ["fix", "work-abc", "--config", str(ci_config)]
630
+ )
631
+
632
+ assert result.exit_code == 0, result.output
633
+ assert "## Test failure" in captured["briefing"]
634
+ assert "FAILED tests/readme_truth.rs::version_matches" in captured["briefing"]
635
+ assert "to rerun pass -p vimcode --test readme_truth" in captured["briefing"]
636
+
597
637
  def test_dispatch_refused_by_a_pre_dispatch_guard_exits_distinctly(
598
638
  self, ci_config: Path, coord_dir: Path, monkeypatch
599
639
  ) -> None:
@@ -1132,6 +1132,49 @@ class TestMergeOverrideHumanRequired:
1132
1132
  ).fetchall()
1133
1133
  assert rows == []
1134
1134
 
1135
+ def test_override_moot_when_reconcile_already_cleared_entry(
1136
+ self, config_file: Path, coord_dir: Path, coord_db,
1137
+ ) -> None:
1138
+ """`--only`'s own stale-conflict reconcile pass (#1477) runs before
1139
+ this validation and can itself unpark a HUMAN_REQUIRED retry-cap
1140
+ latch the moment GitHub reports the PR mergeable again. That is not
1141
+ a usage error — the override the operator asked for is simply no
1142
+ longer needed — so it must not be reported as one, and must not
1143
+ write a spurious `human_required_override` audit row for an
1144
+ override that never actually applied."""
1145
+ entry = mq.QueuedMerge(
1146
+ assignment_id="h1", repo_name="api", repo_github="acme/api",
1147
+ branch="worker/h1", target_branch="main", issue_number=1,
1148
+ issue_title="t", state=mq.HUMAN_REQUIRED, pr_number=900,
1149
+ error="gh pr merge 900 ... --rebase failed: not mergeable",
1150
+ )
1151
+ _seed_queue([entry])
1152
+
1153
+ def fake_merge(repo, number, method="rebase"):
1154
+ return True, "ok"
1155
+
1156
+ with patch("coord.github_ops.check_pr_mergeable", return_value=True), \
1157
+ patch("coord.github_ops.create_pr") as create, \
1158
+ patch("coord.github_ops.get_pr_size", return_value=10), \
1159
+ patch("coord.github_ops.merge_pr", side_effect=fake_merge):
1160
+ result = CliRunner().invoke(
1161
+ main,
1162
+ [
1163
+ "merge", "--config", str(config_file),
1164
+ "--only", "h1",
1165
+ "--override-human-required", "no longer needed",
1166
+ ],
1167
+ )
1168
+
1169
+ assert result.exit_code == 0, result.output
1170
+ assert "not needed" in result.output
1171
+ assert "cleared HUMAN_REQUIRED" not in result.output
1172
+
1173
+ rows = coord_db.execute(
1174
+ "SELECT * FROM audit_log WHERE event_type='human_required_override'"
1175
+ ).fetchall()
1176
+ assert rows == []
1177
+
1135
1178
  def test_override_dry_run_does_not_persist_or_audit(
1136
1179
  self, config_file: Path, coord_dir: Path, coord_db,
1137
1180
  ) -> None:
@@ -120,17 +120,46 @@ def _fake_coord_home(tmp_path: Path) -> Path:
120
120
  return home
121
121
 
122
122
 
123
+ def _venv_pythonpath() -> str:
124
+ """site-packages (for PyYAML) and REPO_ROOT (for `coord`), as the block's
125
+ `PYBIN` subprocess sees them.
126
+
127
+ The real daemon host's ~/.coord-venv/bin/python is a venv interpreter that
128
+ finds `coord` and its deps in its own site-packages. `_fake_coord_home`
129
+ fakes that interpreter with a bare symlink to this test process's
130
+ executable -- but a symlink with no adjacent `pyvenv.cfg` is not a venv, so
131
+ the subprocess resolves its prefix to the base interpreter and cannot see
132
+ the test venv's site-packages (notably PyYAML, which `coord.config` imports
133
+ at module top). Python 3.13 made this prefix resolution stricter, so the
134
+ bare symlink no longer happens to import `yaml`. Hand the subprocess the
135
+ exact directories where `yaml` and `coord` live for this interpreter, which
136
+ stands in for the real venv having them installed."""
137
+ import coord
138
+ import yaml
139
+
140
+ return os.pathsep.join(
141
+ str(p)
142
+ for p in (
143
+ Path(yaml.__file__).resolve().parent.parent, # site-packages
144
+ Path(coord.__file__).resolve().parent.parent, # REPO_ROOT
145
+ )
146
+ )
147
+
148
+
123
149
  def _run_remote_block(body: str, home: Path, *args: str):
124
150
  import subprocess
125
151
 
126
152
  driver = f"set -euo pipefail\n{body}\n"
153
+ extra_path = _venv_pythonpath()
154
+ existing = os.environ.get("PYTHONPATH")
155
+ pythonpath = f"{extra_path}{os.pathsep}{existing}" if existing else extra_path
127
156
  return subprocess.run(
128
157
  [POSIX_BASH, "-c", driver, "bash", *args],
129
158
  capture_output=True,
130
159
  text=True,
131
160
  timeout=30,
132
161
  cwd=REPO_ROOT,
133
- env={**os.environ, "HOME": str(home)},
162
+ env={**os.environ, "HOME": str(home), "PYTHONPATH": pythonpath},
134
163
  check=False,
135
164
  )
136
165