code-coordinator 0.5.756__tar.gz → 0.5.758__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 (1005) hide show
  1. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/agent.py +16 -0
  5. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/board_doctor_policy.py +69 -2
  6. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/decomposition_chat.py +106 -5
  7. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/notify.py +52 -0
  8. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/queue_diagnose.py +86 -0
  9. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_board_doctor.py +80 -0
  10. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_board_doctor_policy.py +47 -0
  11. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_decomposition_chat.py +149 -0
  12. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_notify.py +94 -0
  13. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_queue_diagnose.py +75 -0
  14. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/.claude/commands/board.md +0 -0
  15. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/.claude/commands/complete-session.md +0 -0
  16. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/.claude/commands/coordinator.md +0 -0
  17. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/.githooks/_lib.sh +0 -0
  18. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/.githooks/post-checkout +0 -0
  19. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/.githooks/post-commit +0 -0
  20. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/.githooks/post-merge +0 -0
  21. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  22. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/.github/coord-ci-acceptance.yml +0 -0
  23. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/.github/workflows/auto-release.yml +0 -0
  24. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/.github/workflows/publish.yml +0 -0
  25. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/.github/workflows/test.yml +0 -0
  26. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/.gitignore +0 -0
  27. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/CLAUDE.md +0 -0
  28. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/GOAL.md +0 -0
  29. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/LICENSE +0 -0
  30. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/MANIFEST.in +0 -0
  31. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/README.md +0 -0
  32. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/code_coordinator.egg-info/SOURCES.txt +0 -0
  33. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/code_coordinator.egg-info/dependency_links.txt +0 -0
  34. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/code_coordinator.egg-info/entry_points.txt +0 -0
  35. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/code_coordinator.egg-info/requires.txt +0 -0
  36. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/code_coordinator.egg-info/scm_file_list.json +0 -0
  37. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/code_coordinator.egg-info/top_level.txt +0 -0
  38. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/__init__.py +0 -0
  39. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/_board_mapping.py +0 -0
  40. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/acceptance.py +0 -0
  41. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/acceptance_drivers.py +0 -0
  42. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/agent_app.py +0 -0
  43. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/agent_update.py +0 -0
  44. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/agents/opencode/.gitignore +0 -0
  45. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/agents/opencode/agents/work.md +0 -0
  46. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/agents/opencode/routing.jsonc +0 -0
  47. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/app_drive.py +0 -0
  48. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/app_drive_daemon.py +0 -0
  49. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/approved_work.py +0 -0
  50. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/audit.py +0 -0
  51. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/auto_loop.py +0 -0
  52. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/backup.py +0 -0
  53. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/block_log.py +0 -0
  54. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/board_doctor.py +0 -0
  55. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/board_doctor_followthrough.py +0 -0
  56. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/board_doctor_permissions.py +0 -0
  57. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/board_schema.py +0 -0
  58. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/board_service.py +0 -0
  59. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/board_wire.py +0 -0
  60. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/brain.py +0 -0
  61. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/branch_model.py +0 -0
  62. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/briefing_lessons.py +0 -0
  63. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/bug_intake.py +0 -0
  64. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/bugbash.py +0 -0
  65. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/cargo_cache.py +0 -0
  66. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/ci_fix.py +0 -0
  67. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/ci_github.py +0 -0
  68. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/ci_gitlab.py +0 -0
  69. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/ci_store.py +0 -0
  70. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/claim.py +0 -0
  71. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/claude_setup_token.py +0 -0
  72. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/cli.py +0 -0
  73. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/client.py +0 -0
  74. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/codegen.py +0 -0
  75. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/__init__.py +0 -0
  76. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/_common.py +0 -0
  77. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/acceptance.py +0 -0
  78. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/agent_ops.py +0 -0
  79. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/app_drive.py +0 -0
  80. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/audit.py +0 -0
  81. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/backup.py +0 -0
  82. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/bugbash.py +0 -0
  83. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/chat.py +0 -0
  84. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/ci.py +0 -0
  85. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/codegen.py +0 -0
  86. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/dispatch.py +0 -0
  87. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/dispatch_workers.py +0 -0
  88. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/dr.py +0 -0
  89. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/drive.py +0 -0
  90. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/drive_queue.py +0 -0
  91. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/gate_a.py +0 -0
  92. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/gates.py +0 -0
  93. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/issues.py +0 -0
  94. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/lifecycle.py +0 -0
  95. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/machine.py +0 -0
  96. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/merge.py +0 -0
  97. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/milestone.py +0 -0
  98. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/plan_followup.py +0 -0
  99. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/plans.py +0 -0
  100. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/portal.py +0 -0
  101. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/pr.py +0 -0
  102. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/release.py +0 -0
  103. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/repo.py +0 -0
  104. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/report.py +0 -0
  105. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/review.py +0 -0
  106. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/scorecard.py +0 -0
  107. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/sessions.py +0 -0
  108. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/setup.py +0 -0
  109. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/smoke.py +0 -0
  110. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/status.py +0 -0
  111. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/store_migrate.py +0 -0
  112. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/terminal.py +0 -0
  113. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/test_gate.py +0 -0
  114. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/commands/tui.py +0 -0
  115. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/comments.py +0 -0
  116. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/config.py +0 -0
  117. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/config_reload.py +0 -0
  118. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/confirm_test.py +0 -0
  119. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/conflict_fix.py +0 -0
  120. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/dao.py +0 -0
  121. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/dashboard/__init__.py +0 -0
  122. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/dashboard/fixture.py +0 -0
  123. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/dashboard/index.html +0 -0
  124. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/dashboard/reports.html +0 -0
  125. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/dashboard/server.py +0 -0
  126. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/dashboard/terminal.py +0 -0
  127. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/db.py +0 -0
  128. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/dead_end.py +0 -0
  129. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/README.md +0 -0
  130. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-agent.service +0 -0
  131. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-backup.service +0 -0
  132. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-backup.timer +0 -0
  133. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-board-doctor.service +0 -0
  134. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-board-doctor.timer +0 -0
  135. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-db-backup.service +0 -0
  136. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-db-backup.sh +0 -0
  137. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-db-backup.timer +0 -0
  138. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-dr-verify.service +0 -0
  139. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-dr-verify.timer +0 -0
  140. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-drive-queue.service +0 -0
  141. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-drive-queue.timer +0 -0
  142. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-failure-notify.service +0 -0
  143. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-fleet-watchdog.service +0 -0
  144. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  145. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-nightly-smoke.service +0 -0
  146. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-nightly-smoke.timer +0 -0
  147. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-notify.service +0 -0
  148. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-notify.timer +0 -0
  149. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-release-propagate.service +0 -0
  150. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-release-propagate.timer +0 -0
  151. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-release-window.service +0 -0
  152. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-release-window.timer +0 -0
  153. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-serve.service +0 -0
  154. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-web-dist-build.service +0 -0
  155. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-web-dist-build.timer +0 -0
  156. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy/coord-web.service +0 -0
  157. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy_manifest.py +0 -0
  158. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deploy_units.py +0 -0
  159. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deprecation_telemetry.py +0 -0
  160. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/deps.py +0 -0
  161. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/diagnose.py +0 -0
  162. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/dirlink.py +0 -0
  163. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/dispatch.py +0 -0
  164. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/dispatch_liveness.py +0 -0
  165. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/dist_name.py +0 -0
  166. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/dr_promote.py +0 -0
  167. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/dr_verify.py +0 -0
  168. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/drive.py +0 -0
  169. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/drive_queue.py +0 -0
  170. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/drive_sessions_snapshot.py +0 -0
  171. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/drive_state.py +0 -0
  172. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/entry_truth.py +0 -0
  173. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/events.py +0 -0
  174. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/failure_class.py +0 -0
  175. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/failure_classifier.py +0 -0
  176. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/filelock.py +0 -0
  177. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/fleet_config_health.py +0 -0
  178. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/forge_availability.py +0 -0
  179. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/freshness.py +0 -0
  180. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/gate_a.py +0 -0
  181. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/gate_b.py +0 -0
  182. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/gate_snapshot.py +0 -0
  183. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/gates.py +0 -0
  184. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/gen_board_fixture.py +0 -0
  185. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/github_ops.py +0 -0
  186. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/github_throttle.py +0 -0
  187. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/goal.py +0 -0
  188. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/graph_health.py +0 -0
  189. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/gtk_native_driver.py +0 -0
  190. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/__init__.py +0 -0
  191. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/aggregate.py +0 -0
  192. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/__init__.py +0 -0
  193. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/_ci_pin.py +0 -0
  194. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/agent_install.py +0 -0
  195. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/cargo_targets.py +0 -0
  196. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/claude_binary.py +0 -0
  197. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/config_drift.py +0 -0
  198. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  199. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/coord_web_ci_pin.py +0 -0
  200. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/deploy_lane_facts.py +0 -0
  201. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/disk.py +0 -0
  202. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/fleet_board.py +0 -0
  203. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  204. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/fleet_phantom.py +0 -0
  205. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/fleet_unit_drift.py +0 -0
  206. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/graph.py +0 -0
  207. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/graphify_cli.py +0 -0
  208. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/gui_lane_preflight.py +0 -0
  209. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/index_lock.py +0 -0
  210. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/issues_sync_staleness.py +0 -0
  211. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/local_machine_identity.py +0 -0
  212. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/plan_usage.py +0 -0
  213. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/pr_churn.py +0 -0
  214. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/release_cordon.py +0 -0
  215. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/repo_state.py +0 -0
  216. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/spawned_coord.py +0 -0
  217. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/stalled_pipeline.py +0 -0
  218. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/sustained_cpu.py +0 -0
  219. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/timer_active.py +0 -0
  220. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/toolchain.py +0 -0
  221. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/unit_drift.py +0 -0
  222. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/unit_enablement.py +0 -0
  223. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/wedged_drive_queue.py +0 -0
  224. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/checks/worktrees.py +0 -0
  225. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/cli.py +0 -0
  226. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/context.py +0 -0
  227. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/fleet_snapshot.py +0 -0
  228. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/models.py +0 -0
  229. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/pypi.py +0 -0
  230. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/registry.py +0 -0
  231. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/render.py +0 -0
  232. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/health/units.py +0 -0
  233. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/hooks.py +0 -0
  234. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/housekeeping.py +0 -0
  235. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/interactive.py +0 -0
  236. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/invariant_alarms.py +0 -0
  237. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/issue_store.py +0 -0
  238. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/issues_sync_status.py +0 -0
  239. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/key_spec.py +0 -0
  240. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/liveness_auditor.py +0 -0
  241. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/mac_native_driver.py +0 -0
  242. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/machine_fault.py +0 -0
  243. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/machine_metrics.py +0 -0
  244. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/machine_onboard.py +0 -0
  245. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/machine_pause.py +0 -0
  246. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/machine_stats.py +0 -0
  247. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/merge_queue.py +0 -0
  248. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/milestone_chat.py +0 -0
  249. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/milestone_dispatch.py +0 -0
  250. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/milestone_gate.py +0 -0
  251. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/milestone_order.py +0 -0
  252. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/mock_author.py +0 -0
  253. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/models.py +0 -0
  254. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/native_fs_wait.py +0 -0
  255. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/native_pixels.py +0 -0
  256. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/network.py +0 -0
  257. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/new_issue_chat.py +0 -0
  258. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/nightly_runner.py +0 -0
  259. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/nightly_smoke.py +0 -0
  260. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/nightly_status.py +0 -0
  261. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/nightly_store.py +0 -0
  262. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/notifier/__init__.py +0 -0
  263. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/notifier/baseline.py +0 -0
  264. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/notifier/cli.py +0 -0
  265. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/notifier/collect.py +0 -0
  266. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/notifier/digest.py +0 -0
  267. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/notifier/models.py +0 -0
  268. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/notifier/predicate.py +0 -0
  269. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/notifier/service.py +0 -0
  270. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/notifier/store.py +0 -0
  271. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/notifier/transport.py +0 -0
  272. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/openapi.py +0 -0
  273. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/overlap_fence.py +0 -0
  274. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/overlap_predict.py +0 -0
  275. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/parentage.py +0 -0
  276. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/parentage_github.py +0 -0
  277. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/pipeline.py +0 -0
  278. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/plan_parser.py +0 -0
  279. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/plans.py +0 -0
  280. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/platform_paths.py +0 -0
  281. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/portal_bridge.py +0 -0
  282. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/portal_store.py +0 -0
  283. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/portal_sync.py +0 -0
  284. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/pr_body_lint.py +0 -0
  285. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/preflight_size.py +0 -0
  286. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/prereqs.py +0 -0
  287. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/prereview_gate.py +0 -0
  288. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/progress.py +0 -0
  289. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/providers/__init__.py +0 -0
  290. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/providers/base.py +0 -0
  291. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/providers/claude.py +0 -0
  292. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/providers/claude_pty.py +0 -0
  293. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/providers/opencode.py +0 -0
  294. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/reconcile.py +0 -0
  295. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/reconcile_tick.py +0 -0
  296. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/refine_chat.py +0 -0
  297. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/release_cordon.py +0 -0
  298. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/release_gate.py +0 -0
  299. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/release_propagate.py +0 -0
  300. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/release_verify.py +0 -0
  301. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/release_window.py +0 -0
  302. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/repo_dormancy.py +0 -0
  303. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/repo_edit.py +0 -0
  304. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/repo_onboard.py +0 -0
  305. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/reports.py +0 -0
  306. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/rest_schema.py +0 -0
  307. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/restart_cmd.py +0 -0
  308. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/revalidate.py +0 -0
  309. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/review.py +0 -0
  310. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/scorecard.py +0 -0
  311. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/self_health.py +0 -0
  312. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/serve_app.py +0 -0
  313. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/shell_exec_wrap.py +0 -0
  314. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  315. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  316. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  317. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  318. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  319. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/skills/portal-followup/SKILL.md +0 -0
  320. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/skills/release-now/SKILL.md +0 -0
  321. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  322. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  323. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/skills/update-issue/SKILL.md +0 -0
  324. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/smoke.py +0 -0
  325. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/smoke_tags.py +0 -0
  326. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/spend_ceiling.py +0 -0
  327. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/split_work.py +0 -0
  328. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/sql.py +0 -0
  329. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/stage_projection.py +0 -0
  330. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/state.py +0 -0
  331. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/store_migrate.py +0 -0
  332. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/store_parity.py +0 -0
  333. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/templates/deploy-cloudflare.node.yml +0 -0
  334. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/test_author.py +0 -0
  335. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/test_chat.py +0 -0
  336. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/test_orchestrator.py +0 -0
  337. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/test_report.py +0 -0
  338. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/tui_pty_driver.py +0 -0
  339. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/tui_release.py +0 -0
  340. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/uat_checks.py +0 -0
  341. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/upstream_gaps.py +0 -0
  342. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/usage.py +0 -0
  343. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/usage_limits.py +0 -0
  344. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/usage_rollup.py +0 -0
  345. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/win_native_bridge.py +0 -0
  346. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/win_native_driver.py +0 -0
  347. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coord/worker_events.py +0 -0
  348. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/coordinator.example.yml +0 -0
  349. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-agent.service +0 -0
  350. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-backup.service +0 -0
  351. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-backup.timer +0 -0
  352. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-board-doctor.service +0 -0
  353. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-board-doctor.timer +0 -0
  354. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-db-backup.service +0 -0
  355. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-db-backup.sh +0 -0
  356. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-db-backup.timer +0 -0
  357. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-dr-verify.service +0 -0
  358. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-dr-verify.timer +0 -0
  359. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-drive-queue.service +0 -0
  360. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-drive-queue.timer +0 -0
  361. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-failure-notify.service +0 -0
  362. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-failure-notify.sh +0 -0
  363. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-fleet-watchdog.service +0 -0
  364. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-fleet-watchdog.timer +0 -0
  365. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-nightly-smoke.service +0 -0
  366. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-nightly-smoke.timer +0 -0
  367. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-notify.service +0 -0
  368. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-notify.timer +0 -0
  369. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-release-propagate.service +0 -0
  370. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-release-propagate.timer +0 -0
  371. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-release-window.service +0 -0
  372. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-release-window.timer +0 -0
  373. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-serve.service +0 -0
  374. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-web-dist-build.service +0 -0
  375. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-web-dist-build.sh +0 -0
  376. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-web-dist-build.timer +0 -0
  377. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-web-rollback.sh +0 -0
  378. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/coord-web.service +0 -0
  379. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/deploy/node-shim.sh +0 -0
  380. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/ADR_COORD_TUI_CI.md +0 -0
  381. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  382. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/ADR_COORD_WEB_CI.md +0 -0
  383. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/ADR_COORD_WEB_DIST.md +0 -0
  384. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  385. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/AGENT_OPERATIONS.md +0 -0
  386. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/ARCHITECTURE.md +0 -0
  387. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/ARCH_SECURITY_GATES.md +0 -0
  388. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/COCKPIT.md +0 -0
  389. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/CONTROL_CENTER.md +0 -0
  390. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/COST_DISCIPLINE.md +0 -0
  391. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/CROSS_PLATFORM.md +0 -0
  392. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/CUSTOMER_FACING_APPS.md +0 -0
  393. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/CUSTOMER_PORTAL.md +0 -0
  394. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/DATA_STORE_SELECTION.md +0 -0
  395. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/DISASTER_RECOVERY.md +0 -0
  396. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/DRIVE_QUEUE.md +0 -0
  397. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/EPHEMERAL_WORKERS.md +0 -0
  398. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/FORGE_MIGRATION.md +0 -0
  399. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/GRAPHIFY_SETUP.md +0 -0
  400. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/ISSUE_GUIDANCE.md +0 -0
  401. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/MAC_MINI.md +0 -0
  402. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  403. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/NOTIFIER.md +0 -0
  404. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/OPENCODE_VERIFICATION.md +0 -0
  405. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/OPERATING_GOTCHAS.md +0 -0
  406. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/OPERATOR_GUIDES.md +0 -0
  407. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/ORACLE_LOOP.md +0 -0
  408. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/PHONE_WEBAPP.md +0 -0
  409. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/PIPELINE_V2.md +0 -0
  410. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/PLATFORM_EVOLUTION.md +0 -0
  411. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/SECOND_BACKEND.md +0 -0
  412. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/STORE_SERVICE.md +0 -0
  413. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  414. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/WEB_CONTROL_CENTER.md +0 -0
  415. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/WSL_WINDOWS_WORKER.md +0 -0
  416. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/mocks/web/README.md +0 -0
  417. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/mocks/web/_tokens.css +0 -0
  418. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/mocks/web/issue-detail.html +0 -0
  419. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/mocks/web/pipeline-narrow.html +0 -0
  420. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/docs/mocks/web/pipeline-wide.html +0 -0
  421. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/graphify-out/.gitignore +0 -0
  422. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/install-agent.sh +0 -0
  423. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/pyproject.toml +0 -0
  424. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/audit_review_verdict_overrides.py +0 -0
  425. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  426. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/azure-workers/build-worker-image.sh +0 -0
  427. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/azure-workers/coordinator-machine.py +0 -0
  428. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/azure-workers/dr-down.sh +0 -0
  429. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/azure-workers/dr-up.sh +0 -0
  430. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/azure-workers/epic-down.sh +0 -0
  431. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/azure-workers/epic-up.sh +0 -0
  432. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/azure-workers/preflight.sh +0 -0
  433. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/azure-workers/provision-server.sh +0 -0
  434. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/azure-workers/provision-worker.sh +0 -0
  435. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  436. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  437. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/azure-workers/throwaway-vm.sh +0 -0
  438. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/azure-workers/verify-github-token.sh +0 -0
  439. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/check_gh_argv_containment.py +0 -0
  440. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/codegen.py +0 -0
  441. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/comment_cruft.py +0 -0
  442. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/coord-test-runner.sh +0 -0
  443. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  444. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  445. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  446. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  447. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/coord-venv-rollback.sh +0 -0
  448. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/drive-batch.sh +0 -0
  449. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/extract-coord-tui.sh +0 -0
  450. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/fleet_watchdog.py +0 -0
  451. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/gen_board_fixture.py +0 -0
  452. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/gen_mock_index.py +0 -0
  453. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/lib/provision-core.sh +0 -0
  454. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/next_release_tag.py +0 -0
  455. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/provision-machine.sh +0 -0
  456. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/run_tests_in_populated_home.sh +0 -0
  457. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/run_tests_without_gh.sh +0 -0
  458. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/setup-macmini.sh +0 -0
  459. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/smoke_437_interactive.py +0 -0
  460. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/verify-provision-noble.sh +0 -0
  461. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/verify_878_review_capture.py +0 -0
  462. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/verify_release_published.py +0 -0
  463. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/scripts/verify_release_wheel.py +0 -0
  464. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/setup.cfg +0 -0
  465. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/SMOKE_SET.md +0 -0
  466. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/__init__.py +0 -0
  467. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/acceptance/ms-37/conftest.py +0 -0
  468. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/acceptance/ms-37/contract.md +0 -0
  469. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/acceptance/ms-37/manifest.yml +0 -0
  470. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  471. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  472. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/acceptance/ms-51/contract.md +0 -0
  473. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  474. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  475. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/acceptance/ms-51/manifest.yml +0 -0
  476. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  477. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/acceptance/ms-51/tsconfig.json +0 -0
  478. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  479. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/backends.py +0 -0
  480. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/conftest.py +0 -0
  481. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/board-pipeline-basic.json +0 -0
  482. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  483. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  484. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  485. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  486. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/playwright/all_pass.json +0 -0
  487. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  488. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/playwright/mixed_fail.json +0 -0
  489. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  490. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  491. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/playwright/skip.json +0 -0
  492. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/playwright/truncated.json +0 -0
  493. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  494. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  495. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  496. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  497. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
  498. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  499. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  500. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  501. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  502. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_acceptance.py +0 -0
  503. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_acceptance_drivers.py +0 -0
  504. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent.py +0 -0
  505. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_api_error.py +0 -0
  506. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_app.py +0 -0
  507. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_branch_base.py +0 -0
  508. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_branch_capture.py +0 -0
  509. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_config_free_1712.py +0 -0
  510. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_deploy_units_endpoint.py +0 -0
  511. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_dirty_worktree.py +0 -0
  512. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  513. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_graceful_shutdown_3649.py +0 -0
  514. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_graph_refresh.py +0 -0
  515. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_graph_self_heal.py +0 -0
  516. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_health_h3.py +0 -0
  517. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_idle_restart.py +0 -0
  518. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_push_failure.py +0 -0
  519. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_reap.py +0 -0
  520. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_repos_and_pull.py +0 -0
  521. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_restart_services_endpoint.py +0 -0
  522. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_skills_self_heal.py +0 -0
  523. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_startup_diagnostics.py +0 -0
  524. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_update.py +0 -0
  525. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_update_bluegreen.py +0 -0
  526. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_usage_limit.py +0 -0
  527. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_agent_zero_commit.py +0 -0
  528. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_ambient_home_isolation.py +0 -0
  529. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_app_drive.py +0 -0
  530. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_approve_capability_reroute_3241.py +0 -0
  531. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_approve_dependency_busy_2804.py +0 -0
  532. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_approve_reject_plan.py +0 -0
  533. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_approve_usage_gate.py +0 -0
  534. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_approved_work_2532.py +0 -0
  535. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_approved_work_2996.py +0 -0
  536. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_assignment_already_recorded_daemon.py +0 -0
  537. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_audit_log.py +0 -0
  538. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_audit_outcome.py +0 -0
  539. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_audit_query.py +0 -0
  540. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_auto_loop.py +0 -0
  541. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_auto_release_publish_2035.py +0 -0
  542. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_backend_selection.py +0 -0
  543. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_backup.py +0 -0
  544. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_base_checkout_restore.py +0 -0
  545. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_block_log.py +0 -0
  546. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_board_cap_762.py +0 -0
  547. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_board_doctor_followthrough.py +0 -0
  548. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_board_doctor_permissions.py +0 -0
  549. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_board_fixture.py +0 -0
  550. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_board_nightly_status.py +0 -0
  551. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_board_read_path.py +0 -0
  552. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_board_schema.py +0 -0
  553. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_board_service.py +0 -0
  554. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_board_state.py +0 -0
  555. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_board_wire.py +0 -0
  556. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_brain.py +0 -0
  557. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_branch_model.py +0 -0
  558. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_briefing_lessons.py +0 -0
  559. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_bug_intake.py +0 -0
  560. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_bugbash.py +0 -0
  561. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_build_worker_image_env_update.py +0 -0
  562. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cargo_cache.py +0 -0
  563. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_check_gh_argv_containment.py +0 -0
  564. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_ci_acceptance_gate_1950.py +0 -0
  565. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_ci_fix.py +0 -0
  566. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_ci_github.py +0 -0
  567. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_ci_gitlab.py +0 -0
  568. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_ci_parity_2091.py +0 -0
  569. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_ci_store.py +0 -0
  570. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_claim.py +0 -0
  571. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_claude_md_budget.py +0 -0
  572. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_claude_setup_token.py +0 -0
  573. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_acceptance.py +0 -0
  574. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_assign.py +0 -0
  575. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  576. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_assign_interactive_remote.py +0 -0
  577. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_assign_provider.py +0 -0
  578. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  579. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_audit.py +0 -0
  580. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_chat_continue.py +0 -0
  581. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_ci.py +0 -0
  582. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_codegen.py +0 -0
  583. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_decide.py +0 -0
  584. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_diagnose_capability_rules.py +0 -0
  585. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_diagnose_config_provenance.py +0 -0
  586. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_diagnose_forge_availability.py +0 -0
  587. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_diagnose_graph.py +0 -0
  588. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_diagnose_self.py +0 -0
  589. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_diagnose_test_coverage.py +0 -0
  590. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_doctor.py +0 -0
  591. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_doctor_config_free_1801.py +0 -0
  592. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  593. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  594. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_drive.py +0 -0
  595. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_drive_queue.py +0 -0
  596. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_drive_queue_investigate.py +0 -0
  597. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_drive_queue_stranded_prereq.py +0 -0
  598. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_escalate.py +0 -0
  599. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_fix_headless_review.py +0 -0
  600. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_gate_a.py +0 -0
  601. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_gates_next_action.py +0 -0
  602. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_inject_board_less.py +0 -0
  603. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_install_drift.py +0 -0
  604. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_install_skills.py +0 -0
  605. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_issue_close_wrong_repo.py +0 -0
  606. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_issue_comment.py +0 -0
  607. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_issue_create_label.py +0 -0
  608. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_issue_reopen.py +0 -0
  609. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_issue_view_list.py +0 -0
  610. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_issues.py +0 -0
  611. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_merge.py +0 -0
  612. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_milestone_assign.py +0 -0
  613. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_milestone_capture.py +0 -0
  614. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_milestone_chat_add_child.py +0 -0
  615. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_milestone_dispatch.py +0 -0
  616. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_milestone_gate_b.py +0 -0
  617. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_milestone_gate_c.py +0 -0
  618. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_milestone_order.py +0 -0
  619. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  620. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_milestone_ship.py +0 -0
  621. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_network.py +0 -0
  622. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_new_issue_chat.py +0 -0
  623. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_plans.py +0 -0
  624. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_portal.py +0 -0
  625. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_pr.py +0 -0
  626. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_pull_artifact.py +0 -0
  627. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_queue.py +0 -0
  628. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_reattach_sessions.py +0 -0
  629. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_refine_board.py +0 -0
  630. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_release_preflight.py +0 -0
  631. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_release_propagate.py +0 -0
  632. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_release_window.py +0 -0
  633. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_repo_2220.py +0 -0
  634. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  635. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_scorecard.py +0 -0
  636. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_serve_store_backend_3084.py +0 -0
  637. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_set_review_findings.py +0 -0
  638. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_smoke_nightly.py +0 -0
  639. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_smoke_nightly_sweep.py +0 -0
  640. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_status_advisory_terminal.py +0 -0
  641. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_status_contested_tag.py +0 -0
  642. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_status_invariant_alarms.py +0 -0
  643. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_status_machine_fault.py +0 -0
  644. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_status_merge_queue.py +0 -0
  645. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_status_nightly.py +0 -0
  646. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_status_provider.py +0 -0
  647. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_status_retried_3340.py +0 -0
  648. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_status_review_finalizing.py +0 -0
  649. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_status_supervisor_3366.py +0 -0
  650. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_status_test_failed_tag.py +0 -0
  651. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_status_usage_limit.py +0 -0
  652. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_sync_comments_873.py +0 -0
  653. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_test_plan.py +0 -0
  654. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_track.py +0 -0
  655. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_tui_update.py +0 -0
  656. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cli_wait.py +0 -0
  657. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_client.py +0 -0
  658. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_client_base_install.py +0 -0
  659. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_client_config_cache_atomic_3052.py +0 -0
  660. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_client_resource_migration_1946.py +0 -0
  661. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_commands_common.py +0 -0
  662. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_comment_cruft.py +0 -0
  663. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_comments.py +0 -0
  664. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_completion_summary.py +0 -0
  665. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_config.py +0 -0
  666. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_config_acceptance.py +0 -0
  667. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_config_audit.py +0 -0
  668. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_config_drift_check.py +0 -0
  669. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_config_effective.py +0 -0
  670. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_config_prereview_gate.py +0 -0
  671. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_config_pricing.py +0 -0
  672. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  673. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_config_usage_gate.py +0 -0
  674. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_confirm_test.py +0 -0
  675. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_conflict_fix.py +0 -0
  676. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_conflict_fix_semantic.py +0 -0
  677. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  678. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_coord_test.py +0 -0
  679. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  680. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_coord_test_runner_baseline.py +0 -0
  681. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_coord_test_runner_populated_home.py +0 -0
  682. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_coord_test_runner_routing.py +0 -0
  683. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_coord_test_runner_toolchain.py +0 -0
  684. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_coord_test_runner_venv_setup.py +0 -0
  685. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_coord_uat.py +0 -0
  686. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_coord_web_sse_restart_live.py +0 -0
  687. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_coordinator_machine.py +0 -0
  688. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_cross_platform_imports.py +0 -0
  689. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dao.py +0 -0
  690. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dashboard.py +0 -0
  691. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dashboard_api.py +0 -0
  692. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dashboard_fixture.py +0 -0
  693. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dashboard_reports.py +0 -0
  694. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dashboard_server.py +0 -0
  695. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dashboard_terminal.py +0 -0
  696. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dashboard_terminal_live.py +0 -0
  697. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_db.py +0 -0
  698. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dead_end.py +0 -0
  699. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_deploy_coord_db_backup.py +0 -0
  700. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_deploy_coord_web_dist.py +0 -0
  701. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_deploy_coord_web_rollback.py +0 -0
  702. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_deploy_db_backup_unit.py +0 -0
  703. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_deploy_drive_queue_unit.py +0 -0
  704. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_deploy_failure_notify_unit.py +0 -0
  705. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_deploy_manifest.py +0 -0
  706. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_deploy_notify_unit.py +0 -0
  707. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_deploy_units_lane.py +0 -0
  708. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_deploy_web_unit.py +0 -0
  709. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_deprecation_telemetry.py +0 -0
  710. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_deps.py +0 -0
  711. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_diagnose.py +0 -0
  712. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dirlink.py +0 -0
  713. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dispatch.py +0 -0
  714. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dispatch_liveness.py +0 -0
  715. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dispatch_target_validation.py +0 -0
  716. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dispatch_workers.py +0 -0
  717. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dist_name.py +0 -0
  718. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_done_housekeeping.py +0 -0
  719. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dr_azure_scripts.py +0 -0
  720. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dr_promote.py +0 -0
  721. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_dr_verify.py +0 -0
  722. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_drive.py +0 -0
  723. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_drive_machine_fault.py +0 -0
  724. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_drive_queue.py +0 -0
  725. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_drive_queue_blocked_rendering.py +0 -0
  726. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_drive_queue_launch_argv.py +0 -0
  727. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_drive_queue_max_parallel_config.py +0 -0
  728. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  729. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_drive_queue_roll_pending.py +0 -0
  730. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  731. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_drive_sessions_snapshot.py +0 -0
  732. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_drive_state.py +0 -0
  733. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_drive_tmux.py +0 -0
  734. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_entry_truth.py +0 -0
  735. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_epic_up_capability_detection.py +0 -0
  736. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  737. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_epic_up_image_provenance.py +0 -0
  738. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_errors.py +0 -0
  739. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_events.py +0 -0
  740. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_failure_class.py +0 -0
  741. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_failure_classifier.py +0 -0
  742. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_filelock.py +0 -0
  743. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  744. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_fix_escalation_classifier.py +0 -0
  745. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_fix_of_force_override.py +0 -0
  746. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_fleet_config_health.py +0 -0
  747. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_fleet_health_probes.py +0 -0
  748. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_fleet_health_snapshot.py +0 -0
  749. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_fleet_watchdog.py +0 -0
  750. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_forge_availability.py +0 -0
  751. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_freshness.py +0 -0
  752. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_gate_a.py +0 -0
  753. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_gate_b.py +0 -0
  754. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_gate_snapshot_staleness.py +0 -0
  755. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_gates.py +0 -0
  756. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  757. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_gen_mock_index.py +0 -0
  758. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_generated_rust_fixture.py +0 -0
  759. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_generated_rust_requests.py +0 -0
  760. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_generated_types_fixture.py +0 -0
  761. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_github_ops.py +0 -0
  762. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_github_throttle.py +0 -0
  763. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_goal.py +0 -0
  764. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_graph_health.py +0 -0
  765. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_graph_selfheal_absent_2237.py +0 -0
  766. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_gtk_native_driver.py +0 -0
  767. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_handoff.py +0 -0
  768. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_checks.py +0 -0
  769. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_cli.py +0 -0
  770. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_cli_graph.py +0 -0
  771. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_config.py +0 -0
  772. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_context.py +0 -0
  773. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_coord_tui_ci_pin.py +0 -0
  774. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_coord_web_ci_pin.py +0 -0
  775. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_deploy_lane_facts.py +0 -0
  776. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_fix.py +0 -0
  777. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_incident_regression.py +0 -0
  778. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_issues_sync_staleness.py +0 -0
  779. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_pr_churn.py +0 -0
  780. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_pypi.py +0 -0
  781. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_registry.py +0 -0
  782. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_release_cordon_probe.py +0 -0
  783. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_sustained_cpu.py +0 -0
  784. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_timer_active.py +0 -0
  785. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_toolchain.py +0 -0
  786. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_unit_drift.py +0 -0
  787. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_unit_enablement.py +0 -0
  788. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_health_wedged_drive_queue.py +0 -0
  789. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_hooks.py +0 -0
  790. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_housekeeping.py +0 -0
  791. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_human_attended_437.py +0 -0
  792. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_init.py +0 -0
  793. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_install_agent_capabilities_3515.py +0 -0
  794. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_install_agent_venv_2911.py +0 -0
  795. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_install_agent_wsl_bridge_3515.py +0 -0
  796. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_integration.py +0 -0
  797. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_interactive.py +0 -0
  798. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_interactive_briefing_echo.py +0 -0
  799. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_interactive_pane_log_2541.py +0 -0
  800. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_interactive_prefill_state.py +0 -0
  801. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_interactive_session_relaunch.py +0 -0
  802. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_interactive_test_verdict_backstop.py +0 -0
  803. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_interactive_token_attribution.py +0 -0
  804. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_interactive_worktree.py +0 -0
  805. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_invariant_alarms.py +0 -0
  806. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_issue_store_seam.py +0 -0
  807. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_issues_sync_status.py +0 -0
  808. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_key_spec.py +0 -0
  809. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_liveness_auditor.py +0 -0
  810. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_liveness_notify.py +0 -0
  811. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_lock_contention_ratchet.py +0 -0
  812. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_mac_native_driver.py +0 -0
  813. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_machine_fault.py +0 -0
  814. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_machine_metrics.py +0 -0
  815. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_machine_onboard.py +0 -0
  816. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_machine_pause.py +0 -0
  817. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_machine_stats.py +0 -0
  818. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_merge_queue.py +0 -0
  819. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_merge_verification.py +0 -0
  820. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_merge_verify.py +0 -0
  821. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_milestone_chat.py +0 -0
  822. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_milestone_dispatch.py +0 -0
  823. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_milestone_gate.py +0 -0
  824. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_milestone_order.py +0 -0
  825. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_milestone_seam.py +0 -0
  826. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_mock_author.py +0 -0
  827. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_model_tiering.py +0 -0
  828. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_models.py +0 -0
  829. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_models_config_labels.py +0 -0
  830. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_models_pinned_1650.py +0 -0
  831. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_native_fs_wait.py +0 -0
  832. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_native_pixels.py +0 -0
  833. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_needs_attention.py +0 -0
  834. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_network.py +0 -0
  835. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_new_issue_chat.py +0 -0
  836. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_next_release_tag.py +0 -0
  837. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_nightly_runner.py +0 -0
  838. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_nightly_smoke.py +0 -0
  839. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_nightly_status.py +0 -0
  840. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_nightly_store.py +0 -0
  841. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_no_eligible_host_3600.py +0 -0
  842. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_node_shim.py +0 -0
  843. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_notifier_baseline.py +0 -0
  844. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_notifier_cli.py +0 -0
  845. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_notifier_collect.py +0 -0
  846. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_notifier_config.py +0 -0
  847. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_notifier_drive_seam.py +0 -0
  848. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_notifier_isolation.py +0 -0
  849. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_notifier_predicate.py +0 -0
  850. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_notifier_quiet_hours.py +0 -0
  851. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_notifier_service.py +0 -0
  852. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_notify_drain.py +0 -0
  853. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_openapi.py +0 -0
  854. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_operational_defaults.py +0 -0
  855. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_overlap_fence.py +0 -0
  856. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_overlap_predict.py +0 -0
  857. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_packaged_deploy_units.py +0 -0
  858. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_parentage.py +0 -0
  859. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_paste_landed.py +0 -0
  860. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_pause_store_guard_recursion_3789.py +0 -0
  861. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  862. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_pipeline.py +0 -0
  863. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_plain_runner_smoke_3673.py +0 -0
  864. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_plan_followup_approve_plan_command.py +0 -0
  865. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_plan_followup_pr_command.py +0 -0
  866. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_plan_followup_review_command.py +0 -0
  867. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_plan_only.py +0 -0
  868. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_plan_parser.py +0 -0
  869. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_platform_paths.py +0 -0
  870. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_portal_bridge.py +0 -0
  871. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_portal_config.py +0 -0
  872. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_portal_store.py +0 -0
  873. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_portal_sync.py +0 -0
  874. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_pr_body_lint.py +0 -0
  875. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_preflight_size.py +0 -0
  876. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_prereqs.py +0 -0
  877. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_prereview_gate.py +0 -0
  878. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_production_db_guard.py +0 -0
  879. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_progress.py +0 -0
  880. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_provider_seam.py +0 -0
  881. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_providers.py +0 -0
  882. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_providers_config_labels.py +0 -0
  883. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_providers_pty.py +0 -0
  884. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_provision_core.py +0 -0
  885. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_provision_machine.py +0 -0
  886. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_py_rust_mirror_inventory.py +0 -0
  887. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_quiet_hours.py +0 -0
  888. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_quiet_hours_store_2146.py +0 -0
  889. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_reap_merged_sessions.py +0 -0
  890. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_reap_stale_interactive_tick.py +0 -0
  891. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_reconcile.py +0 -0
  892. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_reconcile_branch.py +0 -0
  893. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_reconcile_completions.py +0 -0
  894. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  895. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_reconcile_merges.py +0 -0
  896. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_reconcile_no_agent_record.py +0 -0
  897. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_reconcile_tick.py +0 -0
  898. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_reconcile_usage_limit_done.py +0 -0
  899. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_refine_chat.py +0 -0
  900. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_release_cordon_2101.py +0 -0
  901. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  902. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_release_cordon_deadlock_2240.py +0 -0
  903. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  904. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_release_cordon_stuck_2490.py +0 -0
  905. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_release_gate.py +0 -0
  906. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_release_propagate.py +0 -0
  907. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_release_propagate_threshold.py +0 -0
  908. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_release_roll_between_legs_2854.py +0 -0
  909. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_release_roll_window_handoff.py +0 -0
  910. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_release_unified_1242.py +0 -0
  911. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_release_verify.py +0 -0
  912. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_release_window.py +0 -0
  913. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_remote_auto_prune.py +0 -0
  914. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_remote_interactive_reaper.py +0 -0
  915. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_repo_add.py +0 -0
  916. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_repo_dormancy.py +0 -0
  917. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_repo_edit_2220.py +0 -0
  918. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_repo_graph_fleet_2237.py +0 -0
  919. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_repo_max_parallel_3423.py +0 -0
  920. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_repo_onboard_2220.py +0 -0
  921. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_report_public_export.py +0 -0
  922. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_report_result_push.py +0 -0
  923. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_reports.py +0 -0
  924. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_restart_cmd.py +0 -0
  925. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_retry.py +0 -0
  926. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_retry_advisory_1606.py +0 -0
  927. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_retry_escalation_classify_3360.py +0 -0
  928. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_retry_type_1636.py +0 -0
  929. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_revalidate.py +0 -0
  930. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_review.py +0 -0
  931. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_review_end_review_without_verdict.py +0 -0
  932. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_review_parse_failure_diagnostic.py +0 -0
  933. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_review_reaffirm.py +0 -0
  934. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_review_state.py +0 -0
  935. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_review_verdict_backstop.py +0 -0
  936. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_review_verdict_override_audit.py +0 -0
  937. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_review_verdict_relay.py +0 -0
  938. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_review_zero_commits.py +0 -0
  939. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_scoped_review_wiring.py +0 -0
  940. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_scorecard.py +0 -0
  941. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_self_health.py +0 -0
  942. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_serve.py +0 -0
  943. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_serve_app.py +0 -0
  944. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_serve_app_board_trim.py +0 -0
  945. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_serve_rest_routes.py +0 -0
  946. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_session.py +0 -0
  947. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_slice_issue_attribution.py +0 -0
  948. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_smoke.py +0 -0
  949. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  950. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_smoke_live_checkout_restore.py +0 -0
  951. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_smoke_plain_runner_3673.py +0 -0
  952. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_smoke_workflow.py +0 -0
  953. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_spend_ceiling.py +0 -0
  954. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_spend_ceiling_coordinator.py +0 -0
  955. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_split.py +0 -0
  956. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_split_work.py +0 -0
  957. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_sql_dialect.py +0 -0
  958. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_sqlite_connect_ratchet.py +0 -0
  959. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_stage_projection.py +0 -0
  960. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_stale_busy_reviewer_697.py +0 -0
  961. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_stalled_pipeline.py +0 -0
  962. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_state.py +0 -0
  963. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_state_review_findings_daemon.py +0 -0
  964. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_status_fleet_footer.py +0 -0
  965. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_stop_1567.py +0 -0
  966. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_store_contract.py +0 -0
  967. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_store_migrate.py +0 -0
  968. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_stuck.py +0 -0
  969. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  970. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_terminal_command.py +0 -0
  971. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_test_author.py +0 -0
  972. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_test_chat.py +0 -0
  973. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_test_orchestrator.py +0 -0
  974. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_test_report.py +0 -0
  975. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_test_verdict_parsing.py +0 -0
  976. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_test_verdict_transcript_floor.py +0 -0
  977. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_text_io_encoding_audit.py +0 -0
  978. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_thin_client_board_audit.py +0 -0
  979. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_thin_client_config_load_1080.py +0 -0
  980. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_thin_client_daemon_routing_906.py +0 -0
  981. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_throwaway_vm.py +0 -0
  982. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_tmux_host.py +0 -0
  983. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_tmux_session.py +0 -0
  984. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_transcript_floor.py +0 -0
  985. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_tui_pty_driver.py +0 -0
  986. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_uat_checks.py +0 -0
  987. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_upstream_gaps.py +0 -0
  988. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_usage.py +0 -0
  989. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_usage_limits.py +0 -0
  990. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_usage_rollup.py +0 -0
  991. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_venv_live_install_2121.py +0 -0
  992. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_version_single_source.py +0 -0
  993. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_watch.py +0 -0
  994. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_win_native_bridge.py +0 -0
  995. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_win_native_driver.py +0 -0
  996. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  997. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_worker_env_venv_isolation.py +0 -0
  998. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_worker_events.py +0 -0
  999. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_worker_image_pin_sync.py +0 -0
  1000. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_worker_safety.py +0 -0
  1001. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_worker_test_scoping.py +0 -0
  1002. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_worktree.py +0 -0
  1003. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  1004. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/tests/test_write_parity.py +0 -0
  1005. {code_coordinator-0.5.756 → code_coordinator-0.5.758}/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.756
3
+ Version: 0.5.758
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.756
3
+ Version: 0.5.758
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.756",
2
+ "tag": "0.5.758",
3
3
  "distance": 0,
4
- "node": "g6554d6ff10c266cf881ccdd2d5940ba15260475a",
4
+ "node": "g8f42c93d4e44ab72667aba0b52cb6a7b0631535b",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-11-11"
@@ -4521,6 +4521,22 @@ only re-propose the same split. Omit the marker entirely for every other \
4521
4521
  or a false/unmet premise that is NOT "already done") — those still read \
4522
4522
  off your prose exactly as before.
4523
4523
 
4524
+ With `needs-decomposition`, also put the split in your final message as \
4525
+ this block (one `## Child N:` per proposed issue, each with its own \
4526
+ `## Files` list); the coordinator files the children and supersedes this \
4527
+ issue automatically when it is well-formed:
4528
+
4529
+ SIZE_TRIAGE_VERDICT: split
4530
+ ## Child 1: <title>
4531
+ <one paragraph of scope>
4532
+
4533
+ ## Files
4534
+ - path/a.py
4535
+
4536
+ ## Child 2: <title>
4537
+ ...
4538
+ END_SIZE_TRIAGE
4539
+
4524
4540
  Progress reporting:
4525
4541
  - After each significant step (first build, test run, approach change), \
4526
4542
  output a status line in exactly this format:
@@ -2856,14 +2856,39 @@ def _diagnosis_options(
2856
2856
  return tuple(options)
2857
2857
 
2858
2858
 
2859
+ def _most_recent_leg_aid(repo_name: str, issue_number: int) -> str | None:
2860
+ """The ``assignment_id`` of the most recently dispatched leg against
2861
+ *repo_name*#*issue_number*, or ``None`` on no match or a read failure.
2862
+
2863
+ Reads `coord.state.load_dispatched`, the SAME dispatched-ledger read
2864
+ `coord log`/`coord sessions`/`coord status` already use (#2096) rather
2865
+ than a second history source — its own docstring guarantees the result
2866
+ is sorted oldest-first, so the last match is the most recent leg. Only
2867
+ used to make a board-doctor alert's suggested ``coord log <aid>``
2868
+ concrete; a missing or unreadable ledger must never block the alert
2869
+ itself, so this fails open to ``None`` rather than raising.
2870
+ """
2871
+ from coord.state import load_dispatched # noqa: PLC0415
2872
+
2873
+ try:
2874
+ matches = [
2875
+ d
2876
+ for d in load_dispatched()
2877
+ if d.get("repo_name") == repo_name and d.get("issue_number") == issue_number
2878
+ and d.get("assignment_id")
2879
+ ]
2880
+ except Exception: # noqa: BLE001 — best-effort enrichment only
2881
+ return None
2882
+ return str(matches[-1]["assignment_id"]) if matches else None
2883
+
2884
+
2859
2885
  def _alert_resolution(row: StuckRow, repo_name: str, issue_number: int) -> tuple[str, str]:
2860
2886
  """``(reason_suffix, proposed_command)`` for *row*'s cause (#3761's C4).
2861
2887
 
2862
2888
  Every alert-only cause gets a one-line, ready-to-run operator command
2863
2889
  rather than a self-executing fix — the whole point of this tier is that
2864
2890
  recovery needs a human decision. ``"coord status"`` is the fallback for
2865
- causes with no single-command remedy; the two causes below each have
2866
- one:
2891
+ causes with no single-command remedy; the causes below each have one:
2867
2892
 
2868
2893
  * ``queue_diagnose.CAUSE_GATE_BLOCKED`` on a **merge-queue** row — this
2869
2894
  cause is only ever minted there (`_MERGE_QUEUE_STUCK_CAUSE`) from the
@@ -2888,7 +2913,49 @@ def _alert_resolution(row: StuckRow, repo_name: str, issue_number: int) -> tuple
2888
2913
  is actually true rather than claiming a pause that doesn't exist;
2889
2914
  the command stays ``coord status`` — the streak clears on its own
2890
2915
  the next time the base goes green.
2916
+ * #3979: :data:`queue_diagnose.CAUSE_NEEDS_DECOMPOSITION`/
2917
+ :data:`queue_diagnose.CAUSE_PREMISE_REFUSAL`/
2918
+ :data:`queue_diagnose.CAUSE_UPSTREAM_GAP_PARK` — a row the tick's
2919
+ own parked pre-pass already treats as terminal (the worker/upstream
2920
+ park that parked it wrote one of `coord.models`'
2921
+ ``NEEDS_DECOMPOSITION_MARKER``/``PREMISE_REFUSAL_MARKER``/
2922
+ ``UPSTREAM_GAP_PARK_MARKER`` into `last_reason`). There is no
2923
+ single-command *fix* for any of the three — each needs an
2924
+ operator judgment call (decompose, re-scope, or wait on a release)
2925
+ — so unlike every other alert-only cause above the "command" here
2926
+ is the read-only inspection step, never ``coord status``: the whole
2927
+ point is naming the SPECIFIC action, not pointing at the generic
2928
+ fleet view.
2891
2929
  """
2930
+ if row.cause in (
2931
+ queue_diagnose.CAUSE_NEEDS_DECOMPOSITION,
2932
+ queue_diagnose.CAUSE_PREMISE_REFUSAL,
2933
+ queue_diagnose.CAUSE_UPSTREAM_GAP_PARK,
2934
+ ):
2935
+ command = f"coord log {_most_recent_leg_aid(repo_name, issue_number) or '<aid>'}"
2936
+ action = {
2937
+ queue_diagnose.CAUSE_NEEDS_DECOMPOSITION: (
2938
+ "decompose the issue into the sub-issues already proposed "
2939
+ "on it (posted as a comment by the coordinator), then "
2940
+ "`coord drive-queue remove` + `add` for the replacement(s)"
2941
+ ),
2942
+ queue_diagnose.CAUSE_PREMISE_REFUSAL: (
2943
+ "re-scope or close the issue once the missing prerequisite "
2944
+ "it named is confirmed, then `coord drive-queue clear-refusal` "
2945
+ "and `remove` + `add` for a fresh row"
2946
+ ),
2947
+ queue_diagnose.CAUSE_UPSTREAM_GAP_PARK: (
2948
+ "wait for the named release to land or the gap to be "
2949
+ "confirmed, then `coord drive-queue remove` + `add` for a "
2950
+ "fresh row"
2951
+ ),
2952
+ }[row.cause]
2953
+ return (
2954
+ f" — this row is parked terminal, not stuck; no fix-it leg or "
2955
+ f"relaunch can resolve it — {action}; re-read its own evidence "
2956
+ f"first with: `{command}`",
2957
+ command,
2958
+ )
2892
2959
  if row.cause == queue_diagnose.CAUSE_GATE_BLOCKED:
2893
2960
  if row.queue == "merge-queue":
2894
2961
  command = (
@@ -1319,9 +1319,13 @@ def file_and_queue_split_proposal(
1319
1319
  proposal: "SplitProposal",
1320
1320
  verification: "SplitVerification",
1321
1321
  repo: "Repo",
1322
+ origin: str = "preflight size-triage review",
1322
1323
  ) -> int:
1323
1324
  """File *proposal*'s chunks as a real epic + children and queue them.
1324
1325
 
1326
+ *origin* names what proposed the split; it is quoted in the epic body
1327
+ and in the comment closing the superseded original.
1328
+
1325
1329
  Called only after :func:`coord.preflight_size.verify_split_proposal` has
1326
1330
  returned ``ok=True`` for *verification* — this function trusts
1327
1331
  ``verification.work_order`` and ``verification.epic_body`` without
@@ -1365,9 +1369,8 @@ def file_and_queue_split_proposal(
1365
1369
 
1366
1370
  epic_body = (
1367
1371
  f"{proposal.rationale}\n\n"
1368
- f"Split from #{proposal.issue_number} by the preflight "
1369
- "size-triage review. Children are filed below and queued in "
1370
- "overlap order."
1372
+ f"Split from #{proposal.issue_number} by the {origin}. Children "
1373
+ "are filed below and queued in overlap order."
1371
1374
  )
1372
1375
  epic = github_ops.create_issue(
1373
1376
  repo.github,
@@ -1419,8 +1422,7 @@ def file_and_queue_split_proposal(
1419
1422
  proposal.issue_number,
1420
1423
  comment=(
1421
1424
  f"Superseded by #{epic_number} — split into "
1422
- f"{len(proposal.chunks)} child issue(s) per the size-triage "
1423
- "review."
1425
+ f"{len(proposal.chunks)} child issue(s) per the {origin}."
1424
1426
  ),
1425
1427
  force=True,
1426
1428
  )
@@ -1438,6 +1440,105 @@ def file_and_queue_split_proposal(
1438
1440
  return epic_number
1439
1441
 
1440
1442
 
1443
+ #: The ``origin`` text :func:`auto_split_needs_decomposition` passes to
1444
+ #: :func:`file_and_queue_split_proposal`.
1445
+ NEEDS_DECOMPOSITION_SPLIT_ORIGIN = "work leg's needs-decomposition split proposal"
1446
+
1447
+
1448
+ def auto_split_needs_decomposition(
1449
+ final_message: str | None,
1450
+ *,
1451
+ config: "Config",
1452
+ repo_name: str,
1453
+ issue_number: int,
1454
+ ) -> int | None:
1455
+ """File the split a ``needs-decomposition`` work leg proposed, if it
1456
+ proposed one in the machine-readable size-triage format.
1457
+
1458
+ *final_message* is the worker's own final message. The worker states its
1459
+ split as a ``SIZE_TRIAGE_VERDICT: split`` / ``## Child N:`` /
1460
+ ``## Files`` / ``END_SIZE_TRIAGE`` block — the same wire format the
1461
+ size-triage agent uses, parsed by :func:`parse_size_triage_response` —
1462
+ and the split then goes through the identical
1463
+ :func:`coord.preflight_size.verify_split_proposal` gate and
1464
+ :func:`file_and_queue_split_proposal` filer a size-triage SPLIT verdict
1465
+ does: an epic plus chained children are filed and queued, and the
1466
+ original is closed as superseded. The original's own (parked) drive-
1467
+ queue row is then removed, since the issue it tracks is closed.
1468
+
1469
+ Returns the new epic's issue number, or ``None`` when nothing was filed:
1470
+ the repo has not opted into the preflight decomposition guard
1471
+ (:meth:`coord.config.Config.preflight_guard_enabled` — the same opt-in
1472
+ that governs every other automatic split), the message carries no
1473
+ complete split block (prose-only proposals stay with the coordinator,
1474
+ exactly as before), the original issue is already closed (a replayed
1475
+ transition, or someone already decomposed it), or the proposal fails the
1476
+ verification gate — a broken epic is never filed. A failure *inside*
1477
+ the filer propagates: by then real issues exist on GitHub.
1478
+ """
1479
+ text = final_message or ""
1480
+ if not _SIZE_TRIAGE_VERDICT_RE.search(text):
1481
+ return None
1482
+ repo = config.repo(repo_name)
1483
+ if repo is None or not config.preflight_guard_enabled(repo_name):
1484
+ return None
1485
+
1486
+ from coord import github_ops
1487
+ from coord.preflight_size import verify_split_proposal
1488
+
1489
+ issue_data = github_ops.get_issue(repo.github, issue_number)
1490
+ if str(issue_data.get("state") or "").upper() == "CLOSED":
1491
+ return None
1492
+ issue_title = issue_data.get("title") or f"issue #{issue_number}"
1493
+
1494
+ try:
1495
+ proposal = parse_size_triage_response(
1496
+ text,
1497
+ repo_name=repo_name,
1498
+ issue_number=issue_number,
1499
+ issue_title=issue_title,
1500
+ )
1501
+ except SizeTriageError as exc:
1502
+ _log.info(
1503
+ "auto_split_needs_decomposition: %s#%s split block unparseable: %s",
1504
+ repo_name, issue_number, exc,
1505
+ )
1506
+ return None
1507
+ if proposal is None:
1508
+ return None
1509
+ proposal.rationale = (
1510
+ "a work leg concluded this issue needs decomposition and proposed "
1511
+ "this split"
1512
+ )
1513
+
1514
+ verification = verify_split_proposal(proposal)
1515
+ if not verification.ok:
1516
+ _log.info(
1517
+ "auto_split_needs_decomposition: %s#%s split rejected: %s",
1518
+ repo_name, issue_number, verification.reason,
1519
+ )
1520
+ return None
1521
+
1522
+ epic_number = file_and_queue_split_proposal(
1523
+ proposal=proposal,
1524
+ verification=verification,
1525
+ repo=repo,
1526
+ origin=NEEDS_DECOMPOSITION_SPLIT_ORIGIN,
1527
+ )
1528
+
1529
+ from coord.state import dequeue_drive_queue
1530
+
1531
+ try:
1532
+ dequeue_drive_queue(repo_name, issue_number, operator=False)
1533
+ except Exception as exc: # noqa: BLE001
1534
+ _log.warning(
1535
+ "auto_split_needs_decomposition: filed epic #%s but could not "
1536
+ "dequeue superseded %s#%s: %s",
1537
+ epic_number, repo_name, issue_number, exc,
1538
+ )
1539
+ return epic_number
1540
+
1541
+
1441
1542
  def dispatch_size_triage_review(
1442
1543
  *,
1443
1544
  repo_cfg: "Repo",
@@ -2364,6 +2364,55 @@ def _capture_upstream_gaps(transition: Transition, entry: dict, record: dict) ->
2364
2364
  )
2365
2365
 
2366
2366
 
2367
+ def _capture_needs_decomposition_split(
2368
+ transition: Transition, entry: dict, record: dict
2369
+ ) -> None:
2370
+ """File the split a ``needs-decomposition`` work leg proposed in the
2371
+ machine-readable size-triage block — see
2372
+ :func:`coord.decomposition_chat.auto_split_needs_decomposition`.
2373
+
2374
+ Reads the worker's final message from the row's
2375
+ ``needs_decomposition_reason`` first, falling back to the final message
2376
+ in the worker log. Best-effort: any failure is logged and the issue
2377
+ stays parked for the coordinator, the same as a prose-only proposal.
2378
+ """
2379
+ from coord.decomposition_chat import ( # noqa: PLC0415
2380
+ SIZE_TRIAGE_END_MARKER,
2381
+ auto_split_needs_decomposition,
2382
+ )
2383
+
2384
+ if (record.get("type") or "work") != "work" or not transition.issue_number:
2385
+ return
2386
+ try:
2387
+ text = entry.get("needs_decomposition_reason") or ""
2388
+ if SIZE_TRIAGE_END_MARKER not in text:
2389
+ from coord.upstream_gaps import ( # noqa: PLC0415
2390
+ final_message_from_log_text,
2391
+ )
2392
+
2393
+ text = final_message_from_log_text(_worker_log_text(transition, entry))
2394
+ if SIZE_TRIAGE_END_MARKER not in text:
2395
+ return
2396
+ from coord.config import load as _load_config # noqa: PLC0415
2397
+
2398
+ epic_number = auto_split_needs_decomposition(
2399
+ text,
2400
+ config=_load_config(),
2401
+ repo_name=transition.repo_name,
2402
+ issue_number=transition.issue_number,
2403
+ )
2404
+ if epic_number is not None:
2405
+ log.info(
2406
+ "_capture_needs_decomposition_split: %s#%s split into epic #%s",
2407
+ transition.repo_name, transition.issue_number, epic_number,
2408
+ )
2409
+ except Exception as exc: # noqa: BLE001
2410
+ log.warning(
2411
+ "_capture_needs_decomposition_split: failed for %s: %s",
2412
+ transition.assignment_id, exc,
2413
+ )
2414
+
2415
+
2367
2416
  def _capture_smoke_tests(transition: Transition, entry: dict) -> None:
2368
2417
  """#252: parse the worker's SMOKE_TESTS block and persist it on the row.
2369
2418
 
@@ -4966,6 +5015,9 @@ def post_transition(transition: Transition, record: dict, entry: dict) -> None:
4966
5015
  transition.event,
4967
5016
  branch=entry.get("branch"),
4968
5017
  )
5018
+ # Runs after `mark_notified` so a split that files issues and then
5019
+ # fails partway can never be replayed into a duplicate epic.
5020
+ _capture_needs_decomposition_split(transition, entry, record)
4969
5021
  else:
4970
5022
  # #1605/#1797: carry the agent's own diagnostic (a usage-limit kill,
4971
5023
  # a terminal API-error classification, or an auth-shaped push
@@ -60,6 +60,11 @@ from dataclasses import dataclass
60
60
  from typing import TYPE_CHECKING, Any, Protocol
61
61
 
62
62
  from coord.drive_queue import QueueEntry, is_unreachable_wait_shape
63
+ from coord.models import (
64
+ is_needs_decomposition_reason,
65
+ is_premise_refusal_reason,
66
+ is_upstream_gap_park_reason,
67
+ )
63
68
 
64
69
  if TYPE_CHECKING:
65
70
  from coord.gates import GateReport
@@ -68,11 +73,14 @@ _log = logging.getLogger(__name__)
68
73
 
69
74
  __all__ = [
70
75
  "CAUSE_INTEGRATION_RED",
76
+ "CAUSE_NEEDS_DECOMPOSITION",
71
77
  "CAUSE_NEVER_DISPATCHED",
78
+ "CAUSE_PREMISE_REFUSAL",
72
79
  "CAUSE_PROSE",
73
80
  "CAUSE_REVIEW_STALE",
74
81
  "CAUSE_TEST_STALE",
75
82
  "CAUSE_UNKNOWN",
83
+ "CAUSE_UPSTREAM_GAP_PARK",
76
84
  "CONFIDENCE_HIGH",
77
85
  "CONFIDENCE_LOW",
78
86
  "CONFIDENCE_MEDIUM",
@@ -115,6 +123,37 @@ __all__ = [
115
123
  # what Phase 2's scoping would count. Keep them stable: a renamed slug
116
124
  # silently splits a bucket in the corpus.
117
125
 
126
+ #: #3979: a row the tick's own parked pre-pass (`coord.drive_queue`'s
127
+ #: parked branch inside its main loop) ALREADY recognises as terminal from
128
+ #: `entry.last_reason` carrying `coord.models.NEEDS_DECOMPOSITION_MARKER`
129
+ #: (`coord.models.is_needs_decomposition_reason`) — a worker leg concluded
130
+ #: the issue itself needs splitting and pushed 0 commits by design, so
131
+ #: there is, and never will be, a PR. Checked FIRST in `_RULES`, strictly
132
+ #: ahead of every PR-shaped rule (`_rule_pr_merged`/`_rule_no_pr`/etc.):
133
+ #: without that ordering a parked needs-decomposition row reads
134
+ #: byte-for-byte like `CAUSE_NO_PR` — which IS investigate-eligible — and
135
+ #: board-doctor's sweep dispatches a fix-it leg that re-reports the
136
+ #: identical split proposal (#3979's incident: two legs, zero commits,
137
+ #: then a `coord status` alert that never mentions decomposition at all).
138
+ #: Never auto-dispatch-eligible and never on the investigate tier — see
139
+ #: `coord.board_doctor_policy`'s module docstring: nothing on the board
140
+ #: signals when decomposition has happened, so there is no external
141
+ #: verdict a fix-it leg or an auto-action could ever observe.
142
+ CAUSE_NEEDS_DECOMPOSITION = "needs-decomposition"
143
+ #: #3979 audit of the sibling terminal park `coord.drive_queue`'s parked
144
+ #: pre-pass already skips (`coord.models.is_premise_refusal_reason`): the
145
+ #: same "no PR, no external verdict, never auto-dispatch" shape as
146
+ #: :data:`CAUSE_NEEDS_DECOMPOSITION` above, for a worker that found a named
147
+ #: prerequisite missing rather than the issue needing a split. Checked
148
+ #: immediately after it, same ordering rationale.
149
+ CAUSE_PREMISE_REFUSAL = "premise-refusal"
150
+ #: #3979 audit of the other sibling terminal park
151
+ #: (`coord.models.is_upstream_gap_park_reason`, written by
152
+ #: `coord.upstream_gaps._park_queue_row` rather than a worker exit): the
153
+ #: same shape again — no PR, no external verdict, never auto-dispatch —
154
+ #: for a row parked on a confirmed upstream gap (unreleased symbol, or a
155
+ #: recent-close dedup).
156
+ CAUSE_UPSTREAM_GAP_PARK = "upstream-gap-park"
118
157
  CAUSE_PR_MERGED = "pr-merged"
119
158
  CAUSE_PR_CLOSED = "pr-closed"
120
159
  CAUSE_MERGE_CONFLICT = "merge-conflict"
@@ -195,6 +234,9 @@ CAUSE_TEST_STALE = "test-stale"
195
234
  CAUSE_UNKNOWN = "unknown"
196
235
 
197
236
  CAUSE_PROSE: dict[str, str] = {
237
+ CAUSE_NEEDS_DECOMPOSITION: "a worker leg already concluded the issue needs splitting and parked the row by design (#3931) — not fixable by any fix-it leg or relaunch; decompose the issue into the proposed sub-issues and clear the row by hand",
238
+ CAUSE_PREMISE_REFUSAL: "a worker leg already concluded a named prerequisite is missing and parked the row by design (#3164) — not fixable by any fix-it leg or relaunch; re-scope or close the issue once the prerequisite is confirmed, then clear the row by hand",
239
+ CAUSE_UPSTREAM_GAP_PARK: "the row is parked on a confirmed upstream gap (#3977) — not fixable by any fix-it leg or relaunch; clear the row by hand once the release lands or the gap is confirmed",
198
240
  CAUSE_PR_MERGED: "the PR merged while the entry sat stalled, so whatever the queue said had outlived its subject",
199
241
  CAUSE_PR_CLOSED: "the PR was closed while the entry sat stalled, so the queue is waiting on work that no longer exists",
200
242
  CAUSE_MERGE_CONFLICT: "GitHub reports the PR as conflicting; the branch needs a rebase before anything else can be true",
@@ -587,6 +629,46 @@ def _stated_still_supported(family: str, live: LiveState) -> bool | None:
587
629
  # probes, never average them.
588
630
 
589
631
 
632
+ def _rule_terminal_park(entry: QueueEntry, live: LiveState) -> tuple[str, str, str] | None:
633
+ """#3979: classify a row the tick's own parked pre-pass already treats
634
+ as terminal, straight off ``entry.last_reason`` — never off any live
635
+ probe. Checked FIRST in :data:`_RULES`, strictly ahead of every
636
+ PR-shaped rule below: a terminal park has, by construction, no PR (the
637
+ worker that parked it pushed 0 commits), so :func:`_rule_no_pr` would
638
+ otherwise claim every one of these, and :data:`CAUSE_NO_PR` IS
639
+ investigate-eligible — which is exactly the #3979 incident, a fix-it
640
+ leg relaunched against a row nothing can fix by relaunching.
641
+
642
+ The three predicates this reads
643
+ (``coord.models.is_needs_decomposition_reason``/
644
+ ``is_premise_refusal_reason``/``is_upstream_gap_park_reason``) are the
645
+ SAME ones ``coord.drive_queue``'s own parked pre-pass already trusts
646
+ to leave these rows parked rather than resuming them (#2096: one
647
+ question, one answer) — this can never answer "terminal" for a row
648
+ that tick would itself flip back to ``waiting``.
649
+ """
650
+ reason = entry.last_reason
651
+ if is_needs_decomposition_reason(reason):
652
+ return (
653
+ CAUSE_NEEDS_DECOMPOSITION,
654
+ CONFIDENCE_HIGH,
655
+ f"last_reason: needs-decomposition park (#3931) — {reason}",
656
+ )
657
+ if is_premise_refusal_reason(reason):
658
+ return (
659
+ CAUSE_PREMISE_REFUSAL,
660
+ CONFIDENCE_HIGH,
661
+ f"last_reason: premise-refusal park (#3164) — {reason}",
662
+ )
663
+ if is_upstream_gap_park_reason(reason):
664
+ return (
665
+ CAUSE_UPSTREAM_GAP_PARK,
666
+ CONFIDENCE_HIGH,
667
+ f"last_reason: upstream-gap park (#3977) — {reason}",
668
+ )
669
+ return None
670
+
671
+
590
672
  def _rule_pr_merged(entry: QueueEntry, live: LiveState) -> tuple[str, str, str] | None:
591
673
  if live.pr_state == "MERGED":
592
674
  return CAUSE_PR_MERGED, CONFIDENCE_HIGH, _pr_line(live)
@@ -752,6 +834,10 @@ def _rule_agent_unreachable(
752
834
 
753
835
 
754
836
  _RULES = (
837
+ # #3979: a terminal park's marker in `entry.last_reason` wins outright,
838
+ # strictly before every PR-shaped rule below — see
839
+ # `_rule_terminal_park`'s own docstring for why the ordering matters.
840
+ _rule_terminal_park,
755
841
  _rule_pr_merged,
756
842
  _rule_pr_closed,
757
843
  _rule_conflict,
@@ -2358,6 +2358,86 @@ class TestNeverDispatchedRowReachesTheSweep:
2358
2358
  assert alert.count == 0
2359
2359
 
2360
2360
 
2361
+ class TestNeedsDecompositionRowNeverReDispatches:
2362
+ """#3979: a row the tick's own parked pre-pass already treats as
2363
+ terminal (a `WORK_OUTCOME: needs-decomposition` worker exit, parked by
2364
+ `coord.models.NEEDS_DECOMPOSITION_MARKER`) must classify as its own
2365
+ cause — never `queue_diagnose.CAUSE_NO_PR`, which IS investigate-
2366
+ eligible — and the sweep must take no auto-dispatch action for it,
2367
+ in a dry run or a real one.
2368
+
2369
+ Same end-to-end shape as `TestNeverDispatchedRowReachesTheSweep` above:
2370
+ `queue_diagnose.run_pass` -> `coord.board_doctor.drive_queue_rows` ->
2371
+ `sweep`, with the real `policy_tier_of` — load-bearing evidence the
2372
+ row is actually routed to the alert tier, not a tautology.
2373
+ """
2374
+
2375
+ def _rows(self) -> list:
2376
+ from coord.drive_queue import STATE_PARKED
2377
+ from coord.models import NEEDS_DECOMPOSITION_MARKER
2378
+ from coord.queue_diagnose import LiveState
2379
+
2380
+ entry = QueueEntry(
2381
+ repo="acme/widgets",
2382
+ issue=3979,
2383
+ state=STATE_PARKED,
2384
+ attempts=1,
2385
+ last_reason=(
2386
+ f"{NEEDS_DECOMPOSITION_MARKER} split into: (1) the API "
2387
+ "surface, (2) the CLI wiring"
2388
+ ),
2389
+ )
2390
+ episode = {
2391
+ "key": entry.key,
2392
+ "state": STATE_PARKED,
2393
+ "diagnoses": 0,
2394
+ "diagnosed_cause": "",
2395
+ }
2396
+
2397
+ class _NoPrProbe:
2398
+ def probe(self, entry_):
2399
+ return LiveState(pr_number=None, pr_state="none")
2400
+
2401
+ diagnoses = queue_diagnose.run_pass([entry], [episode], probe=_NoPrProbe())
2402
+ return drive_queue_rows(diagnoses)
2403
+
2404
+ def test_classifies_as_needs_decomposition_not_no_pr(self) -> None:
2405
+ [row] = self._rows()
2406
+ assert row.cause == queue_diagnose.CAUSE_NEEDS_DECOMPOSITION
2407
+ assert row.cause != queue_diagnose.CAUSE_NO_PR
2408
+
2409
+ def test_dry_run_sweep_dispatches_nothing(self) -> None:
2410
+ from coord.board_doctor_policy import policy_tier_of
2411
+
2412
+ rows = self._rows()
2413
+ auto = _Recorder()
2414
+ alert = _Recorder()
2415
+ sweep(
2416
+ rows,
2417
+ tier_of=policy_tier_of,
2418
+ auto_dispatchers={queue_diagnose.CAUSE_NEEDS_DECOMPOSITION: auto},
2419
+ alert_dispatcher=alert,
2420
+ dry_run=True,
2421
+ )
2422
+ assert auto.count == 0
2423
+ assert alert.count == 0
2424
+
2425
+ def test_real_sweep_alerts_but_never_auto_dispatches(self) -> None:
2426
+ from coord.board_doctor_policy import policy_tier_of
2427
+
2428
+ rows = self._rows()
2429
+ auto = _Recorder()
2430
+ alert = _Recorder()
2431
+ sweep(
2432
+ rows,
2433
+ tier_of=policy_tier_of,
2434
+ auto_dispatchers={queue_diagnose.CAUSE_NEEDS_DECOMPOSITION: auto},
2435
+ alert_dispatcher=alert,
2436
+ )
2437
+ assert auto.count == 0
2438
+ assert alert.count == 1
2439
+
2440
+
2361
2441
  class TestParseNoProgressMinutes:
2362
2442
  """#3888 review: `no_progress_minutes` validates the same way its
2363
2443
  sibling `followthrough_cap` already does — tested here since
@@ -164,6 +164,13 @@ class TestPolicyTierOf:
164
164
  queue_diagnose.CAUSE_NOTHING_BLOCKING,
165
165
  queue_diagnose.CAUSE_CI_GREEN,
166
166
  CAUSE_BASELINE_RED,
167
+ # #3979: a terminal park has no external verdict to resume it,
168
+ # so it must never auto-dispatch or compete for the shared
169
+ # investigate-tier budget — see TestAlertResolutionTerminalPark
170
+ # below for the alert text itself.
171
+ queue_diagnose.CAUSE_NEEDS_DECOMPOSITION,
172
+ queue_diagnose.CAUSE_PREMISE_REFUSAL,
173
+ queue_diagnose.CAUSE_UPSTREAM_GAP_PARK,
167
174
  ):
168
175
  assert cause not in ALLOWLIST
169
176
  assert cause not in INVESTIGATE_CAUSES
@@ -772,6 +779,46 @@ class TestEscalationAlertDispatcher:
772
779
  assert "redesign" in reason
773
780
 
774
781
 
782
+ class TestTerminalParkAlert:
783
+ """#3979: a row the sweep classifies as a terminal park (needs-
784
+ decomposition/premise-refusal/upstream-gap) must alert with the real
785
+ action named, never the generic ``coord status`` fallback — and must
786
+ never auto-dispatch or escalate to the investigate tier."""
787
+
788
+ @pytest.mark.parametrize(
789
+ ("cause", "expected_fragment"),
790
+ [
791
+ (queue_diagnose.CAUSE_NEEDS_DECOMPOSITION, "decompose"),
792
+ (queue_diagnose.CAUSE_PREMISE_REFUSAL, "re-scope"),
793
+ (queue_diagnose.CAUSE_UPSTREAM_GAP_PARK, "release"),
794
+ ],
795
+ )
796
+ def test_alert_names_the_real_action_not_coord_status(
797
+ self, cause: str, expected_fragment: str,
798
+ ) -> None:
799
+ row = _row(f"acme/widgets#{hash(cause) % 1000}", cause)
800
+
801
+ assert escalation_alert_dispatcher(row) is True
802
+
803
+ repo, issue = board_doctor_policy._parse_row_key(row.key)
804
+ escalation = state.get_drive_escalation(repo, issue)
805
+ assert escalation is not None
806
+ assert escalation["proposed_command"] != "coord status"
807
+ assert escalation["proposed_command"].startswith("coord log ")
808
+ assert expected_fragment in escalation["reason"]
809
+ assert "parked terminal" in escalation["reason"]
810
+
811
+ def test_sweep_takes_no_dispatch_action_for_a_needs_decomposition_row(
812
+ self,
813
+ ) -> None:
814
+ # Not in ALLOWLIST/INVESTIGATE_CAUSES -> policy_tier_of reads
815
+ # TIER_ALERT, so `coord.board_doctor.sweep` routes it through the
816
+ # alert dispatcher, never a fix-it leg or a mechanical requeue.
817
+ assert queue_diagnose.CAUSE_NEEDS_DECOMPOSITION not in ALLOWLIST
818
+ assert queue_diagnose.CAUSE_NEEDS_DECOMPOSITION not in INVESTIGATE_CAUSES
819
+ assert policy_tier_of(queue_diagnose.CAUSE_NEEDS_DECOMPOSITION) == TIER_ALERT
820
+
821
+
775
822
  class TestClassifyEnvProbeOutput:
776
823
  """The text classifier behind the baseline-red env diagnosis."""
777
824