code-coordinator 0.5.757__tar.gz → 0.5.759__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 (1006) hide show
  1. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. code_coordinator-0.5.759/code_coordinator.egg-info/scm_version.json +8 -0
  4. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/agent.py +16 -0
  5. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/drive_queue.py +33 -15
  6. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/decomposition_chat.py +106 -5
  7. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/drive_queue.py +237 -31
  8. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/wedged_drive_queue.py +22 -13
  9. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/notifier/collect.py +98 -3
  10. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/notify.py +52 -0
  11. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_drive_queue.py +129 -1
  12. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_decomposition_chat.py +149 -0
  13. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_drive_queue.py +176 -0
  14. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_notifier_collect.py +146 -0
  15. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_notify.py +94 -0
  16. code_coordinator-0.5.757/code_coordinator.egg-info/scm_version.json +0 -8
  17. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/.claude/commands/board.md +0 -0
  18. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/.claude/commands/complete-session.md +0 -0
  19. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/.claude/commands/coordinator.md +0 -0
  20. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/.githooks/_lib.sh +0 -0
  21. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/.githooks/post-checkout +0 -0
  22. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/.githooks/post-commit +0 -0
  23. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/.githooks/post-merge +0 -0
  24. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  25. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/.github/coord-ci-acceptance.yml +0 -0
  26. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/.github/workflows/auto-release.yml +0 -0
  27. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/.github/workflows/publish.yml +0 -0
  28. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/.github/workflows/test.yml +0 -0
  29. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/.gitignore +0 -0
  30. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/CLAUDE.md +0 -0
  31. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/GOAL.md +0 -0
  32. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/LICENSE +0 -0
  33. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/MANIFEST.in +0 -0
  34. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/README.md +0 -0
  35. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/code_coordinator.egg-info/SOURCES.txt +0 -0
  36. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/code_coordinator.egg-info/dependency_links.txt +0 -0
  37. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/code_coordinator.egg-info/entry_points.txt +0 -0
  38. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/code_coordinator.egg-info/requires.txt +0 -0
  39. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/code_coordinator.egg-info/scm_file_list.json +0 -0
  40. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/code_coordinator.egg-info/top_level.txt +0 -0
  41. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/__init__.py +0 -0
  42. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/_board_mapping.py +0 -0
  43. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/acceptance.py +0 -0
  44. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/acceptance_drivers.py +0 -0
  45. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/agent_app.py +0 -0
  46. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/agent_update.py +0 -0
  47. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/agents/opencode/.gitignore +0 -0
  48. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/agents/opencode/agents/work.md +0 -0
  49. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/agents/opencode/routing.jsonc +0 -0
  50. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/app_drive.py +0 -0
  51. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/app_drive_daemon.py +0 -0
  52. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/approved_work.py +0 -0
  53. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/audit.py +0 -0
  54. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/auto_loop.py +0 -0
  55. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/backup.py +0 -0
  56. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/block_log.py +0 -0
  57. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/board_doctor.py +0 -0
  58. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/board_doctor_followthrough.py +0 -0
  59. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/board_doctor_permissions.py +0 -0
  60. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/board_doctor_policy.py +0 -0
  61. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/board_schema.py +0 -0
  62. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/board_service.py +0 -0
  63. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/board_wire.py +0 -0
  64. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/brain.py +0 -0
  65. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/branch_model.py +0 -0
  66. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/briefing_lessons.py +0 -0
  67. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/bug_intake.py +0 -0
  68. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/bugbash.py +0 -0
  69. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/cargo_cache.py +0 -0
  70. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/ci_fix.py +0 -0
  71. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/ci_github.py +0 -0
  72. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/ci_gitlab.py +0 -0
  73. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/ci_store.py +0 -0
  74. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/claim.py +0 -0
  75. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/claude_setup_token.py +0 -0
  76. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/cli.py +0 -0
  77. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/client.py +0 -0
  78. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/codegen.py +0 -0
  79. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/__init__.py +0 -0
  80. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/_common.py +0 -0
  81. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/acceptance.py +0 -0
  82. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/agent_ops.py +0 -0
  83. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/app_drive.py +0 -0
  84. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/audit.py +0 -0
  85. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/backup.py +0 -0
  86. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/bugbash.py +0 -0
  87. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/chat.py +0 -0
  88. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/ci.py +0 -0
  89. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/codegen.py +0 -0
  90. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/dispatch.py +0 -0
  91. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/dispatch_workers.py +0 -0
  92. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/dr.py +0 -0
  93. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/drive.py +0 -0
  94. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/gate_a.py +0 -0
  95. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/gates.py +0 -0
  96. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/issues.py +0 -0
  97. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/lifecycle.py +0 -0
  98. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/machine.py +0 -0
  99. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/merge.py +0 -0
  100. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/milestone.py +0 -0
  101. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/plan_followup.py +0 -0
  102. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/plans.py +0 -0
  103. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/portal.py +0 -0
  104. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/pr.py +0 -0
  105. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/release.py +0 -0
  106. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/repo.py +0 -0
  107. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/report.py +0 -0
  108. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/review.py +0 -0
  109. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/scorecard.py +0 -0
  110. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/sessions.py +0 -0
  111. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/setup.py +0 -0
  112. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/smoke.py +0 -0
  113. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/status.py +0 -0
  114. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/store_migrate.py +0 -0
  115. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/terminal.py +0 -0
  116. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/test_gate.py +0 -0
  117. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/commands/tui.py +0 -0
  118. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/comments.py +0 -0
  119. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/config.py +0 -0
  120. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/config_reload.py +0 -0
  121. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/confirm_test.py +0 -0
  122. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/conflict_fix.py +0 -0
  123. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/dao.py +0 -0
  124. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/dashboard/__init__.py +0 -0
  125. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/dashboard/fixture.py +0 -0
  126. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/dashboard/index.html +0 -0
  127. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/dashboard/reports.html +0 -0
  128. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/dashboard/server.py +0 -0
  129. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/dashboard/terminal.py +0 -0
  130. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/db.py +0 -0
  131. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/dead_end.py +0 -0
  132. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/README.md +0 -0
  133. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-agent.service +0 -0
  134. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-backup.service +0 -0
  135. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-backup.timer +0 -0
  136. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-board-doctor.service +0 -0
  137. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-board-doctor.timer +0 -0
  138. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-db-backup.service +0 -0
  139. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-db-backup.sh +0 -0
  140. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-db-backup.timer +0 -0
  141. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-dr-verify.service +0 -0
  142. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-dr-verify.timer +0 -0
  143. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-drive-queue.service +0 -0
  144. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-drive-queue.timer +0 -0
  145. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-failure-notify.service +0 -0
  146. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-fleet-watchdog.service +0 -0
  147. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  148. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-nightly-smoke.service +0 -0
  149. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-nightly-smoke.timer +0 -0
  150. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-notify.service +0 -0
  151. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-notify.timer +0 -0
  152. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-release-propagate.service +0 -0
  153. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-release-propagate.timer +0 -0
  154. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-release-window.service +0 -0
  155. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-release-window.timer +0 -0
  156. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-serve.service +0 -0
  157. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-web-dist-build.service +0 -0
  158. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-web-dist-build.timer +0 -0
  159. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy/coord-web.service +0 -0
  160. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy_manifest.py +0 -0
  161. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deploy_units.py +0 -0
  162. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deprecation_telemetry.py +0 -0
  163. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/deps.py +0 -0
  164. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/diagnose.py +0 -0
  165. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/dirlink.py +0 -0
  166. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/dispatch.py +0 -0
  167. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/dispatch_liveness.py +0 -0
  168. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/dist_name.py +0 -0
  169. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/dr_promote.py +0 -0
  170. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/dr_verify.py +0 -0
  171. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/drive.py +0 -0
  172. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/drive_sessions_snapshot.py +0 -0
  173. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/drive_state.py +0 -0
  174. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/entry_truth.py +0 -0
  175. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/events.py +0 -0
  176. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/failure_class.py +0 -0
  177. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/failure_classifier.py +0 -0
  178. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/filelock.py +0 -0
  179. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/fleet_config_health.py +0 -0
  180. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/forge_availability.py +0 -0
  181. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/freshness.py +0 -0
  182. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/gate_a.py +0 -0
  183. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/gate_b.py +0 -0
  184. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/gate_snapshot.py +0 -0
  185. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/gates.py +0 -0
  186. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/gen_board_fixture.py +0 -0
  187. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/github_ops.py +0 -0
  188. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/github_throttle.py +0 -0
  189. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/goal.py +0 -0
  190. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/graph_health.py +0 -0
  191. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/gtk_native_driver.py +0 -0
  192. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/__init__.py +0 -0
  193. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/aggregate.py +0 -0
  194. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/__init__.py +0 -0
  195. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/_ci_pin.py +0 -0
  196. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/agent_install.py +0 -0
  197. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/cargo_targets.py +0 -0
  198. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/claude_binary.py +0 -0
  199. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/config_drift.py +0 -0
  200. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  201. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/coord_web_ci_pin.py +0 -0
  202. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/deploy_lane_facts.py +0 -0
  203. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/disk.py +0 -0
  204. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/fleet_board.py +0 -0
  205. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  206. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/fleet_phantom.py +0 -0
  207. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/fleet_unit_drift.py +0 -0
  208. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/graph.py +0 -0
  209. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/graphify_cli.py +0 -0
  210. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/gui_lane_preflight.py +0 -0
  211. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/index_lock.py +0 -0
  212. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/issues_sync_staleness.py +0 -0
  213. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/local_machine_identity.py +0 -0
  214. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/plan_usage.py +0 -0
  215. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/pr_churn.py +0 -0
  216. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/release_cordon.py +0 -0
  217. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/repo_state.py +0 -0
  218. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/spawned_coord.py +0 -0
  219. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/stalled_pipeline.py +0 -0
  220. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/sustained_cpu.py +0 -0
  221. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/timer_active.py +0 -0
  222. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/toolchain.py +0 -0
  223. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/unit_drift.py +0 -0
  224. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/unit_enablement.py +0 -0
  225. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/checks/worktrees.py +0 -0
  226. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/cli.py +0 -0
  227. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/context.py +0 -0
  228. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/fleet_snapshot.py +0 -0
  229. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/models.py +0 -0
  230. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/pypi.py +0 -0
  231. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/registry.py +0 -0
  232. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/render.py +0 -0
  233. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/health/units.py +0 -0
  234. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/hooks.py +0 -0
  235. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/housekeeping.py +0 -0
  236. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/interactive.py +0 -0
  237. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/invariant_alarms.py +0 -0
  238. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/issue_store.py +0 -0
  239. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/issues_sync_status.py +0 -0
  240. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/key_spec.py +0 -0
  241. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/liveness_auditor.py +0 -0
  242. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/mac_native_driver.py +0 -0
  243. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/machine_fault.py +0 -0
  244. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/machine_metrics.py +0 -0
  245. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/machine_onboard.py +0 -0
  246. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/machine_pause.py +0 -0
  247. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/machine_stats.py +0 -0
  248. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/merge_queue.py +0 -0
  249. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/milestone_chat.py +0 -0
  250. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/milestone_dispatch.py +0 -0
  251. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/milestone_gate.py +0 -0
  252. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/milestone_order.py +0 -0
  253. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/mock_author.py +0 -0
  254. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/models.py +0 -0
  255. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/native_fs_wait.py +0 -0
  256. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/native_pixels.py +0 -0
  257. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/network.py +0 -0
  258. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/new_issue_chat.py +0 -0
  259. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/nightly_runner.py +0 -0
  260. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/nightly_smoke.py +0 -0
  261. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/nightly_status.py +0 -0
  262. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/nightly_store.py +0 -0
  263. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/notifier/__init__.py +0 -0
  264. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/notifier/baseline.py +0 -0
  265. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/notifier/cli.py +0 -0
  266. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/notifier/digest.py +0 -0
  267. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/notifier/models.py +0 -0
  268. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/notifier/predicate.py +0 -0
  269. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/notifier/service.py +0 -0
  270. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/notifier/store.py +0 -0
  271. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/notifier/transport.py +0 -0
  272. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/openapi.py +0 -0
  273. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/overlap_fence.py +0 -0
  274. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/overlap_predict.py +0 -0
  275. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/parentage.py +0 -0
  276. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/parentage_github.py +0 -0
  277. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/pipeline.py +0 -0
  278. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/plan_parser.py +0 -0
  279. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/plans.py +0 -0
  280. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/platform_paths.py +0 -0
  281. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/portal_bridge.py +0 -0
  282. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/portal_store.py +0 -0
  283. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/portal_sync.py +0 -0
  284. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/pr_body_lint.py +0 -0
  285. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/preflight_size.py +0 -0
  286. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/prereqs.py +0 -0
  287. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/prereview_gate.py +0 -0
  288. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/progress.py +0 -0
  289. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/providers/__init__.py +0 -0
  290. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/providers/base.py +0 -0
  291. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/providers/claude.py +0 -0
  292. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/providers/claude_pty.py +0 -0
  293. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/providers/opencode.py +0 -0
  294. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/queue_diagnose.py +0 -0
  295. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/reconcile.py +0 -0
  296. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/reconcile_tick.py +0 -0
  297. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/refine_chat.py +0 -0
  298. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/release_cordon.py +0 -0
  299. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/release_gate.py +0 -0
  300. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/release_propagate.py +0 -0
  301. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/release_verify.py +0 -0
  302. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/release_window.py +0 -0
  303. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/repo_dormancy.py +0 -0
  304. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/repo_edit.py +0 -0
  305. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/repo_onboard.py +0 -0
  306. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/reports.py +0 -0
  307. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/rest_schema.py +0 -0
  308. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/restart_cmd.py +0 -0
  309. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/revalidate.py +0 -0
  310. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/review.py +0 -0
  311. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/scorecard.py +0 -0
  312. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/self_health.py +0 -0
  313. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/serve_app.py +0 -0
  314. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/shell_exec_wrap.py +0 -0
  315. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  316. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  317. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  318. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  319. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  320. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/skills/portal-followup/SKILL.md +0 -0
  321. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/skills/release-now/SKILL.md +0 -0
  322. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  323. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  324. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/skills/update-issue/SKILL.md +0 -0
  325. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/smoke.py +0 -0
  326. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/smoke_tags.py +0 -0
  327. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/spend_ceiling.py +0 -0
  328. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/split_work.py +0 -0
  329. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/sql.py +0 -0
  330. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/stage_projection.py +0 -0
  331. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/state.py +0 -0
  332. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/store_migrate.py +0 -0
  333. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/store_parity.py +0 -0
  334. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/templates/deploy-cloudflare.node.yml +0 -0
  335. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/test_author.py +0 -0
  336. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/test_chat.py +0 -0
  337. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/test_orchestrator.py +0 -0
  338. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/test_report.py +0 -0
  339. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/tui_pty_driver.py +0 -0
  340. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/tui_release.py +0 -0
  341. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/uat_checks.py +0 -0
  342. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/upstream_gaps.py +0 -0
  343. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/usage.py +0 -0
  344. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/usage_limits.py +0 -0
  345. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/usage_rollup.py +0 -0
  346. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/win_native_bridge.py +0 -0
  347. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/win_native_driver.py +0 -0
  348. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coord/worker_events.py +0 -0
  349. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/coordinator.example.yml +0 -0
  350. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-agent.service +0 -0
  351. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-backup.service +0 -0
  352. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-backup.timer +0 -0
  353. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-board-doctor.service +0 -0
  354. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-board-doctor.timer +0 -0
  355. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-db-backup.service +0 -0
  356. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-db-backup.sh +0 -0
  357. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-db-backup.timer +0 -0
  358. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-dr-verify.service +0 -0
  359. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-dr-verify.timer +0 -0
  360. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-drive-queue.service +0 -0
  361. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-drive-queue.timer +0 -0
  362. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-failure-notify.service +0 -0
  363. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-failure-notify.sh +0 -0
  364. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-fleet-watchdog.service +0 -0
  365. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-fleet-watchdog.timer +0 -0
  366. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-nightly-smoke.service +0 -0
  367. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-nightly-smoke.timer +0 -0
  368. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-notify.service +0 -0
  369. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-notify.timer +0 -0
  370. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-release-propagate.service +0 -0
  371. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-release-propagate.timer +0 -0
  372. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-release-window.service +0 -0
  373. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-release-window.timer +0 -0
  374. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-serve.service +0 -0
  375. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-web-dist-build.service +0 -0
  376. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-web-dist-build.sh +0 -0
  377. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-web-dist-build.timer +0 -0
  378. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-web-rollback.sh +0 -0
  379. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/coord-web.service +0 -0
  380. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/deploy/node-shim.sh +0 -0
  381. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/ADR_COORD_TUI_CI.md +0 -0
  382. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  383. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/ADR_COORD_WEB_CI.md +0 -0
  384. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/ADR_COORD_WEB_DIST.md +0 -0
  385. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  386. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/AGENT_OPERATIONS.md +0 -0
  387. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/ARCHITECTURE.md +0 -0
  388. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/ARCH_SECURITY_GATES.md +0 -0
  389. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/COCKPIT.md +0 -0
  390. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/CONTROL_CENTER.md +0 -0
  391. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/COST_DISCIPLINE.md +0 -0
  392. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/CROSS_PLATFORM.md +0 -0
  393. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/CUSTOMER_FACING_APPS.md +0 -0
  394. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/CUSTOMER_PORTAL.md +0 -0
  395. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/DATA_STORE_SELECTION.md +0 -0
  396. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/DISASTER_RECOVERY.md +0 -0
  397. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/DRIVE_QUEUE.md +0 -0
  398. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/EPHEMERAL_WORKERS.md +0 -0
  399. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/FORGE_MIGRATION.md +0 -0
  400. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/GRAPHIFY_SETUP.md +0 -0
  401. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/ISSUE_GUIDANCE.md +0 -0
  402. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/MAC_MINI.md +0 -0
  403. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  404. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/NOTIFIER.md +0 -0
  405. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/OPENCODE_VERIFICATION.md +0 -0
  406. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/OPERATING_GOTCHAS.md +0 -0
  407. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/OPERATOR_GUIDES.md +0 -0
  408. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/ORACLE_LOOP.md +0 -0
  409. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/PHONE_WEBAPP.md +0 -0
  410. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/PIPELINE_V2.md +0 -0
  411. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/PLATFORM_EVOLUTION.md +0 -0
  412. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/SECOND_BACKEND.md +0 -0
  413. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/STORE_SERVICE.md +0 -0
  414. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  415. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/WEB_CONTROL_CENTER.md +0 -0
  416. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/WSL_WINDOWS_WORKER.md +0 -0
  417. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/mocks/web/README.md +0 -0
  418. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/mocks/web/_tokens.css +0 -0
  419. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/mocks/web/issue-detail.html +0 -0
  420. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/mocks/web/pipeline-narrow.html +0 -0
  421. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/docs/mocks/web/pipeline-wide.html +0 -0
  422. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/graphify-out/.gitignore +0 -0
  423. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/install-agent.sh +0 -0
  424. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/pyproject.toml +0 -0
  425. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/audit_review_verdict_overrides.py +0 -0
  426. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  427. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/azure-workers/build-worker-image.sh +0 -0
  428. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/azure-workers/coordinator-machine.py +0 -0
  429. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/azure-workers/dr-down.sh +0 -0
  430. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/azure-workers/dr-up.sh +0 -0
  431. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/azure-workers/epic-down.sh +0 -0
  432. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/azure-workers/epic-up.sh +0 -0
  433. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/azure-workers/preflight.sh +0 -0
  434. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/azure-workers/provision-server.sh +0 -0
  435. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/azure-workers/provision-worker.sh +0 -0
  436. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  437. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  438. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/azure-workers/throwaway-vm.sh +0 -0
  439. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/azure-workers/verify-github-token.sh +0 -0
  440. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/check_gh_argv_containment.py +0 -0
  441. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/codegen.py +0 -0
  442. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/comment_cruft.py +0 -0
  443. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/coord-test-runner.sh +0 -0
  444. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  445. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  446. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  447. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  448. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/coord-venv-rollback.sh +0 -0
  449. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/drive-batch.sh +0 -0
  450. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/extract-coord-tui.sh +0 -0
  451. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/fleet_watchdog.py +0 -0
  452. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/gen_board_fixture.py +0 -0
  453. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/gen_mock_index.py +0 -0
  454. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/lib/provision-core.sh +0 -0
  455. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/next_release_tag.py +0 -0
  456. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/provision-machine.sh +0 -0
  457. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/run_tests_in_populated_home.sh +0 -0
  458. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/run_tests_without_gh.sh +0 -0
  459. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/setup-macmini.sh +0 -0
  460. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/smoke_437_interactive.py +0 -0
  461. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/verify-provision-noble.sh +0 -0
  462. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/verify_878_review_capture.py +0 -0
  463. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/verify_release_published.py +0 -0
  464. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/scripts/verify_release_wheel.py +0 -0
  465. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/setup.cfg +0 -0
  466. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/SMOKE_SET.md +0 -0
  467. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/__init__.py +0 -0
  468. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/acceptance/ms-37/conftest.py +0 -0
  469. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/acceptance/ms-37/contract.md +0 -0
  470. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/acceptance/ms-37/manifest.yml +0 -0
  471. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  472. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  473. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/acceptance/ms-51/contract.md +0 -0
  474. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  475. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  476. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/acceptance/ms-51/manifest.yml +0 -0
  477. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  478. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/acceptance/ms-51/tsconfig.json +0 -0
  479. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  480. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/backends.py +0 -0
  481. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/conftest.py +0 -0
  482. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/board-pipeline-basic.json +0 -0
  483. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  484. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  485. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  486. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  487. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/playwright/all_pass.json +0 -0
  488. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  489. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/playwright/mixed_fail.json +0 -0
  490. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  491. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  492. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/playwright/skip.json +0 -0
  493. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/playwright/truncated.json +0 -0
  494. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  495. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  496. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  497. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  498. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
  499. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  500. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  501. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  502. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  503. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_acceptance.py +0 -0
  504. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_acceptance_drivers.py +0 -0
  505. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent.py +0 -0
  506. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_api_error.py +0 -0
  507. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_app.py +0 -0
  508. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_branch_base.py +0 -0
  509. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_branch_capture.py +0 -0
  510. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_config_free_1712.py +0 -0
  511. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_deploy_units_endpoint.py +0 -0
  512. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_dirty_worktree.py +0 -0
  513. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  514. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_graceful_shutdown_3649.py +0 -0
  515. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_graph_refresh.py +0 -0
  516. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_graph_self_heal.py +0 -0
  517. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_health_h3.py +0 -0
  518. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_idle_restart.py +0 -0
  519. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_push_failure.py +0 -0
  520. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_reap.py +0 -0
  521. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_repos_and_pull.py +0 -0
  522. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_restart_services_endpoint.py +0 -0
  523. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_skills_self_heal.py +0 -0
  524. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_startup_diagnostics.py +0 -0
  525. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_update.py +0 -0
  526. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_update_bluegreen.py +0 -0
  527. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_usage_limit.py +0 -0
  528. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_agent_zero_commit.py +0 -0
  529. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_ambient_home_isolation.py +0 -0
  530. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_app_drive.py +0 -0
  531. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_approve_capability_reroute_3241.py +0 -0
  532. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_approve_dependency_busy_2804.py +0 -0
  533. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_approve_reject_plan.py +0 -0
  534. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_approve_usage_gate.py +0 -0
  535. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_approved_work_2532.py +0 -0
  536. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_approved_work_2996.py +0 -0
  537. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_assignment_already_recorded_daemon.py +0 -0
  538. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_audit_log.py +0 -0
  539. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_audit_outcome.py +0 -0
  540. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_audit_query.py +0 -0
  541. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_auto_loop.py +0 -0
  542. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_auto_release_publish_2035.py +0 -0
  543. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_backend_selection.py +0 -0
  544. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_backup.py +0 -0
  545. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_base_checkout_restore.py +0 -0
  546. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_block_log.py +0 -0
  547. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_board_cap_762.py +0 -0
  548. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_board_doctor.py +0 -0
  549. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_board_doctor_followthrough.py +0 -0
  550. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_board_doctor_permissions.py +0 -0
  551. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_board_doctor_policy.py +0 -0
  552. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_board_fixture.py +0 -0
  553. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_board_nightly_status.py +0 -0
  554. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_board_read_path.py +0 -0
  555. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_board_schema.py +0 -0
  556. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_board_service.py +0 -0
  557. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_board_state.py +0 -0
  558. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_board_wire.py +0 -0
  559. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_brain.py +0 -0
  560. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_branch_model.py +0 -0
  561. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_briefing_lessons.py +0 -0
  562. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_bug_intake.py +0 -0
  563. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_bugbash.py +0 -0
  564. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_build_worker_image_env_update.py +0 -0
  565. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cargo_cache.py +0 -0
  566. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_check_gh_argv_containment.py +0 -0
  567. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_ci_acceptance_gate_1950.py +0 -0
  568. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_ci_fix.py +0 -0
  569. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_ci_github.py +0 -0
  570. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_ci_gitlab.py +0 -0
  571. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_ci_parity_2091.py +0 -0
  572. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_ci_store.py +0 -0
  573. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_claim.py +0 -0
  574. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_claude_md_budget.py +0 -0
  575. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_claude_setup_token.py +0 -0
  576. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_acceptance.py +0 -0
  577. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_assign.py +0 -0
  578. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  579. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_assign_interactive_remote.py +0 -0
  580. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_assign_provider.py +0 -0
  581. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  582. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_audit.py +0 -0
  583. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_chat_continue.py +0 -0
  584. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_ci.py +0 -0
  585. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_codegen.py +0 -0
  586. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_decide.py +0 -0
  587. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_diagnose_capability_rules.py +0 -0
  588. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_diagnose_config_provenance.py +0 -0
  589. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_diagnose_forge_availability.py +0 -0
  590. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_diagnose_graph.py +0 -0
  591. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_diagnose_self.py +0 -0
  592. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_diagnose_test_coverage.py +0 -0
  593. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_doctor.py +0 -0
  594. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_doctor_config_free_1801.py +0 -0
  595. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  596. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  597. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_drive.py +0 -0
  598. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_drive_queue_investigate.py +0 -0
  599. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_drive_queue_stranded_prereq.py +0 -0
  600. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_escalate.py +0 -0
  601. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_fix_headless_review.py +0 -0
  602. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_gate_a.py +0 -0
  603. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_gates_next_action.py +0 -0
  604. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_inject_board_less.py +0 -0
  605. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_install_drift.py +0 -0
  606. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_install_skills.py +0 -0
  607. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_issue_close_wrong_repo.py +0 -0
  608. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_issue_comment.py +0 -0
  609. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_issue_create_label.py +0 -0
  610. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_issue_reopen.py +0 -0
  611. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_issue_view_list.py +0 -0
  612. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_issues.py +0 -0
  613. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_merge.py +0 -0
  614. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_milestone_assign.py +0 -0
  615. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_milestone_capture.py +0 -0
  616. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_milestone_chat_add_child.py +0 -0
  617. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_milestone_dispatch.py +0 -0
  618. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_milestone_gate_b.py +0 -0
  619. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_milestone_gate_c.py +0 -0
  620. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_milestone_order.py +0 -0
  621. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  622. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_milestone_ship.py +0 -0
  623. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_network.py +0 -0
  624. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_new_issue_chat.py +0 -0
  625. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_plans.py +0 -0
  626. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_portal.py +0 -0
  627. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_pr.py +0 -0
  628. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_pull_artifact.py +0 -0
  629. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_queue.py +0 -0
  630. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_reattach_sessions.py +0 -0
  631. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_refine_board.py +0 -0
  632. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_release_preflight.py +0 -0
  633. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_release_propagate.py +0 -0
  634. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_release_window.py +0 -0
  635. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_repo_2220.py +0 -0
  636. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  637. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_scorecard.py +0 -0
  638. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_serve_store_backend_3084.py +0 -0
  639. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_set_review_findings.py +0 -0
  640. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_smoke_nightly.py +0 -0
  641. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_smoke_nightly_sweep.py +0 -0
  642. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_status_advisory_terminal.py +0 -0
  643. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_status_contested_tag.py +0 -0
  644. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_status_invariant_alarms.py +0 -0
  645. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_status_machine_fault.py +0 -0
  646. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_status_merge_queue.py +0 -0
  647. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_status_nightly.py +0 -0
  648. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_status_provider.py +0 -0
  649. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_status_retried_3340.py +0 -0
  650. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_status_review_finalizing.py +0 -0
  651. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_status_supervisor_3366.py +0 -0
  652. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_status_test_failed_tag.py +0 -0
  653. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_status_usage_limit.py +0 -0
  654. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_sync_comments_873.py +0 -0
  655. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_test_plan.py +0 -0
  656. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_track.py +0 -0
  657. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_tui_update.py +0 -0
  658. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cli_wait.py +0 -0
  659. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_client.py +0 -0
  660. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_client_base_install.py +0 -0
  661. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_client_config_cache_atomic_3052.py +0 -0
  662. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_client_resource_migration_1946.py +0 -0
  663. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_commands_common.py +0 -0
  664. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_comment_cruft.py +0 -0
  665. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_comments.py +0 -0
  666. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_completion_summary.py +0 -0
  667. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_config.py +0 -0
  668. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_config_acceptance.py +0 -0
  669. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_config_audit.py +0 -0
  670. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_config_drift_check.py +0 -0
  671. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_config_effective.py +0 -0
  672. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_config_prereview_gate.py +0 -0
  673. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_config_pricing.py +0 -0
  674. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  675. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_config_usage_gate.py +0 -0
  676. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_confirm_test.py +0 -0
  677. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_conflict_fix.py +0 -0
  678. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_conflict_fix_semantic.py +0 -0
  679. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  680. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_coord_test.py +0 -0
  681. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  682. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_coord_test_runner_baseline.py +0 -0
  683. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_coord_test_runner_populated_home.py +0 -0
  684. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_coord_test_runner_routing.py +0 -0
  685. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_coord_test_runner_toolchain.py +0 -0
  686. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_coord_test_runner_venv_setup.py +0 -0
  687. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_coord_uat.py +0 -0
  688. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_coord_web_sse_restart_live.py +0 -0
  689. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_coordinator_machine.py +0 -0
  690. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_cross_platform_imports.py +0 -0
  691. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dao.py +0 -0
  692. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dashboard.py +0 -0
  693. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dashboard_api.py +0 -0
  694. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dashboard_fixture.py +0 -0
  695. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dashboard_reports.py +0 -0
  696. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dashboard_server.py +0 -0
  697. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dashboard_terminal.py +0 -0
  698. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dashboard_terminal_live.py +0 -0
  699. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_db.py +0 -0
  700. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dead_end.py +0 -0
  701. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_deploy_coord_db_backup.py +0 -0
  702. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_deploy_coord_web_dist.py +0 -0
  703. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_deploy_coord_web_rollback.py +0 -0
  704. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_deploy_db_backup_unit.py +0 -0
  705. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_deploy_drive_queue_unit.py +0 -0
  706. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_deploy_failure_notify_unit.py +0 -0
  707. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_deploy_manifest.py +0 -0
  708. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_deploy_notify_unit.py +0 -0
  709. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_deploy_units_lane.py +0 -0
  710. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_deploy_web_unit.py +0 -0
  711. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_deprecation_telemetry.py +0 -0
  712. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_deps.py +0 -0
  713. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_diagnose.py +0 -0
  714. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dirlink.py +0 -0
  715. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dispatch.py +0 -0
  716. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dispatch_liveness.py +0 -0
  717. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dispatch_target_validation.py +0 -0
  718. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dispatch_workers.py +0 -0
  719. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dist_name.py +0 -0
  720. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_done_housekeeping.py +0 -0
  721. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dr_azure_scripts.py +0 -0
  722. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dr_promote.py +0 -0
  723. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_dr_verify.py +0 -0
  724. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_drive.py +0 -0
  725. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_drive_machine_fault.py +0 -0
  726. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_drive_queue_blocked_rendering.py +0 -0
  727. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_drive_queue_launch_argv.py +0 -0
  728. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_drive_queue_max_parallel_config.py +0 -0
  729. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  730. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_drive_queue_roll_pending.py +0 -0
  731. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  732. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_drive_sessions_snapshot.py +0 -0
  733. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_drive_state.py +0 -0
  734. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_drive_tmux.py +0 -0
  735. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_entry_truth.py +0 -0
  736. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_epic_up_capability_detection.py +0 -0
  737. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  738. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_epic_up_image_provenance.py +0 -0
  739. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_errors.py +0 -0
  740. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_events.py +0 -0
  741. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_failure_class.py +0 -0
  742. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_failure_classifier.py +0 -0
  743. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_filelock.py +0 -0
  744. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  745. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_fix_escalation_classifier.py +0 -0
  746. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_fix_of_force_override.py +0 -0
  747. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_fleet_config_health.py +0 -0
  748. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_fleet_health_probes.py +0 -0
  749. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_fleet_health_snapshot.py +0 -0
  750. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_fleet_watchdog.py +0 -0
  751. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_forge_availability.py +0 -0
  752. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_freshness.py +0 -0
  753. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_gate_a.py +0 -0
  754. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_gate_b.py +0 -0
  755. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_gate_snapshot_staleness.py +0 -0
  756. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_gates.py +0 -0
  757. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  758. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_gen_mock_index.py +0 -0
  759. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_generated_rust_fixture.py +0 -0
  760. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_generated_rust_requests.py +0 -0
  761. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_generated_types_fixture.py +0 -0
  762. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_github_ops.py +0 -0
  763. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_github_throttle.py +0 -0
  764. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_goal.py +0 -0
  765. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_graph_health.py +0 -0
  766. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_graph_selfheal_absent_2237.py +0 -0
  767. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_gtk_native_driver.py +0 -0
  768. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_handoff.py +0 -0
  769. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_checks.py +0 -0
  770. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_cli.py +0 -0
  771. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_cli_graph.py +0 -0
  772. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_config.py +0 -0
  773. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_context.py +0 -0
  774. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_coord_tui_ci_pin.py +0 -0
  775. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_coord_web_ci_pin.py +0 -0
  776. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_deploy_lane_facts.py +0 -0
  777. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_fix.py +0 -0
  778. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_incident_regression.py +0 -0
  779. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_issues_sync_staleness.py +0 -0
  780. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_pr_churn.py +0 -0
  781. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_pypi.py +0 -0
  782. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_registry.py +0 -0
  783. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_release_cordon_probe.py +0 -0
  784. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_sustained_cpu.py +0 -0
  785. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_timer_active.py +0 -0
  786. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_toolchain.py +0 -0
  787. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_unit_drift.py +0 -0
  788. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_unit_enablement.py +0 -0
  789. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_health_wedged_drive_queue.py +0 -0
  790. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_hooks.py +0 -0
  791. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_housekeeping.py +0 -0
  792. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_human_attended_437.py +0 -0
  793. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_init.py +0 -0
  794. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_install_agent_capabilities_3515.py +0 -0
  795. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_install_agent_venv_2911.py +0 -0
  796. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_install_agent_wsl_bridge_3515.py +0 -0
  797. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_integration.py +0 -0
  798. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_interactive.py +0 -0
  799. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_interactive_briefing_echo.py +0 -0
  800. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_interactive_pane_log_2541.py +0 -0
  801. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_interactive_prefill_state.py +0 -0
  802. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_interactive_session_relaunch.py +0 -0
  803. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_interactive_test_verdict_backstop.py +0 -0
  804. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_interactive_token_attribution.py +0 -0
  805. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_interactive_worktree.py +0 -0
  806. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_invariant_alarms.py +0 -0
  807. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_issue_store_seam.py +0 -0
  808. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_issues_sync_status.py +0 -0
  809. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_key_spec.py +0 -0
  810. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_liveness_auditor.py +0 -0
  811. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_liveness_notify.py +0 -0
  812. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_lock_contention_ratchet.py +0 -0
  813. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_mac_native_driver.py +0 -0
  814. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_machine_fault.py +0 -0
  815. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_machine_metrics.py +0 -0
  816. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_machine_onboard.py +0 -0
  817. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_machine_pause.py +0 -0
  818. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_machine_stats.py +0 -0
  819. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_merge_queue.py +0 -0
  820. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_merge_verification.py +0 -0
  821. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_merge_verify.py +0 -0
  822. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_milestone_chat.py +0 -0
  823. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_milestone_dispatch.py +0 -0
  824. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_milestone_gate.py +0 -0
  825. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_milestone_order.py +0 -0
  826. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_milestone_seam.py +0 -0
  827. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_mock_author.py +0 -0
  828. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_model_tiering.py +0 -0
  829. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_models.py +0 -0
  830. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_models_config_labels.py +0 -0
  831. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_models_pinned_1650.py +0 -0
  832. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_native_fs_wait.py +0 -0
  833. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_native_pixels.py +0 -0
  834. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_needs_attention.py +0 -0
  835. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_network.py +0 -0
  836. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_new_issue_chat.py +0 -0
  837. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_next_release_tag.py +0 -0
  838. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_nightly_runner.py +0 -0
  839. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_nightly_smoke.py +0 -0
  840. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_nightly_status.py +0 -0
  841. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_nightly_store.py +0 -0
  842. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_no_eligible_host_3600.py +0 -0
  843. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_node_shim.py +0 -0
  844. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_notifier_baseline.py +0 -0
  845. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_notifier_cli.py +0 -0
  846. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_notifier_config.py +0 -0
  847. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_notifier_drive_seam.py +0 -0
  848. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_notifier_isolation.py +0 -0
  849. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_notifier_predicate.py +0 -0
  850. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_notifier_quiet_hours.py +0 -0
  851. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_notifier_service.py +0 -0
  852. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_notify_drain.py +0 -0
  853. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_openapi.py +0 -0
  854. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_operational_defaults.py +0 -0
  855. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_overlap_fence.py +0 -0
  856. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_overlap_predict.py +0 -0
  857. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_packaged_deploy_units.py +0 -0
  858. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_parentage.py +0 -0
  859. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_paste_landed.py +0 -0
  860. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_pause_store_guard_recursion_3789.py +0 -0
  861. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  862. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_pipeline.py +0 -0
  863. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_plain_runner_smoke_3673.py +0 -0
  864. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_plan_followup_approve_plan_command.py +0 -0
  865. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_plan_followup_pr_command.py +0 -0
  866. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_plan_followup_review_command.py +0 -0
  867. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_plan_only.py +0 -0
  868. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_plan_parser.py +0 -0
  869. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_platform_paths.py +0 -0
  870. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_portal_bridge.py +0 -0
  871. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_portal_config.py +0 -0
  872. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_portal_store.py +0 -0
  873. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_portal_sync.py +0 -0
  874. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_pr_body_lint.py +0 -0
  875. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_preflight_size.py +0 -0
  876. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_prereqs.py +0 -0
  877. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_prereview_gate.py +0 -0
  878. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_production_db_guard.py +0 -0
  879. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_progress.py +0 -0
  880. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_provider_seam.py +0 -0
  881. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_providers.py +0 -0
  882. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_providers_config_labels.py +0 -0
  883. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_providers_pty.py +0 -0
  884. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_provision_core.py +0 -0
  885. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_provision_machine.py +0 -0
  886. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_py_rust_mirror_inventory.py +0 -0
  887. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_queue_diagnose.py +0 -0
  888. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_quiet_hours.py +0 -0
  889. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_quiet_hours_store_2146.py +0 -0
  890. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_reap_merged_sessions.py +0 -0
  891. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_reap_stale_interactive_tick.py +0 -0
  892. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_reconcile.py +0 -0
  893. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_reconcile_branch.py +0 -0
  894. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_reconcile_completions.py +0 -0
  895. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  896. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_reconcile_merges.py +0 -0
  897. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_reconcile_no_agent_record.py +0 -0
  898. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_reconcile_tick.py +0 -0
  899. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_reconcile_usage_limit_done.py +0 -0
  900. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_refine_chat.py +0 -0
  901. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_release_cordon_2101.py +0 -0
  902. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  903. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_release_cordon_deadlock_2240.py +0 -0
  904. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  905. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_release_cordon_stuck_2490.py +0 -0
  906. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_release_gate.py +0 -0
  907. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_release_propagate.py +0 -0
  908. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_release_propagate_threshold.py +0 -0
  909. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_release_roll_between_legs_2854.py +0 -0
  910. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_release_roll_window_handoff.py +0 -0
  911. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_release_unified_1242.py +0 -0
  912. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_release_verify.py +0 -0
  913. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_release_window.py +0 -0
  914. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_remote_auto_prune.py +0 -0
  915. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_remote_interactive_reaper.py +0 -0
  916. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_repo_add.py +0 -0
  917. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_repo_dormancy.py +0 -0
  918. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_repo_edit_2220.py +0 -0
  919. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_repo_graph_fleet_2237.py +0 -0
  920. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_repo_max_parallel_3423.py +0 -0
  921. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_repo_onboard_2220.py +0 -0
  922. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_report_public_export.py +0 -0
  923. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_report_result_push.py +0 -0
  924. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_reports.py +0 -0
  925. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_restart_cmd.py +0 -0
  926. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_retry.py +0 -0
  927. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_retry_advisory_1606.py +0 -0
  928. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_retry_escalation_classify_3360.py +0 -0
  929. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_retry_type_1636.py +0 -0
  930. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_revalidate.py +0 -0
  931. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_review.py +0 -0
  932. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_review_end_review_without_verdict.py +0 -0
  933. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_review_parse_failure_diagnostic.py +0 -0
  934. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_review_reaffirm.py +0 -0
  935. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_review_state.py +0 -0
  936. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_review_verdict_backstop.py +0 -0
  937. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_review_verdict_override_audit.py +0 -0
  938. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_review_verdict_relay.py +0 -0
  939. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_review_zero_commits.py +0 -0
  940. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_scoped_review_wiring.py +0 -0
  941. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_scorecard.py +0 -0
  942. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_self_health.py +0 -0
  943. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_serve.py +0 -0
  944. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_serve_app.py +0 -0
  945. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_serve_app_board_trim.py +0 -0
  946. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_serve_rest_routes.py +0 -0
  947. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_session.py +0 -0
  948. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_slice_issue_attribution.py +0 -0
  949. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_smoke.py +0 -0
  950. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  951. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_smoke_live_checkout_restore.py +0 -0
  952. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_smoke_plain_runner_3673.py +0 -0
  953. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_smoke_workflow.py +0 -0
  954. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_spend_ceiling.py +0 -0
  955. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_spend_ceiling_coordinator.py +0 -0
  956. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_split.py +0 -0
  957. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_split_work.py +0 -0
  958. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_sql_dialect.py +0 -0
  959. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_sqlite_connect_ratchet.py +0 -0
  960. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_stage_projection.py +0 -0
  961. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_stale_busy_reviewer_697.py +0 -0
  962. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_stalled_pipeline.py +0 -0
  963. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_state.py +0 -0
  964. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_state_review_findings_daemon.py +0 -0
  965. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_status_fleet_footer.py +0 -0
  966. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_stop_1567.py +0 -0
  967. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_store_contract.py +0 -0
  968. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_store_migrate.py +0 -0
  969. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_stuck.py +0 -0
  970. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  971. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_terminal_command.py +0 -0
  972. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_test_author.py +0 -0
  973. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_test_chat.py +0 -0
  974. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_test_orchestrator.py +0 -0
  975. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_test_report.py +0 -0
  976. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_test_verdict_parsing.py +0 -0
  977. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_test_verdict_transcript_floor.py +0 -0
  978. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_text_io_encoding_audit.py +0 -0
  979. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_thin_client_board_audit.py +0 -0
  980. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_thin_client_config_load_1080.py +0 -0
  981. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_thin_client_daemon_routing_906.py +0 -0
  982. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_throwaway_vm.py +0 -0
  983. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_tmux_host.py +0 -0
  984. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_tmux_session.py +0 -0
  985. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_transcript_floor.py +0 -0
  986. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_tui_pty_driver.py +0 -0
  987. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_uat_checks.py +0 -0
  988. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_upstream_gaps.py +0 -0
  989. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_usage.py +0 -0
  990. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_usage_limits.py +0 -0
  991. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_usage_rollup.py +0 -0
  992. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_venv_live_install_2121.py +0 -0
  993. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_version_single_source.py +0 -0
  994. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_watch.py +0 -0
  995. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_win_native_bridge.py +0 -0
  996. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_win_native_driver.py +0 -0
  997. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  998. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_worker_env_venv_isolation.py +0 -0
  999. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_worker_events.py +0 -0
  1000. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_worker_image_pin_sync.py +0 -0
  1001. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_worker_safety.py +0 -0
  1002. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_worker_test_scoping.py +0 -0
  1003. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_worktree.py +0 -0
  1004. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  1005. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/tests/test_write_parity.py +0 -0
  1006. {code_coordinator-0.5.757 → code_coordinator-0.5.759}/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.757
3
+ Version: 0.5.759
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.757
3
+ Version: 0.5.759
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
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.5.759",
3
+ "distance": 0,
4
+ "node": "g8877e507364adbe8c3051ef031849fd96e87e159",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-11-12"
8
+ }
@@ -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:
@@ -93,6 +93,8 @@ from coord.drive_queue import (
93
93
  find_cycle,
94
94
  fired_holds,
95
95
  flag_shadows_config_warning,
96
+ format_coarse_duration,
97
+ is_benign_queue_alert_command,
96
98
  is_dispatch_failure_reason,
97
99
  is_fix_round_ceiling_blocked,
98
100
  is_merge_gate_block_reason,
@@ -2069,15 +2071,12 @@ def _reason_age_suffix(entry: QueueEntry, now: float) -> str:
2069
2071
  return f" ({_age_str(max(0.0, now - entry.reason_at))} ago)"
2070
2072
 
2071
2073
 
2072
- def _age_str(delta_seconds: float) -> str:
2073
- """``42s`` / ``3h`` / ``5d`` — coarse, single-unit, matches #2133's ask."""
2074
- if delta_seconds < 60:
2075
- return f"{int(delta_seconds)}s"
2076
- if delta_seconds < 3600:
2077
- return f"{int(delta_seconds // 60)}m"
2078
- if delta_seconds < 86400:
2079
- return f"{int(delta_seconds // 3600)}h"
2080
- return f"{int(delta_seconds // 86400)}d"
2074
+ # #3983: `coord.drive_queue.format_coarse_duration` — imported under this
2075
+ # module's own pre-existing name so every call site below (and the
2076
+ # `describe_unreachable_wait`-driven alert text) renders "how long has this
2077
+ # held" with the identical single-unit shape, never a second formatter that
2078
+ # could drift from it.
2079
+ _age_str = format_coarse_duration
2081
2080
 
2082
2081
 
2083
2082
  def _hold_lines(entry: QueueEntry) -> list[str]:
@@ -2566,7 +2565,7 @@ def _unreachable_wait_alert_dict(rows: list[Mapping[str, Any]]) -> dict | None:
2566
2565
  waits = detect_unreachable_waits(entries_from_rows(rows))
2567
2566
  if not waits:
2568
2567
  return None
2569
- synthetic = unreachable_wait_alert(waits)
2568
+ synthetic = unreachable_wait_alert(waits, now=time.time())
2570
2569
  return {
2571
2570
  "reason": synthetic.reason,
2572
2571
  "gate_readings": " | ".join(synthetic.details),
@@ -2583,13 +2582,32 @@ def drive_queue_status(output_json: bool, config_path: Path) -> None:
2583
2582
 
2584
2583
  rows = list_drive_queue()
2585
2584
  counts = _counts(rows)
2586
- # #2944: a tick-raised alert (a HELD gate, "nothing eligible to launch")
2585
+ # #2944: a tick-raised alert (a HELD gate, a real BLOCKED-entry remedy)
2587
2586
  # takes priority when one exists — it is fresher and, on a busy queue,
2588
2587
  # `_unreachable_wait_alert_dict` would silently win-and-hide it every
2589
- # time a real, actionable alert IS present. Only when the tick has
2590
- # nothing to say (the common, dangerous case a queue with free slots
2591
- # sits in for hours) does the guaranteed-false-wait check get to speak.
2592
- alert = _queue_alert() or _unreachable_wait_alert_dict(rows)
2588
+ # time a real, actionable alert IS present.
2589
+ #
2590
+ # #3983: EXCEPT the one tick-raised shape that is itself a sentinel for
2591
+ # "nothing is actually broken" — `QUEUE_ALERT_NO_REMEDY_COMMAND` (step
2592
+ # 4's "nothing eligible to launch" write when every stalled entry is a
2593
+ # benign deferral, never an actual block). The quadraui#2341 incident: a
2594
+ # root parked `needs_decomposition` with 13 `waiting` dependents chained
2595
+ # on it via `after=` never reaches `blocked` at all — `_resolve_prereqs`
2596
+ # treats a `parked` pre-req as an ordinary unsatisfied deferral, not the
2597
+ # unsatisfiable-and-escalate shape it gives a `blocked`/`failed` one — so
2598
+ # EVERY tick re-wrote this exact no-remedy sentinel over the root's own
2599
+ # #2944/#2978 finding, and `status` never got a chance to name it. Same
2600
+ # benign-sentinel check `coord.notifier.collect.halted_drives` already
2601
+ # uses to keep this shape out of the pager — one question ("is this
2602
+ # tick-raised alert itself the thing, or just noise?"), one answer,
2603
+ # shared by both callers.
2604
+ tick_alert = _queue_alert()
2605
+ if tick_alert is not None and not is_benign_queue_alert_command(
2606
+ tick_alert.get("proposed_command")
2607
+ ):
2608
+ alert = tick_alert
2609
+ else:
2610
+ alert = _unreachable_wait_alert_dict(rows) or tick_alert
2593
2611
  # #3413: `alert["created_at"]` (present only for a tick-raised record —
2594
2612
  # `_unreachable_wait_alert_dict` is computed fresh on every call and
2595
2613
  # carries no timestamp of its own) now survives an unbroken same-reason
@@ -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",
@@ -1551,6 +1551,20 @@ QUEUE_ALERT_STAGE = "drive-queue"
1551
1551
  #: change — `coord drive-queue status` still reads the record unchanged.
1552
1552
  QUEUE_ALERT_NO_REMEDY_COMMAND = "coord drive-queue list"
1553
1553
 
1554
+
1555
+ def is_benign_queue_alert_command(command: object) -> bool:
1556
+ """Is *command* the :data:`QUEUE_ALERT_NO_REMEDY_COMMAND` sentinel?
1557
+
1558
+ One normalization (`str(...).strip()`), shared by `coord drive-queue
1559
+ status` (`coord.commands.drive_queue._queue_alert`'s caller) and the
1560
+ notifier (`coord.notifier.collect.halted_drives`) — before #3983 each
1561
+ wrote its own comparison (one on the raw dict value, the other via
1562
+ `str(...).strip()` plus its own repo/issue check), which happened to
1563
+ agree only because neither had yet drifted; this is the one answer both
1564
+ now ask the identical question of (#2096).
1565
+ """
1566
+ return str(command or "").strip() == QUEUE_ALERT_NO_REMEDY_COMMAND
1567
+
1554
1568
  #: #3413: a DISPLAY hint only — production's `coord-drive-queue.timer` fires
1555
1569
  #: every 3 minutes (`OnUnitActiveSec=3min`, `deploy/coord-drive-queue.timer`),
1556
1570
  #: not a value this module reads from the deployed unit (there is no seam to
@@ -4196,6 +4210,16 @@ class UnreachableWait:
4196
4210
  is accurate even though those dependents themselves never appear in the
4197
4211
  result (see the predicate's own docstring for why). `0` for an entry
4198
4212
  nothing is chained behind.
4213
+
4214
+ `cause` (#3983) is :func:`classify_unreachable_wait_cause`'s verdict —
4215
+ one of :data:`UNREACHABLE_WAIT_CAUSE_NEEDS_DECOMPOSITION`/
4216
+ `_PREMISE_REFUSAL`/`_UPSTREAM_GAP_PARK` for a terminal park, or
4217
+ `_DISPATCH_FAILURE`/`_NEVER_DISPATCHED` for the two shapes
4218
+ :func:`is_unreachable_wait_shape` itself distinguishes. `reason_at` is
4219
+ `entry.reason_at` carried straight through — the wall-clock stamp of
4220
+ when `last_reason` (hence this wait) was written, so a renderer can
4221
+ show how long the row has sat this way instead of a bare, undated
4222
+ reason (#2133's rule, applied here).
4199
4223
  """
4200
4224
 
4201
4225
  key: str
@@ -4203,6 +4227,8 @@ class UnreachableWait:
4203
4227
  deferrals: int
4204
4228
  last_reason: str
4205
4229
  dependents: int = 0
4230
+ cause: str = ""
4231
+ reason_at: float | None = None
4206
4232
 
4207
4233
 
4208
4234
  def is_unreachable_wait_shape(entry: QueueEntry) -> bool:
@@ -4273,6 +4299,135 @@ def is_unreachable_wait_shape(entry: QueueEntry) -> bool:
4273
4299
  return entry.state == STATE_BLOCKED and _is_dispatch_failure_reason(entry.last_reason)
4274
4300
 
4275
4301
 
4302
+ # #3983: the cause label `classify_unreachable_wait_cause` assigns a row
4303
+ # matching `is_unreachable_wait_shape`. The three terminal-park values are
4304
+ # the SAME strings `coord.queue_diagnose` names
4305
+ # `CAUSE_NEEDS_DECOMPOSITION`/`CAUSE_PREMISE_REFUSAL`/`CAUSE_UPSTREAM_GAP_PARK`
4306
+ # — deliberately not imported from there: `coord.queue_diagnose` imports
4307
+ # `QueueEntry`/`is_unreachable_wait_shape` FROM this module, so importing its
4308
+ # constants back here would cycle. Keeping the literal text identical is
4309
+ # what lets a reader compare `coord drive-queue status`'s alert and `coord
4310
+ # drive-queue diagnose`'s verdict for the same row without translating
4311
+ # between two vocabularies for the same finding (#2096).
4312
+ UNREACHABLE_WAIT_CAUSE_NEEDS_DECOMPOSITION = "needs-decomposition"
4313
+ UNREACHABLE_WAIT_CAUSE_PREMISE_REFUSAL = "premise-refusal"
4314
+ UNREACHABLE_WAIT_CAUSE_UPSTREAM_GAP_PARK = "upstream-gap-park"
4315
+ #: `attempts > 0`, exhausted the retry budget with no #2273 dispatch-layer
4316
+ #: assignment ever created — the second `is_unreachable_wait_shape` branch.
4317
+ UNREACHABLE_WAIT_CAUSE_DISPATCH_FAILURE = "dispatch-failure"
4318
+ #: `attempts == 0`, no terminal-park marker — the original #2944 shape:
4319
+ #: nothing has ever tried to dispatch this row at all.
4320
+ UNREACHABLE_WAIT_CAUSE_NEVER_DISPATCHED = "never-dispatched"
4321
+
4322
+ #: The three causes a worker/park-writer already asserted are terminal —
4323
+ #: "no fix-it leg or relaunch can resolve this" is the row's OWN last_reason
4324
+ #: text, not a guess this module is making. See
4325
+ #: :func:`unreachable_wait_remedy_command` for why that rules out the
4326
+ #: blanket `remove && add` requeue for exactly these three.
4327
+ _UNREACHABLE_WAIT_TERMINAL_PARK_CAUSES = frozenset(
4328
+ {
4329
+ UNREACHABLE_WAIT_CAUSE_NEEDS_DECOMPOSITION,
4330
+ UNREACHABLE_WAIT_CAUSE_PREMISE_REFUSAL,
4331
+ UNREACHABLE_WAIT_CAUSE_UPSTREAM_GAP_PARK,
4332
+ }
4333
+ )
4334
+
4335
+ _UNREACHABLE_WAIT_CAUSE_LABEL: dict[str, str] = {
4336
+ UNREACHABLE_WAIT_CAUSE_NEEDS_DECOMPOSITION: "needs-decomposition park (#3931)",
4337
+ UNREACHABLE_WAIT_CAUSE_PREMISE_REFUSAL: "premise-refusal park (#3164)",
4338
+ UNREACHABLE_WAIT_CAUSE_UPSTREAM_GAP_PARK: "upstream-gap park (#3977)",
4339
+ UNREACHABLE_WAIT_CAUSE_DISPATCH_FAILURE: "exhausted dispatch-layer death (#2273)",
4340
+ UNREACHABLE_WAIT_CAUSE_NEVER_DISPATCHED: "never dispatched",
4341
+ }
4342
+
4343
+ #: The manual next-step for a cause no blind command can fix — embedded
4344
+ #: straight into :func:`describe_unreachable_wait` so the reason text stays
4345
+ #: self-contained even where :func:`unreachable_wait_remedy_command` can only
4346
+ #: offer a read-only fallback (#3983).
4347
+ _UNREACHABLE_WAIT_CAUSE_MANUAL_NOTE: dict[str, str] = {
4348
+ UNREACHABLE_WAIT_CAUSE_NEEDS_DECOMPOSITION: (
4349
+ "not fixable by any fix-it leg or relaunch — decompose the issue "
4350
+ "into the proposed sub-issues and clear the row by hand"
4351
+ ),
4352
+ UNREACHABLE_WAIT_CAUSE_PREMISE_REFUSAL: (
4353
+ "not fixable by a requeue alone — run `coord drive-queue "
4354
+ "clear-refusal` once the missing prerequisite is confirmed, THEN "
4355
+ "`coord drive-queue remove` + `add`"
4356
+ ),
4357
+ UNREACHABLE_WAIT_CAUSE_UPSTREAM_GAP_PARK: (
4358
+ "not fixable by any fix-it leg or relaunch — clear the row by hand "
4359
+ "once the release lands or the gap is confirmed"
4360
+ ),
4361
+ }
4362
+
4363
+
4364
+ def classify_unreachable_wait_cause(entry: QueueEntry) -> str:
4365
+ """Which `is_unreachable_wait_shape` branch explains *entry*'s wedge.
4366
+
4367
+ Read straight off `entry.last_reason` via the same marker predicates
4368
+ `coord.drive_queue`'s own parked pre-pass and
4369
+ `coord.queue_diagnose._rule_terminal_park` already trust for this text
4370
+ — never a live probe, so this is exactly as cheap as the shape check
4371
+ itself (#2096: one question, one answer, asked the same way everywhere).
4372
+ Callers are expected to gate on :func:`is_unreachable_wait_shape` first;
4373
+ called on a row that fails that shape, this still returns a value
4374
+ rather than raising (the two dispatch-shaped labels degrade safely for
4375
+ an unmatched row — see :func:`unreachable_wait_remedy_command`, which
4376
+ treats an unrecognised cause the same as "never dispatched").
4377
+ """
4378
+ reason = entry.last_reason
4379
+ if is_premise_refusal_reason(reason):
4380
+ return UNREACHABLE_WAIT_CAUSE_PREMISE_REFUSAL
4381
+ if is_needs_decomposition_reason(reason):
4382
+ return UNREACHABLE_WAIT_CAUSE_NEEDS_DECOMPOSITION
4383
+ if is_upstream_gap_park_reason(reason):
4384
+ return UNREACHABLE_WAIT_CAUSE_UPSTREAM_GAP_PARK
4385
+ if entry.attempts and _is_dispatch_failure_reason(reason):
4386
+ return UNREACHABLE_WAIT_CAUSE_DISPATCH_FAILURE
4387
+ return UNREACHABLE_WAIT_CAUSE_NEVER_DISPATCHED
4388
+
4389
+
4390
+ def unreachable_wait_remedy_command(w: UnreachableWait) -> str:
4391
+ """The one-line fix for *w*, picked by `.cause` (#3983) — never the
4392
+ blanket `coord drive-queue remove && add` requeue for a cause the row's
4393
+ OWN last_reason already asserts no relaunch can resolve.
4394
+
4395
+ Mirrors :func:`merge_gate_remedy_command`'s #3016 rule for the same
4396
+ reason: a wrong "run this" is worse than no recommendation, so a cause
4397
+ with no blind-safe command falls back to the identical read-only
4398
+ inspect pattern (`coord drive-queue list`, scoped to the entry's repo)
4399
+ rather than ever proposing `remove`+`add` for a needs-decomposition,
4400
+ premise-refusal or upstream-gap park — relaunching one of those just
4401
+ re-runs the drive straight back into the identical park (the #3922
4402
+ needs-decomposition incident this guards against).
4403
+ """
4404
+ parsed = parse_key(w.key)
4405
+ repo, issue = parsed if parsed is not None else ("", 0)
4406
+ if w.cause in _UNREACHABLE_WAIT_TERMINAL_PARK_CAUSES:
4407
+ return f"coord drive-queue list --repo {repo}"
4408
+ return (
4409
+ f"coord drive-queue remove {repo} {issue} && "
4410
+ f"coord drive-queue add {repo} {issue}"
4411
+ )
4412
+
4413
+
4414
+ def format_coarse_duration(delta_seconds: float) -> str:
4415
+ """``42s`` / ``3h`` / ``5d`` — coarse, single-unit (#2133's ask).
4416
+
4417
+ Shared by :func:`describe_unreachable_wait` and
4418
+ `coord.commands.drive_queue`'s own age renderings (imported from here
4419
+ rather than re-implemented) so "how long has this held" always reads
4420
+ the same shape everywhere it is shown.
4421
+ """
4422
+ if delta_seconds < 60:
4423
+ return f"{int(delta_seconds)}s"
4424
+ if delta_seconds < 3600:
4425
+ return f"{int(delta_seconds // 60)}m"
4426
+ if delta_seconds < 86400:
4427
+ return f"{int(delta_seconds // 3600)}h"
4428
+ return f"{int(delta_seconds // 86400)}d"
4429
+
4430
+
4276
4431
  def is_unreachable_wait(
4277
4432
  entry: QueueEntry,
4278
4433
  *,
@@ -4327,21 +4482,74 @@ def detect_unreachable_waits(
4327
4482
  deferrals=e.deferrals,
4328
4483
  last_reason=e.last_reason,
4329
4484
  dependents=dependents_of.get(e.key, 0),
4485
+ cause=classify_unreachable_wait_cause(e),
4486
+ reason_at=e.reason_at,
4330
4487
  )
4331
4488
  )
4332
4489
  return waits
4333
4490
 
4334
4491
 
4335
- def unreachable_wait_alert(waits: Sequence[UnreachableWait]) -> QueueAlert:
4492
+ def describe_unreachable_wait(w: UnreachableWait, *, now: float | None = None) -> str:
4493
+ """Render one :class:`UnreachableWait` — the entry, its cause (#3983),
4494
+ how long it has sat this way, and (#2978) its dependent count when
4495
+ non-zero, naming WHY those dependents need no remedy of their own (they
4496
+ self-heal on #2756 the moment the root clears, so a reader must not
4497
+ read this as "fix these too").
4498
+
4499
+ *now* is the caller's wall clock: omitted (the default), the age clause
4500
+ is left out rather than guessed — the same degrade `_reason_age_suffix`
4501
+ uses for a row with no `reason_at` at all. Every live caller has a
4502
+ clock available (`time.time()` for the CLI/notifier, `ctx.now` for the
4503
+ health probe) and is expected to pass it; only a clockless test exercises
4504
+ the bare form.
4505
+
4506
+ One rendering, shared by :func:`unreachable_wait_alert` (the `coord
4507
+ drive-queue status` `alert:` line), `coord doctor`'s WARN sample
4508
+ (:mod:`coord.health.checks.wedged_drive_queue`) and (#3983)
4509
+ :mod:`coord.notifier.collect`'s own per-root ``HaltedDrive`` reason —
4510
+ so the CLI, the health probe and the pager phrase the identical finding
4511
+ identically rather than drifting apart (#2096).
4512
+ """
4513
+ age = ""
4514
+ if now is not None and w.reason_at is not None:
4515
+ age = f", stuck {format_coarse_duration(max(0.0, now - w.reason_at))}"
4516
+ cause_label = _UNREACHABLE_WAIT_CAUSE_LABEL.get(w.cause, w.cause or "unknown cause")
4517
+ base = f"{w.key} ({w.state}, {cause_label}, {w.deferrals} deferrals{age})"
4518
+ notes: list[str] = []
4519
+ manual_note = _UNREACHABLE_WAIT_CAUSE_MANUAL_NOTE.get(w.cause)
4520
+ if manual_note:
4521
+ notes.append(manual_note)
4522
+ if w.dependents:
4523
+ plural = "y" if w.dependents == 1 else "ies"
4524
+ notes.append(
4525
+ f"{w.dependents} dependent entr{plural} chained behind it will "
4526
+ "self-heal automatically once this clears (#2756), no remedy "
4527
+ "needed on them"
4528
+ )
4529
+ if notes:
4530
+ base += " — " + "; ".join(notes)
4531
+ return base
4532
+
4533
+
4534
+ def unreachable_wait_alert(
4535
+ waits: Sequence[UnreachableWait], *, now: float | None = None
4536
+ ) -> QueueAlert:
4336
4537
  """The queue-level record #2944's predicate raises, in :func:`_hold_alert`'s
4337
4538
  shape — a message naming the entry (or entries), the evidence that
4338
- qualified it, and the ONE remedy that actually clears it.
4539
+ qualified it, and the remedy that actually clears it.
4540
+
4541
+ #3983: the remedy is picked PER ENTRY by :func:`unreachable_wait_remedy_command`
4542
+ — never the blanket ``remove`` + ``add`` for a needs-decomposition/
4543
+ premise-refusal/upstream-gap park, each of which the row's own
4544
+ last_reason already asserts no relaunch can resolve (see that
4545
+ function's docstring). The top-level ``command`` field mirrors the
4546
+ single entry's remedy when there is exactly one; with several entries
4547
+ of possibly different causes there is no one command that is safe for
4548
+ all of them, so it falls back to the same read-only ``coord
4549
+ drive-queue list`` #3016's ``merge_gate_remedy_command`` falls back to
4550
+ — the per-entry remedy is still named in ``details`` and inline in
4551
+ ``reason`` via :func:`describe_unreachable_wait`.
4339
4552
 
4340
- ``add`` alone does not clear ``blocked`` (the queue list already
4341
- documents this as a footgun elsewhere) — only ``remove`` then ``add``
4342
- does, so that is the command surfaced here rather than the generic
4343
- ``coord drive-queue list`` other alerts fall back on; naming the wrong
4344
- remedy on a state this non-obvious defeats the point of alerting at all.
4345
4553
  Named INLINE in ``reason`` (not only in ``command``, which
4346
4554
  ``drive-queue status``'s plain-text rendering never echoes — only its
4347
4555
  ``gate_readings``/``details`` lines are printed) so the remedy is visible
@@ -4358,42 +4566,40 @@ def unreachable_wait_alert(waits: Sequence[UnreachableWait]) -> QueueAlert:
4358
4566
  that were never named — but easy to mis-generalize to "the dependents
4359
4567
  too" by an operator who does not already know #2756 self-heals them.
4360
4568
  """
4361
- def _name(w: UnreachableWait) -> str:
4362
- base = f"{w.key} ({w.state}, {w.deferrals} deferrals)"
4363
- if w.dependents:
4364
- plural = "ies" if w.dependents != 1 else "y"
4365
- base += (
4366
- f" — {w.dependents} dependent entr{plural} chained behind it "
4367
- "will self-heal automatically once this clears (#2756), no "
4368
- "remedy needed on them"
4369
- )
4370
- return base
4371
-
4372
- names = ", ".join(_name(w) for w in waits[:5])
4569
+ names = ", ".join(describe_unreachable_wait(w, now=now) for w in waits[:5])
4373
4570
  more = ", ..." if len(waits) > 5 else ""
4374
4571
  plural = len(waits) != 1
4572
+ if len(waits) == 1:
4573
+ command = unreachable_wait_remedy_command(waits[0])
4574
+ elif waits and all(
4575
+ w.cause not in _UNREACHABLE_WAIT_TERMINAL_PARK_CAUSES for w in waits
4576
+ ):
4577
+ command = (
4578
+ "coord drive-queue remove <repo> <issue> && "
4579
+ "coord drive-queue add <repo> <issue> — for each ROOT entry "
4580
+ "named above; any dependents chained behind it self-heal on "
4581
+ "their own (#2756)"
4582
+ )
4583
+ else:
4584
+ command = "coord drive-queue list # remedy differs per entry — see above"
4375
4585
  return QueueAlert(
4376
4586
  reason=(
4377
4587
  f"{len(waits)} queue entr{'ies' if plural else 'y'} stuck in a "
4378
4588
  "guaranteed-false wait — blocked/parked with no branch/PR/"
4379
4589
  "merge-queue row any sweep could ever act on (never dispatched, "
4380
4590
  "or every dispatch attempt died before creating an assignment); "
4381
- f"no sweep can ever clear this on its own: {names}{more}. Fix: "
4382
- "coord drive-queue remove <repo> <issue> && "
4383
- "coord drive-queue add <repo> <issue> for each ROOT entry named "
4384
- "above — never on a dependent chained behind one."
4591
+ f"no sweep can ever clear this on its own: {names}{more}. Fix "
4592
+ "is named per entry above — a needs-decomposition/"
4593
+ "premise-refusal/upstream-gap park is NEVER cleared by `remove`"
4594
+ "+`add`, only an ordinary never-dispatched/dispatch-failure root is."
4385
4595
  ),
4386
4596
  details=tuple(
4387
- f"{w.key}: {w.state}, {w.deferrals} deferrals, "
4388
- f"dependents={w.dependents}, last_reason={w.last_reason!r}"
4597
+ f"{w.key}: {w.state}, cause={w.cause}, {w.deferrals} deferrals, "
4598
+ f"dependents={w.dependents}, last_reason={w.last_reason!r}, "
4599
+ f"fix={unreachable_wait_remedy_command(w)}"
4389
4600
  for w in waits
4390
4601
  ),
4391
- command=(
4392
- "coord drive-queue remove <repo> <issue> && "
4393
- "coord drive-queue add <repo> <issue> — for each ROOT entry "
4394
- "named above; any dependents chained behind it self-heal on "
4395
- "their own (#2756)"
4396
- ),
4602
+ command=command,
4397
4603
  )
4398
4604
 
4399
4605