code-coordinator 0.5.758__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.758 → code_coordinator-0.5.759}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.758 → 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.758 → code_coordinator-0.5.759}/coord/commands/drive_queue.py +33 -15
  5. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/drive_queue.py +237 -31
  6. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/wedged_drive_queue.py +22 -13
  7. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/notifier/collect.py +98 -3
  8. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_drive_queue.py +129 -1
  9. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_drive_queue.py +176 -0
  10. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_notifier_collect.py +146 -0
  11. code_coordinator-0.5.758/code_coordinator.egg-info/scm_version.json +0 -8
  12. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/.claude/commands/board.md +0 -0
  13. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/.claude/commands/complete-session.md +0 -0
  14. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/.claude/commands/coordinator.md +0 -0
  15. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/.githooks/_lib.sh +0 -0
  16. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/.githooks/post-checkout +0 -0
  17. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/.githooks/post-commit +0 -0
  18. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/.githooks/post-merge +0 -0
  19. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  20. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/.github/coord-ci-acceptance.yml +0 -0
  21. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/.github/workflows/auto-release.yml +0 -0
  22. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/.github/workflows/publish.yml +0 -0
  23. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/.github/workflows/test.yml +0 -0
  24. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/.gitignore +0 -0
  25. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/CLAUDE.md +0 -0
  26. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/GOAL.md +0 -0
  27. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/LICENSE +0 -0
  28. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/MANIFEST.in +0 -0
  29. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/README.md +0 -0
  30. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/code_coordinator.egg-info/SOURCES.txt +0 -0
  31. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/code_coordinator.egg-info/dependency_links.txt +0 -0
  32. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/code_coordinator.egg-info/entry_points.txt +0 -0
  33. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/code_coordinator.egg-info/requires.txt +0 -0
  34. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/code_coordinator.egg-info/scm_file_list.json +0 -0
  35. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/code_coordinator.egg-info/top_level.txt +0 -0
  36. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/__init__.py +0 -0
  37. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/_board_mapping.py +0 -0
  38. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/acceptance.py +0 -0
  39. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/acceptance_drivers.py +0 -0
  40. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/agent.py +0 -0
  41. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/agent_app.py +0 -0
  42. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/agent_update.py +0 -0
  43. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/agents/opencode/.gitignore +0 -0
  44. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/agents/opencode/agents/work.md +0 -0
  45. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/agents/opencode/routing.jsonc +0 -0
  46. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/app_drive.py +0 -0
  47. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/app_drive_daemon.py +0 -0
  48. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/approved_work.py +0 -0
  49. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/audit.py +0 -0
  50. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/auto_loop.py +0 -0
  51. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/backup.py +0 -0
  52. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/block_log.py +0 -0
  53. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/board_doctor.py +0 -0
  54. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/board_doctor_followthrough.py +0 -0
  55. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/board_doctor_permissions.py +0 -0
  56. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/board_doctor_policy.py +0 -0
  57. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/board_schema.py +0 -0
  58. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/board_service.py +0 -0
  59. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/board_wire.py +0 -0
  60. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/brain.py +0 -0
  61. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/branch_model.py +0 -0
  62. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/briefing_lessons.py +0 -0
  63. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/bug_intake.py +0 -0
  64. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/bugbash.py +0 -0
  65. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/cargo_cache.py +0 -0
  66. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/ci_fix.py +0 -0
  67. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/ci_github.py +0 -0
  68. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/ci_gitlab.py +0 -0
  69. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/ci_store.py +0 -0
  70. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/claim.py +0 -0
  71. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/claude_setup_token.py +0 -0
  72. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/cli.py +0 -0
  73. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/client.py +0 -0
  74. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/codegen.py +0 -0
  75. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/__init__.py +0 -0
  76. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/_common.py +0 -0
  77. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/acceptance.py +0 -0
  78. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/agent_ops.py +0 -0
  79. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/app_drive.py +0 -0
  80. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/audit.py +0 -0
  81. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/backup.py +0 -0
  82. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/bugbash.py +0 -0
  83. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/chat.py +0 -0
  84. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/ci.py +0 -0
  85. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/codegen.py +0 -0
  86. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/dispatch.py +0 -0
  87. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/dispatch_workers.py +0 -0
  88. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/dr.py +0 -0
  89. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/drive.py +0 -0
  90. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/gate_a.py +0 -0
  91. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/gates.py +0 -0
  92. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/issues.py +0 -0
  93. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/lifecycle.py +0 -0
  94. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/machine.py +0 -0
  95. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/merge.py +0 -0
  96. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/milestone.py +0 -0
  97. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/plan_followup.py +0 -0
  98. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/plans.py +0 -0
  99. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/portal.py +0 -0
  100. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/pr.py +0 -0
  101. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/release.py +0 -0
  102. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/repo.py +0 -0
  103. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/report.py +0 -0
  104. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/review.py +0 -0
  105. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/scorecard.py +0 -0
  106. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/sessions.py +0 -0
  107. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/setup.py +0 -0
  108. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/smoke.py +0 -0
  109. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/status.py +0 -0
  110. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/store_migrate.py +0 -0
  111. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/terminal.py +0 -0
  112. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/test_gate.py +0 -0
  113. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/commands/tui.py +0 -0
  114. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/comments.py +0 -0
  115. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/config.py +0 -0
  116. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/config_reload.py +0 -0
  117. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/confirm_test.py +0 -0
  118. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/conflict_fix.py +0 -0
  119. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/dao.py +0 -0
  120. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/dashboard/__init__.py +0 -0
  121. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/dashboard/fixture.py +0 -0
  122. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/dashboard/index.html +0 -0
  123. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/dashboard/reports.html +0 -0
  124. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/dashboard/server.py +0 -0
  125. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/dashboard/terminal.py +0 -0
  126. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/db.py +0 -0
  127. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/dead_end.py +0 -0
  128. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/decomposition_chat.py +0 -0
  129. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/README.md +0 -0
  130. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-agent.service +0 -0
  131. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-backup.service +0 -0
  132. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-backup.timer +0 -0
  133. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-board-doctor.service +0 -0
  134. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-board-doctor.timer +0 -0
  135. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-db-backup.service +0 -0
  136. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-db-backup.sh +0 -0
  137. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-db-backup.timer +0 -0
  138. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-dr-verify.service +0 -0
  139. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-dr-verify.timer +0 -0
  140. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-drive-queue.service +0 -0
  141. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-drive-queue.timer +0 -0
  142. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-failure-notify.service +0 -0
  143. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-fleet-watchdog.service +0 -0
  144. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  145. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-nightly-smoke.service +0 -0
  146. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-nightly-smoke.timer +0 -0
  147. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-notify.service +0 -0
  148. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-notify.timer +0 -0
  149. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-release-propagate.service +0 -0
  150. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-release-propagate.timer +0 -0
  151. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-release-window.service +0 -0
  152. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-release-window.timer +0 -0
  153. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-serve.service +0 -0
  154. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-web-dist-build.service +0 -0
  155. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-web-dist-build.timer +0 -0
  156. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy/coord-web.service +0 -0
  157. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy_manifest.py +0 -0
  158. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deploy_units.py +0 -0
  159. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deprecation_telemetry.py +0 -0
  160. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/deps.py +0 -0
  161. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/diagnose.py +0 -0
  162. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/dirlink.py +0 -0
  163. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/dispatch.py +0 -0
  164. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/dispatch_liveness.py +0 -0
  165. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/dist_name.py +0 -0
  166. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/dr_promote.py +0 -0
  167. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/dr_verify.py +0 -0
  168. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/drive.py +0 -0
  169. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/drive_sessions_snapshot.py +0 -0
  170. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/drive_state.py +0 -0
  171. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/entry_truth.py +0 -0
  172. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/events.py +0 -0
  173. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/failure_class.py +0 -0
  174. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/failure_classifier.py +0 -0
  175. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/filelock.py +0 -0
  176. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/fleet_config_health.py +0 -0
  177. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/forge_availability.py +0 -0
  178. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/freshness.py +0 -0
  179. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/gate_a.py +0 -0
  180. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/gate_b.py +0 -0
  181. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/gate_snapshot.py +0 -0
  182. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/gates.py +0 -0
  183. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/gen_board_fixture.py +0 -0
  184. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/github_ops.py +0 -0
  185. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/github_throttle.py +0 -0
  186. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/goal.py +0 -0
  187. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/graph_health.py +0 -0
  188. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/gtk_native_driver.py +0 -0
  189. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/__init__.py +0 -0
  190. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/aggregate.py +0 -0
  191. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/__init__.py +0 -0
  192. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/_ci_pin.py +0 -0
  193. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/agent_install.py +0 -0
  194. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/cargo_targets.py +0 -0
  195. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/claude_binary.py +0 -0
  196. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/config_drift.py +0 -0
  197. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  198. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/coord_web_ci_pin.py +0 -0
  199. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/deploy_lane_facts.py +0 -0
  200. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/disk.py +0 -0
  201. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/fleet_board.py +0 -0
  202. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  203. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/fleet_phantom.py +0 -0
  204. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/fleet_unit_drift.py +0 -0
  205. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/graph.py +0 -0
  206. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/graphify_cli.py +0 -0
  207. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/gui_lane_preflight.py +0 -0
  208. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/index_lock.py +0 -0
  209. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/issues_sync_staleness.py +0 -0
  210. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/local_machine_identity.py +0 -0
  211. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/plan_usage.py +0 -0
  212. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/pr_churn.py +0 -0
  213. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/release_cordon.py +0 -0
  214. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/repo_state.py +0 -0
  215. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/spawned_coord.py +0 -0
  216. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/stalled_pipeline.py +0 -0
  217. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/sustained_cpu.py +0 -0
  218. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/timer_active.py +0 -0
  219. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/toolchain.py +0 -0
  220. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/unit_drift.py +0 -0
  221. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/unit_enablement.py +0 -0
  222. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/checks/worktrees.py +0 -0
  223. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/cli.py +0 -0
  224. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/context.py +0 -0
  225. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/fleet_snapshot.py +0 -0
  226. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/models.py +0 -0
  227. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/pypi.py +0 -0
  228. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/registry.py +0 -0
  229. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/render.py +0 -0
  230. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/health/units.py +0 -0
  231. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/hooks.py +0 -0
  232. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/housekeeping.py +0 -0
  233. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/interactive.py +0 -0
  234. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/invariant_alarms.py +0 -0
  235. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/issue_store.py +0 -0
  236. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/issues_sync_status.py +0 -0
  237. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/key_spec.py +0 -0
  238. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/liveness_auditor.py +0 -0
  239. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/mac_native_driver.py +0 -0
  240. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/machine_fault.py +0 -0
  241. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/machine_metrics.py +0 -0
  242. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/machine_onboard.py +0 -0
  243. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/machine_pause.py +0 -0
  244. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/machine_stats.py +0 -0
  245. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/merge_queue.py +0 -0
  246. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/milestone_chat.py +0 -0
  247. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/milestone_dispatch.py +0 -0
  248. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/milestone_gate.py +0 -0
  249. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/milestone_order.py +0 -0
  250. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/mock_author.py +0 -0
  251. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/models.py +0 -0
  252. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/native_fs_wait.py +0 -0
  253. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/native_pixels.py +0 -0
  254. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/network.py +0 -0
  255. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/new_issue_chat.py +0 -0
  256. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/nightly_runner.py +0 -0
  257. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/nightly_smoke.py +0 -0
  258. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/nightly_status.py +0 -0
  259. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/nightly_store.py +0 -0
  260. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/notifier/__init__.py +0 -0
  261. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/notifier/baseline.py +0 -0
  262. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/notifier/cli.py +0 -0
  263. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/notifier/digest.py +0 -0
  264. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/notifier/models.py +0 -0
  265. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/notifier/predicate.py +0 -0
  266. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/notifier/service.py +0 -0
  267. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/notifier/store.py +0 -0
  268. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/notifier/transport.py +0 -0
  269. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/notify.py +0 -0
  270. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/openapi.py +0 -0
  271. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/overlap_fence.py +0 -0
  272. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/overlap_predict.py +0 -0
  273. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/parentage.py +0 -0
  274. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/parentage_github.py +0 -0
  275. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/pipeline.py +0 -0
  276. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/plan_parser.py +0 -0
  277. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/plans.py +0 -0
  278. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/platform_paths.py +0 -0
  279. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/portal_bridge.py +0 -0
  280. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/portal_store.py +0 -0
  281. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/portal_sync.py +0 -0
  282. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/pr_body_lint.py +0 -0
  283. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/preflight_size.py +0 -0
  284. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/prereqs.py +0 -0
  285. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/prereview_gate.py +0 -0
  286. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/progress.py +0 -0
  287. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/providers/__init__.py +0 -0
  288. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/providers/base.py +0 -0
  289. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/providers/claude.py +0 -0
  290. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/providers/claude_pty.py +0 -0
  291. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/providers/opencode.py +0 -0
  292. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/queue_diagnose.py +0 -0
  293. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/reconcile.py +0 -0
  294. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/reconcile_tick.py +0 -0
  295. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/refine_chat.py +0 -0
  296. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/release_cordon.py +0 -0
  297. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/release_gate.py +0 -0
  298. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/release_propagate.py +0 -0
  299. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/release_verify.py +0 -0
  300. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/release_window.py +0 -0
  301. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/repo_dormancy.py +0 -0
  302. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/repo_edit.py +0 -0
  303. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/repo_onboard.py +0 -0
  304. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/reports.py +0 -0
  305. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/rest_schema.py +0 -0
  306. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/restart_cmd.py +0 -0
  307. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/revalidate.py +0 -0
  308. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/review.py +0 -0
  309. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/scorecard.py +0 -0
  310. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/self_health.py +0 -0
  311. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/serve_app.py +0 -0
  312. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/shell_exec_wrap.py +0 -0
  313. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  314. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  315. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  316. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  317. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  318. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/skills/portal-followup/SKILL.md +0 -0
  319. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/skills/release-now/SKILL.md +0 -0
  320. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  321. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  322. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/skills/update-issue/SKILL.md +0 -0
  323. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/smoke.py +0 -0
  324. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/smoke_tags.py +0 -0
  325. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/spend_ceiling.py +0 -0
  326. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/split_work.py +0 -0
  327. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/sql.py +0 -0
  328. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/stage_projection.py +0 -0
  329. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/state.py +0 -0
  330. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/store_migrate.py +0 -0
  331. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/store_parity.py +0 -0
  332. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/templates/deploy-cloudflare.node.yml +0 -0
  333. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/test_author.py +0 -0
  334. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/test_chat.py +0 -0
  335. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/test_orchestrator.py +0 -0
  336. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/test_report.py +0 -0
  337. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/tui_pty_driver.py +0 -0
  338. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/tui_release.py +0 -0
  339. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/uat_checks.py +0 -0
  340. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/upstream_gaps.py +0 -0
  341. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/usage.py +0 -0
  342. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/usage_limits.py +0 -0
  343. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/usage_rollup.py +0 -0
  344. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/win_native_bridge.py +0 -0
  345. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/win_native_driver.py +0 -0
  346. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coord/worker_events.py +0 -0
  347. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/coordinator.example.yml +0 -0
  348. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-agent.service +0 -0
  349. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-backup.service +0 -0
  350. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-backup.timer +0 -0
  351. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-board-doctor.service +0 -0
  352. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-board-doctor.timer +0 -0
  353. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-db-backup.service +0 -0
  354. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-db-backup.sh +0 -0
  355. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-db-backup.timer +0 -0
  356. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-dr-verify.service +0 -0
  357. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-dr-verify.timer +0 -0
  358. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-drive-queue.service +0 -0
  359. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-drive-queue.timer +0 -0
  360. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-failure-notify.service +0 -0
  361. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-failure-notify.sh +0 -0
  362. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-fleet-watchdog.service +0 -0
  363. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-fleet-watchdog.timer +0 -0
  364. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-nightly-smoke.service +0 -0
  365. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-nightly-smoke.timer +0 -0
  366. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-notify.service +0 -0
  367. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-notify.timer +0 -0
  368. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-release-propagate.service +0 -0
  369. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-release-propagate.timer +0 -0
  370. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-release-window.service +0 -0
  371. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-release-window.timer +0 -0
  372. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-serve.service +0 -0
  373. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-web-dist-build.service +0 -0
  374. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-web-dist-build.sh +0 -0
  375. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-web-dist-build.timer +0 -0
  376. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-web-rollback.sh +0 -0
  377. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/coord-web.service +0 -0
  378. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/deploy/node-shim.sh +0 -0
  379. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/ADR_COORD_TUI_CI.md +0 -0
  380. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  381. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/ADR_COORD_WEB_CI.md +0 -0
  382. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/ADR_COORD_WEB_DIST.md +0 -0
  383. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  384. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/AGENT_OPERATIONS.md +0 -0
  385. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/ARCHITECTURE.md +0 -0
  386. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/ARCH_SECURITY_GATES.md +0 -0
  387. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/COCKPIT.md +0 -0
  388. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/CONTROL_CENTER.md +0 -0
  389. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/COST_DISCIPLINE.md +0 -0
  390. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/CROSS_PLATFORM.md +0 -0
  391. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/CUSTOMER_FACING_APPS.md +0 -0
  392. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/CUSTOMER_PORTAL.md +0 -0
  393. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/DATA_STORE_SELECTION.md +0 -0
  394. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/DISASTER_RECOVERY.md +0 -0
  395. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/DRIVE_QUEUE.md +0 -0
  396. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/EPHEMERAL_WORKERS.md +0 -0
  397. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/FORGE_MIGRATION.md +0 -0
  398. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/GRAPHIFY_SETUP.md +0 -0
  399. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/ISSUE_GUIDANCE.md +0 -0
  400. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/MAC_MINI.md +0 -0
  401. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  402. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/NOTIFIER.md +0 -0
  403. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/OPENCODE_VERIFICATION.md +0 -0
  404. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/OPERATING_GOTCHAS.md +0 -0
  405. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/OPERATOR_GUIDES.md +0 -0
  406. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/ORACLE_LOOP.md +0 -0
  407. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/PHONE_WEBAPP.md +0 -0
  408. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/PIPELINE_V2.md +0 -0
  409. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/PLATFORM_EVOLUTION.md +0 -0
  410. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/SECOND_BACKEND.md +0 -0
  411. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/STORE_SERVICE.md +0 -0
  412. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  413. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/WEB_CONTROL_CENTER.md +0 -0
  414. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/WSL_WINDOWS_WORKER.md +0 -0
  415. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/mocks/web/README.md +0 -0
  416. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/mocks/web/_tokens.css +0 -0
  417. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/mocks/web/issue-detail.html +0 -0
  418. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/mocks/web/pipeline-narrow.html +0 -0
  419. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/docs/mocks/web/pipeline-wide.html +0 -0
  420. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/graphify-out/.gitignore +0 -0
  421. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/install-agent.sh +0 -0
  422. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/pyproject.toml +0 -0
  423. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/audit_review_verdict_overrides.py +0 -0
  424. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  425. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/azure-workers/build-worker-image.sh +0 -0
  426. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/azure-workers/coordinator-machine.py +0 -0
  427. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/azure-workers/dr-down.sh +0 -0
  428. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/azure-workers/dr-up.sh +0 -0
  429. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/azure-workers/epic-down.sh +0 -0
  430. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/azure-workers/epic-up.sh +0 -0
  431. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/azure-workers/preflight.sh +0 -0
  432. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/azure-workers/provision-server.sh +0 -0
  433. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/azure-workers/provision-worker.sh +0 -0
  434. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  435. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  436. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/azure-workers/throwaway-vm.sh +0 -0
  437. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/azure-workers/verify-github-token.sh +0 -0
  438. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/check_gh_argv_containment.py +0 -0
  439. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/codegen.py +0 -0
  440. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/comment_cruft.py +0 -0
  441. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/coord-test-runner.sh +0 -0
  442. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  443. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  444. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  445. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  446. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/coord-venv-rollback.sh +0 -0
  447. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/drive-batch.sh +0 -0
  448. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/extract-coord-tui.sh +0 -0
  449. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/fleet_watchdog.py +0 -0
  450. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/gen_board_fixture.py +0 -0
  451. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/gen_mock_index.py +0 -0
  452. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/lib/provision-core.sh +0 -0
  453. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/next_release_tag.py +0 -0
  454. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/provision-machine.sh +0 -0
  455. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/run_tests_in_populated_home.sh +0 -0
  456. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/run_tests_without_gh.sh +0 -0
  457. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/setup-macmini.sh +0 -0
  458. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/smoke_437_interactive.py +0 -0
  459. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/verify-provision-noble.sh +0 -0
  460. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/verify_878_review_capture.py +0 -0
  461. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/verify_release_published.py +0 -0
  462. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/scripts/verify_release_wheel.py +0 -0
  463. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/setup.cfg +0 -0
  464. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/SMOKE_SET.md +0 -0
  465. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/__init__.py +0 -0
  466. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/acceptance/ms-37/conftest.py +0 -0
  467. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/acceptance/ms-37/contract.md +0 -0
  468. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/acceptance/ms-37/manifest.yml +0 -0
  469. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  470. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  471. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/acceptance/ms-51/contract.md +0 -0
  472. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  473. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  474. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/acceptance/ms-51/manifest.yml +0 -0
  475. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  476. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/acceptance/ms-51/tsconfig.json +0 -0
  477. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  478. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/backends.py +0 -0
  479. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/conftest.py +0 -0
  480. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/board-pipeline-basic.json +0 -0
  481. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  482. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  483. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  484. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  485. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/playwright/all_pass.json +0 -0
  486. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  487. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/playwright/mixed_fail.json +0 -0
  488. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  489. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  490. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/playwright/skip.json +0 -0
  491. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/playwright/truncated.json +0 -0
  492. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  493. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  494. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  495. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  496. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
  497. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  498. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  499. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  500. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  501. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_acceptance.py +0 -0
  502. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_acceptance_drivers.py +0 -0
  503. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent.py +0 -0
  504. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_api_error.py +0 -0
  505. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_app.py +0 -0
  506. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_branch_base.py +0 -0
  507. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_branch_capture.py +0 -0
  508. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_config_free_1712.py +0 -0
  509. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_deploy_units_endpoint.py +0 -0
  510. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_dirty_worktree.py +0 -0
  511. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  512. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_graceful_shutdown_3649.py +0 -0
  513. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_graph_refresh.py +0 -0
  514. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_graph_self_heal.py +0 -0
  515. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_health_h3.py +0 -0
  516. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_idle_restart.py +0 -0
  517. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_push_failure.py +0 -0
  518. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_reap.py +0 -0
  519. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_repos_and_pull.py +0 -0
  520. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_restart_services_endpoint.py +0 -0
  521. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_skills_self_heal.py +0 -0
  522. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_startup_diagnostics.py +0 -0
  523. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_update.py +0 -0
  524. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_update_bluegreen.py +0 -0
  525. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_usage_limit.py +0 -0
  526. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_agent_zero_commit.py +0 -0
  527. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_ambient_home_isolation.py +0 -0
  528. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_app_drive.py +0 -0
  529. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_approve_capability_reroute_3241.py +0 -0
  530. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_approve_dependency_busy_2804.py +0 -0
  531. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_approve_reject_plan.py +0 -0
  532. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_approve_usage_gate.py +0 -0
  533. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_approved_work_2532.py +0 -0
  534. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_approved_work_2996.py +0 -0
  535. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_assignment_already_recorded_daemon.py +0 -0
  536. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_audit_log.py +0 -0
  537. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_audit_outcome.py +0 -0
  538. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_audit_query.py +0 -0
  539. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_auto_loop.py +0 -0
  540. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_auto_release_publish_2035.py +0 -0
  541. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_backend_selection.py +0 -0
  542. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_backup.py +0 -0
  543. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_base_checkout_restore.py +0 -0
  544. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_block_log.py +0 -0
  545. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_board_cap_762.py +0 -0
  546. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_board_doctor.py +0 -0
  547. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_board_doctor_followthrough.py +0 -0
  548. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_board_doctor_permissions.py +0 -0
  549. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_board_doctor_policy.py +0 -0
  550. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_board_fixture.py +0 -0
  551. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_board_nightly_status.py +0 -0
  552. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_board_read_path.py +0 -0
  553. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_board_schema.py +0 -0
  554. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_board_service.py +0 -0
  555. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_board_state.py +0 -0
  556. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_board_wire.py +0 -0
  557. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_brain.py +0 -0
  558. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_branch_model.py +0 -0
  559. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_briefing_lessons.py +0 -0
  560. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_bug_intake.py +0 -0
  561. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_bugbash.py +0 -0
  562. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_build_worker_image_env_update.py +0 -0
  563. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cargo_cache.py +0 -0
  564. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_check_gh_argv_containment.py +0 -0
  565. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_ci_acceptance_gate_1950.py +0 -0
  566. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_ci_fix.py +0 -0
  567. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_ci_github.py +0 -0
  568. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_ci_gitlab.py +0 -0
  569. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_ci_parity_2091.py +0 -0
  570. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_ci_store.py +0 -0
  571. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_claim.py +0 -0
  572. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_claude_md_budget.py +0 -0
  573. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_claude_setup_token.py +0 -0
  574. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_acceptance.py +0 -0
  575. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_assign.py +0 -0
  576. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  577. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_assign_interactive_remote.py +0 -0
  578. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_assign_provider.py +0 -0
  579. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  580. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_audit.py +0 -0
  581. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_chat_continue.py +0 -0
  582. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_ci.py +0 -0
  583. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_codegen.py +0 -0
  584. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_decide.py +0 -0
  585. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_diagnose_capability_rules.py +0 -0
  586. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_diagnose_config_provenance.py +0 -0
  587. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_diagnose_forge_availability.py +0 -0
  588. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_diagnose_graph.py +0 -0
  589. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_diagnose_self.py +0 -0
  590. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_diagnose_test_coverage.py +0 -0
  591. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_doctor.py +0 -0
  592. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_doctor_config_free_1801.py +0 -0
  593. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  594. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  595. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_drive.py +0 -0
  596. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_drive_queue_investigate.py +0 -0
  597. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_drive_queue_stranded_prereq.py +0 -0
  598. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_escalate.py +0 -0
  599. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_fix_headless_review.py +0 -0
  600. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_gate_a.py +0 -0
  601. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_gates_next_action.py +0 -0
  602. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_inject_board_less.py +0 -0
  603. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_install_drift.py +0 -0
  604. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_install_skills.py +0 -0
  605. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_issue_close_wrong_repo.py +0 -0
  606. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_issue_comment.py +0 -0
  607. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_issue_create_label.py +0 -0
  608. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_issue_reopen.py +0 -0
  609. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_issue_view_list.py +0 -0
  610. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_issues.py +0 -0
  611. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_merge.py +0 -0
  612. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_milestone_assign.py +0 -0
  613. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_milestone_capture.py +0 -0
  614. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_milestone_chat_add_child.py +0 -0
  615. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_milestone_dispatch.py +0 -0
  616. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_milestone_gate_b.py +0 -0
  617. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_milestone_gate_c.py +0 -0
  618. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_milestone_order.py +0 -0
  619. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  620. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_milestone_ship.py +0 -0
  621. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_network.py +0 -0
  622. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_new_issue_chat.py +0 -0
  623. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_plans.py +0 -0
  624. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_portal.py +0 -0
  625. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_pr.py +0 -0
  626. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_pull_artifact.py +0 -0
  627. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_queue.py +0 -0
  628. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_reattach_sessions.py +0 -0
  629. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_refine_board.py +0 -0
  630. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_release_preflight.py +0 -0
  631. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_release_propagate.py +0 -0
  632. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_release_window.py +0 -0
  633. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_repo_2220.py +0 -0
  634. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  635. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_scorecard.py +0 -0
  636. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_serve_store_backend_3084.py +0 -0
  637. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_set_review_findings.py +0 -0
  638. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_smoke_nightly.py +0 -0
  639. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_smoke_nightly_sweep.py +0 -0
  640. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_status_advisory_terminal.py +0 -0
  641. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_status_contested_tag.py +0 -0
  642. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_status_invariant_alarms.py +0 -0
  643. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_status_machine_fault.py +0 -0
  644. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_status_merge_queue.py +0 -0
  645. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_status_nightly.py +0 -0
  646. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_status_provider.py +0 -0
  647. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_status_retried_3340.py +0 -0
  648. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_status_review_finalizing.py +0 -0
  649. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_status_supervisor_3366.py +0 -0
  650. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_status_test_failed_tag.py +0 -0
  651. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_status_usage_limit.py +0 -0
  652. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_sync_comments_873.py +0 -0
  653. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_test_plan.py +0 -0
  654. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_track.py +0 -0
  655. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_tui_update.py +0 -0
  656. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cli_wait.py +0 -0
  657. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_client.py +0 -0
  658. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_client_base_install.py +0 -0
  659. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_client_config_cache_atomic_3052.py +0 -0
  660. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_client_resource_migration_1946.py +0 -0
  661. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_commands_common.py +0 -0
  662. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_comment_cruft.py +0 -0
  663. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_comments.py +0 -0
  664. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_completion_summary.py +0 -0
  665. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_config.py +0 -0
  666. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_config_acceptance.py +0 -0
  667. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_config_audit.py +0 -0
  668. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_config_drift_check.py +0 -0
  669. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_config_effective.py +0 -0
  670. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_config_prereview_gate.py +0 -0
  671. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_config_pricing.py +0 -0
  672. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  673. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_config_usage_gate.py +0 -0
  674. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_confirm_test.py +0 -0
  675. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_conflict_fix.py +0 -0
  676. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_conflict_fix_semantic.py +0 -0
  677. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  678. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_coord_test.py +0 -0
  679. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  680. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_coord_test_runner_baseline.py +0 -0
  681. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_coord_test_runner_populated_home.py +0 -0
  682. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_coord_test_runner_routing.py +0 -0
  683. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_coord_test_runner_toolchain.py +0 -0
  684. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_coord_test_runner_venv_setup.py +0 -0
  685. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_coord_uat.py +0 -0
  686. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_coord_web_sse_restart_live.py +0 -0
  687. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_coordinator_machine.py +0 -0
  688. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_cross_platform_imports.py +0 -0
  689. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dao.py +0 -0
  690. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dashboard.py +0 -0
  691. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dashboard_api.py +0 -0
  692. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dashboard_fixture.py +0 -0
  693. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dashboard_reports.py +0 -0
  694. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dashboard_server.py +0 -0
  695. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dashboard_terminal.py +0 -0
  696. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dashboard_terminal_live.py +0 -0
  697. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_db.py +0 -0
  698. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dead_end.py +0 -0
  699. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_decomposition_chat.py +0 -0
  700. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_deploy_coord_db_backup.py +0 -0
  701. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_deploy_coord_web_dist.py +0 -0
  702. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_deploy_coord_web_rollback.py +0 -0
  703. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_deploy_db_backup_unit.py +0 -0
  704. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_deploy_drive_queue_unit.py +0 -0
  705. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_deploy_failure_notify_unit.py +0 -0
  706. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_deploy_manifest.py +0 -0
  707. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_deploy_notify_unit.py +0 -0
  708. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_deploy_units_lane.py +0 -0
  709. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_deploy_web_unit.py +0 -0
  710. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_deprecation_telemetry.py +0 -0
  711. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_deps.py +0 -0
  712. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_diagnose.py +0 -0
  713. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dirlink.py +0 -0
  714. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dispatch.py +0 -0
  715. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dispatch_liveness.py +0 -0
  716. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dispatch_target_validation.py +0 -0
  717. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dispatch_workers.py +0 -0
  718. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dist_name.py +0 -0
  719. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_done_housekeeping.py +0 -0
  720. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dr_azure_scripts.py +0 -0
  721. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dr_promote.py +0 -0
  722. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_dr_verify.py +0 -0
  723. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_drive.py +0 -0
  724. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_drive_machine_fault.py +0 -0
  725. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_drive_queue_blocked_rendering.py +0 -0
  726. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_drive_queue_launch_argv.py +0 -0
  727. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_drive_queue_max_parallel_config.py +0 -0
  728. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  729. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_drive_queue_roll_pending.py +0 -0
  730. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  731. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_drive_sessions_snapshot.py +0 -0
  732. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_drive_state.py +0 -0
  733. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_drive_tmux.py +0 -0
  734. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_entry_truth.py +0 -0
  735. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_epic_up_capability_detection.py +0 -0
  736. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  737. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_epic_up_image_provenance.py +0 -0
  738. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_errors.py +0 -0
  739. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_events.py +0 -0
  740. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_failure_class.py +0 -0
  741. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_failure_classifier.py +0 -0
  742. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_filelock.py +0 -0
  743. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  744. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_fix_escalation_classifier.py +0 -0
  745. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_fix_of_force_override.py +0 -0
  746. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_fleet_config_health.py +0 -0
  747. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_fleet_health_probes.py +0 -0
  748. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_fleet_health_snapshot.py +0 -0
  749. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_fleet_watchdog.py +0 -0
  750. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_forge_availability.py +0 -0
  751. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_freshness.py +0 -0
  752. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_gate_a.py +0 -0
  753. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_gate_b.py +0 -0
  754. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_gate_snapshot_staleness.py +0 -0
  755. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_gates.py +0 -0
  756. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  757. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_gen_mock_index.py +0 -0
  758. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_generated_rust_fixture.py +0 -0
  759. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_generated_rust_requests.py +0 -0
  760. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_generated_types_fixture.py +0 -0
  761. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_github_ops.py +0 -0
  762. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_github_throttle.py +0 -0
  763. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_goal.py +0 -0
  764. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_graph_health.py +0 -0
  765. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_graph_selfheal_absent_2237.py +0 -0
  766. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_gtk_native_driver.py +0 -0
  767. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_handoff.py +0 -0
  768. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_checks.py +0 -0
  769. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_cli.py +0 -0
  770. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_cli_graph.py +0 -0
  771. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_config.py +0 -0
  772. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_context.py +0 -0
  773. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_coord_tui_ci_pin.py +0 -0
  774. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_coord_web_ci_pin.py +0 -0
  775. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_deploy_lane_facts.py +0 -0
  776. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_fix.py +0 -0
  777. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_incident_regression.py +0 -0
  778. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_issues_sync_staleness.py +0 -0
  779. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_pr_churn.py +0 -0
  780. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_pypi.py +0 -0
  781. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_registry.py +0 -0
  782. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_release_cordon_probe.py +0 -0
  783. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_sustained_cpu.py +0 -0
  784. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_timer_active.py +0 -0
  785. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_toolchain.py +0 -0
  786. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_unit_drift.py +0 -0
  787. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_unit_enablement.py +0 -0
  788. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_health_wedged_drive_queue.py +0 -0
  789. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_hooks.py +0 -0
  790. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_housekeeping.py +0 -0
  791. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_human_attended_437.py +0 -0
  792. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_init.py +0 -0
  793. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_install_agent_capabilities_3515.py +0 -0
  794. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_install_agent_venv_2911.py +0 -0
  795. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_install_agent_wsl_bridge_3515.py +0 -0
  796. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_integration.py +0 -0
  797. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_interactive.py +0 -0
  798. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_interactive_briefing_echo.py +0 -0
  799. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_interactive_pane_log_2541.py +0 -0
  800. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_interactive_prefill_state.py +0 -0
  801. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_interactive_session_relaunch.py +0 -0
  802. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_interactive_test_verdict_backstop.py +0 -0
  803. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_interactive_token_attribution.py +0 -0
  804. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_interactive_worktree.py +0 -0
  805. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_invariant_alarms.py +0 -0
  806. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_issue_store_seam.py +0 -0
  807. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_issues_sync_status.py +0 -0
  808. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_key_spec.py +0 -0
  809. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_liveness_auditor.py +0 -0
  810. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_liveness_notify.py +0 -0
  811. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_lock_contention_ratchet.py +0 -0
  812. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_mac_native_driver.py +0 -0
  813. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_machine_fault.py +0 -0
  814. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_machine_metrics.py +0 -0
  815. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_machine_onboard.py +0 -0
  816. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_machine_pause.py +0 -0
  817. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_machine_stats.py +0 -0
  818. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_merge_queue.py +0 -0
  819. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_merge_verification.py +0 -0
  820. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_merge_verify.py +0 -0
  821. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_milestone_chat.py +0 -0
  822. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_milestone_dispatch.py +0 -0
  823. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_milestone_gate.py +0 -0
  824. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_milestone_order.py +0 -0
  825. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_milestone_seam.py +0 -0
  826. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_mock_author.py +0 -0
  827. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_model_tiering.py +0 -0
  828. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_models.py +0 -0
  829. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_models_config_labels.py +0 -0
  830. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_models_pinned_1650.py +0 -0
  831. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_native_fs_wait.py +0 -0
  832. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_native_pixels.py +0 -0
  833. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_needs_attention.py +0 -0
  834. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_network.py +0 -0
  835. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_new_issue_chat.py +0 -0
  836. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_next_release_tag.py +0 -0
  837. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_nightly_runner.py +0 -0
  838. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_nightly_smoke.py +0 -0
  839. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_nightly_status.py +0 -0
  840. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_nightly_store.py +0 -0
  841. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_no_eligible_host_3600.py +0 -0
  842. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_node_shim.py +0 -0
  843. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_notifier_baseline.py +0 -0
  844. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_notifier_cli.py +0 -0
  845. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_notifier_config.py +0 -0
  846. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_notifier_drive_seam.py +0 -0
  847. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_notifier_isolation.py +0 -0
  848. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_notifier_predicate.py +0 -0
  849. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_notifier_quiet_hours.py +0 -0
  850. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_notifier_service.py +0 -0
  851. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_notify.py +0 -0
  852. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_notify_drain.py +0 -0
  853. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_openapi.py +0 -0
  854. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_operational_defaults.py +0 -0
  855. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_overlap_fence.py +0 -0
  856. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_overlap_predict.py +0 -0
  857. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_packaged_deploy_units.py +0 -0
  858. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_parentage.py +0 -0
  859. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_paste_landed.py +0 -0
  860. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_pause_store_guard_recursion_3789.py +0 -0
  861. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  862. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_pipeline.py +0 -0
  863. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_plain_runner_smoke_3673.py +0 -0
  864. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_plan_followup_approve_plan_command.py +0 -0
  865. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_plan_followup_pr_command.py +0 -0
  866. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_plan_followup_review_command.py +0 -0
  867. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_plan_only.py +0 -0
  868. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_plan_parser.py +0 -0
  869. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_platform_paths.py +0 -0
  870. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_portal_bridge.py +0 -0
  871. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_portal_config.py +0 -0
  872. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_portal_store.py +0 -0
  873. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_portal_sync.py +0 -0
  874. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_pr_body_lint.py +0 -0
  875. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_preflight_size.py +0 -0
  876. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_prereqs.py +0 -0
  877. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_prereview_gate.py +0 -0
  878. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_production_db_guard.py +0 -0
  879. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_progress.py +0 -0
  880. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_provider_seam.py +0 -0
  881. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_providers.py +0 -0
  882. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_providers_config_labels.py +0 -0
  883. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_providers_pty.py +0 -0
  884. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_provision_core.py +0 -0
  885. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_provision_machine.py +0 -0
  886. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_py_rust_mirror_inventory.py +0 -0
  887. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_queue_diagnose.py +0 -0
  888. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_quiet_hours.py +0 -0
  889. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_quiet_hours_store_2146.py +0 -0
  890. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_reap_merged_sessions.py +0 -0
  891. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_reap_stale_interactive_tick.py +0 -0
  892. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_reconcile.py +0 -0
  893. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_reconcile_branch.py +0 -0
  894. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_reconcile_completions.py +0 -0
  895. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  896. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_reconcile_merges.py +0 -0
  897. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_reconcile_no_agent_record.py +0 -0
  898. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_reconcile_tick.py +0 -0
  899. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_reconcile_usage_limit_done.py +0 -0
  900. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_refine_chat.py +0 -0
  901. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_release_cordon_2101.py +0 -0
  902. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  903. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_release_cordon_deadlock_2240.py +0 -0
  904. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  905. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_release_cordon_stuck_2490.py +0 -0
  906. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_release_gate.py +0 -0
  907. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_release_propagate.py +0 -0
  908. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_release_propagate_threshold.py +0 -0
  909. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_release_roll_between_legs_2854.py +0 -0
  910. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_release_roll_window_handoff.py +0 -0
  911. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_release_unified_1242.py +0 -0
  912. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_release_verify.py +0 -0
  913. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_release_window.py +0 -0
  914. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_remote_auto_prune.py +0 -0
  915. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_remote_interactive_reaper.py +0 -0
  916. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_repo_add.py +0 -0
  917. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_repo_dormancy.py +0 -0
  918. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_repo_edit_2220.py +0 -0
  919. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_repo_graph_fleet_2237.py +0 -0
  920. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_repo_max_parallel_3423.py +0 -0
  921. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_repo_onboard_2220.py +0 -0
  922. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_report_public_export.py +0 -0
  923. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_report_result_push.py +0 -0
  924. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_reports.py +0 -0
  925. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_restart_cmd.py +0 -0
  926. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_retry.py +0 -0
  927. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_retry_advisory_1606.py +0 -0
  928. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_retry_escalation_classify_3360.py +0 -0
  929. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_retry_type_1636.py +0 -0
  930. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_revalidate.py +0 -0
  931. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_review.py +0 -0
  932. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_review_end_review_without_verdict.py +0 -0
  933. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_review_parse_failure_diagnostic.py +0 -0
  934. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_review_reaffirm.py +0 -0
  935. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_review_state.py +0 -0
  936. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_review_verdict_backstop.py +0 -0
  937. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_review_verdict_override_audit.py +0 -0
  938. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_review_verdict_relay.py +0 -0
  939. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_review_zero_commits.py +0 -0
  940. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_scoped_review_wiring.py +0 -0
  941. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_scorecard.py +0 -0
  942. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_self_health.py +0 -0
  943. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_serve.py +0 -0
  944. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_serve_app.py +0 -0
  945. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_serve_app_board_trim.py +0 -0
  946. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_serve_rest_routes.py +0 -0
  947. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_session.py +0 -0
  948. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_slice_issue_attribution.py +0 -0
  949. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_smoke.py +0 -0
  950. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  951. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_smoke_live_checkout_restore.py +0 -0
  952. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_smoke_plain_runner_3673.py +0 -0
  953. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_smoke_workflow.py +0 -0
  954. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_spend_ceiling.py +0 -0
  955. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_spend_ceiling_coordinator.py +0 -0
  956. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_split.py +0 -0
  957. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_split_work.py +0 -0
  958. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_sql_dialect.py +0 -0
  959. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_sqlite_connect_ratchet.py +0 -0
  960. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_stage_projection.py +0 -0
  961. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_stale_busy_reviewer_697.py +0 -0
  962. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_stalled_pipeline.py +0 -0
  963. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_state.py +0 -0
  964. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_state_review_findings_daemon.py +0 -0
  965. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_status_fleet_footer.py +0 -0
  966. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_stop_1567.py +0 -0
  967. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_store_contract.py +0 -0
  968. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_store_migrate.py +0 -0
  969. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_stuck.py +0 -0
  970. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  971. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_terminal_command.py +0 -0
  972. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_test_author.py +0 -0
  973. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_test_chat.py +0 -0
  974. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_test_orchestrator.py +0 -0
  975. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_test_report.py +0 -0
  976. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_test_verdict_parsing.py +0 -0
  977. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_test_verdict_transcript_floor.py +0 -0
  978. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_text_io_encoding_audit.py +0 -0
  979. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_thin_client_board_audit.py +0 -0
  980. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_thin_client_config_load_1080.py +0 -0
  981. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_thin_client_daemon_routing_906.py +0 -0
  982. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_throwaway_vm.py +0 -0
  983. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_tmux_host.py +0 -0
  984. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_tmux_session.py +0 -0
  985. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_transcript_floor.py +0 -0
  986. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_tui_pty_driver.py +0 -0
  987. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_uat_checks.py +0 -0
  988. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_upstream_gaps.py +0 -0
  989. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_usage.py +0 -0
  990. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_usage_limits.py +0 -0
  991. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_usage_rollup.py +0 -0
  992. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_venv_live_install_2121.py +0 -0
  993. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_version_single_source.py +0 -0
  994. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_watch.py +0 -0
  995. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_win_native_bridge.py +0 -0
  996. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_win_native_driver.py +0 -0
  997. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  998. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_worker_env_venv_isolation.py +0 -0
  999. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_worker_events.py +0 -0
  1000. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_worker_image_pin_sync.py +0 -0
  1001. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_worker_safety.py +0 -0
  1002. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_worker_test_scoping.py +0 -0
  1003. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_worktree.py +0 -0
  1004. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  1005. {code_coordinator-0.5.758 → code_coordinator-0.5.759}/tests/test_write_parity.py +0 -0
  1006. {code_coordinator-0.5.758 → 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.758
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.758
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
+ }
@@ -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
@@ -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
 
@@ -33,9 +33,13 @@ that produced the #2900/#2907 incident) and #2230 (the sweep's origin): both
33
33
  are about *why* a row gets wedged this way; this check is about the row
34
34
  being wedged *at all*, whatever sweep — present or future — produced it.
35
35
 
36
- WARN, not CRIT: the fix costs an operator ~10 seconds (``coord drive-queue
37
- remove`` + ``add``) once they know, and this check exists to make sure they
38
- know — it is not itself an outage.
36
+ WARN, not CRIT: for the never-dispatched/dispatch-failure shapes the fix
37
+ costs an operator ~10 seconds (``coord drive-queue remove`` + ``add``) once
38
+ they know; for the three terminal-park causes (#3983 —
39
+ needs-decomposition/premise-refusal/upstream-gap-park) it costs a human
40
+ decision instead (decompose the issue, confirm the prerequisite, or wait for
41
+ the release), never that requeue — either way this check exists to make
42
+ sure an operator knows, it is not itself an outage.
39
43
 
40
44
  ``cost=COST_NETWORK``, not ``COST_CHEAP``: ``coord.state.list_drive_queue``
41
45
  routes to the daemon over HTTP whenever ``board_service`` is set, which is
@@ -76,10 +80,11 @@ from coord.health.registry import COST_NETWORK, check
76
80
  ),
77
81
  )
78
82
  def probe_wedged_drive_queue(ctx: HealthContext) -> CheckResult:
79
- del ctx # unused: this check reads local queue state directly, not config
80
83
  from coord.drive_queue import ( # noqa: PLC0415
84
+ describe_unreachable_wait,
81
85
  detect_unreachable_waits,
82
86
  entries_from_rows,
87
+ unreachable_wait_remedy_command,
83
88
  )
84
89
  from coord.state import list_drive_queue # noqa: PLC0415
85
90
 
@@ -103,11 +108,12 @@ def probe_wedged_drive_queue(ctx: HealthContext) -> CheckResult:
103
108
  headroom="0 wedged drive-queue entries",
104
109
  )
105
110
 
111
+ # #3983: `describe_unreachable_wait` — the SAME rendering `coord
112
+ # drive-queue status`'s `alert:` line and the notifier's pager entry
113
+ # use — rather than this probe building its own text for the identical
114
+ # finding (#2096: one question, one answer, three surfaces).
106
115
  sample = ", ".join(
107
- f"{w.key} ({w.state}, {w.deferrals} deferrals"
108
- + (f", {w.dependents} dependents self-heal (#2756)" if w.dependents else "")
109
- + ")"
110
- for w in waits[:5]
116
+ describe_unreachable_wait(w, now=ctx.now) for w in waits[:5]
111
117
  )
112
118
  return CheckResult(
113
119
  check_id="wedged_drive_queue",
@@ -119,11 +125,13 @@ def probe_wedged_drive_queue(ctx: HealthContext) -> CheckResult:
119
125
  ),
120
126
  detail=(
121
127
  f"e.g. {sample}" + (", ..." if len(waits) > 5 else "")
122
- + " — no branch/PR/merge-queue row any sweep could ever act on "
123
- "(never dispatched, or every dispatch attempt died before "
124
- "creating an assignment); cannot clear on its own. fix (root "
125
- "only — any dependents self-heal, #2756): coord drive-queue "
126
- "remove <repo> <issue> && coord drive-queue add <repo> <issue>"
128
+ + " — fix per entry (never a blanket command — a "
129
+ "needs-decomposition/premise-refusal/upstream-gap park is NOT "
130
+ "cleared by `remove`+`add`): "
131
+ + "; ".join(
132
+ f"{w.key}: {unreachable_wait_remedy_command(w)}"
133
+ for w in waits[:5]
134
+ )
127
135
  ),
128
136
  threshold=(
129
137
  "warn when any entry is blocked/parked with no branch/PR a sweep "
@@ -136,6 +144,7 @@ def probe_wedged_drive_queue(ctx: HealthContext) -> CheckResult:
136
144
  {
137
145
  "key": w.key,
138
146
  "state": w.state,
147
+ "cause": w.cause,
139
148
  "deferrals": w.deferrals,
140
149
  "dependents": w.dependents,
141
150
  "last_reason": w.last_reason,
@@ -296,11 +296,37 @@ def halted_drives(*, notifier_state: NotifierState, now: float) -> list[HaltedDr
296
296
  that DOES carry a real ``proposed_command`` (because step 4 found at
297
297
  least one genuinely blocked entry) is never a sentinel match here, so it
298
298
  pages like any other halted drive.
299
+
300
+ #3983: the benign-sentinel skip above is exactly the gap that let
301
+ quadraui#2341 page nobody for ~13h. That row's own last_reason (a #3931
302
+ needs-decomposition park) qualifies `coord.drive_queue.
303
+ detect_unreachable_waits`'s #2944/#2978 guaranteed-false-wait shape, but
304
+ its 13 `waiting` dependents never reach `blocked` — `_resolve_prereqs`
305
+ treats a `parked` pre-req as an ordinary unsatisfied deferral, never the
306
+ unsatisfiable one a `blocked`/`failed` pre-req gets — so step 4 kept
307
+ re-writing the SAME benign sentinel over the root's own finding, every
308
+ 3-minute tick, for as long as the dependents sat `waiting`. The
309
+ board-doctor alert tier (#3979's CAUSE_NEEDS_DECOMPOSITION) would also
310
+ page this root, but ships dry-run by default (#3758) and its own
311
+ hourly sweep is a separate, operator-armed opt-in — not something this
312
+ function may assume is on. So this directly re-derives the same live
313
+ finding `coord drive-queue status`'s `alert:` line and `coord doctor`'s
314
+ `wedged_drive_queue` WARN already show, straight from the queue, with
315
+ the REAL (repo, issue) of the root rather than the synthetic
316
+ `QUEUE_ALERT_REPO`/`QUEUE_ALERT_ISSUE` key step 4 writes to — one
317
+ detection (`detect_unreachable_waits`), three surfaces that can never
318
+ say different things (#2096).
319
+
320
+ A root already carrying its OWN real escalation record (any stage) is
321
+ skipped here — that record is richer (board-doctor's cause-specific
322
+ diagnosis, when it ran) and must not be shadowed by this generic
323
+ fallback finding the identical row a second time under a different
324
+ reason string.
299
325
  """
300
326
  from coord.drive_queue import ( # noqa: PLC0415
301
327
  QUEUE_ALERT_ISSUE,
302
- QUEUE_ALERT_NO_REMEDY_COMMAND,
303
328
  QUEUE_ALERT_REPO,
329
+ is_benign_queue_alert_command,
304
330
  )
305
331
 
306
332
  try:
@@ -309,10 +335,11 @@ def halted_drives(*, notifier_state: NotifierState, now: float) -> list[HaltedDr
309
335
  records = list_drive_escalations()
310
336
  except Exception as exc: # noqa: BLE001
311
337
  log.debug("notifier: drive escalations unavailable (%s)", exc)
312
- return []
338
+ records = []
313
339
 
314
340
  urgent = urgent_keys(notifier_state, now=now)
315
341
  out: list[HaltedDrive] = []
342
+ escalated_keys: set[tuple[str, int]] = set()
316
343
  for record in records:
317
344
  repo = str(record.get("repo_name") or "")
318
345
  try:
@@ -323,9 +350,11 @@ def halted_drives(*, notifier_state: NotifierState, now: float) -> list[HaltedDr
323
350
  if (
324
351
  repo == QUEUE_ALERT_REPO
325
352
  and issue == QUEUE_ALERT_ISSUE
326
- and command == QUEUE_ALERT_NO_REMEDY_COMMAND
353
+ and is_benign_queue_alert_command(command)
327
354
  ):
328
355
  continue
356
+ if (repo, issue) != (QUEUE_ALERT_REPO, QUEUE_ALERT_ISSUE):
357
+ escalated_keys.add((repo, issue))
329
358
  stage = str(record.get("stage") or "").strip()
330
359
  reason = str(record.get("reason") or "").strip()
331
360
  out.append(
@@ -337,6 +366,72 @@ def halted_drives(*, notifier_state: NotifierState, now: float) -> list[HaltedDr
337
366
  proposed_command=command or None,
338
367
  )
339
368
  )
369
+
370
+ out.extend(
371
+ _unreachable_wait_halted_drives(escalated_keys, urgent=urgent, now=now)
372
+ )
373
+ return out
374
+
375
+
376
+ def _unreachable_wait_halted_drives(
377
+ escalated_keys: set[tuple[str, int]], *, urgent: set[str], now: float
378
+ ) -> list[HaltedDrive]:
379
+ """#3983: live `detect_unreachable_waits` roots, as `HaltedDrive`s.
380
+
381
+ ``proposed_command`` is picked PER ROOT by
382
+ `coord.drive_queue.unreachable_wait_remedy_command` — never the blanket
383
+ `remove`+`add` requeue. For the three terminal-park causes (#3979's
384
+ `needs-decomposition`/`premise-refusal`/`upstream-gap-park`) that
385
+ requeue is actively wrong: the row's own `last_reason` already asserts
386
+ no relaunch can resolve it, and a requeue just relaunches the drive
387
+ straight back into re-emitting the identical park (the #3922
388
+ needs-decomposition incident `coord.drive_queue.
389
+ unreachable_wait_remedy_command`'s own docstring names). Those three
390
+ get the same read-only `coord drive-queue list` fallback #3016's
391
+ `merge_gate_remedy_command` uses for its own no-safe-command shapes
392
+ instead — the manual next step is still named inline in ``reason`` via
393
+ `describe_unreachable_wait`.
394
+
395
+ Fails open to ``[]`` like every other source in this module — a queue
396
+ read that errors must degrade silently, never take the whole notifier
397
+ tick down with it.
398
+ """
399
+ from coord.drive_queue import ( # noqa: PLC0415
400
+ describe_unreachable_wait,
401
+ detect_unreachable_waits,
402
+ entries_from_rows,
403
+ parse_key,
404
+ unreachable_wait_remedy_command,
405
+ )
406
+
407
+ try:
408
+ from coord.state import list_drive_queue # noqa: PLC0415
409
+
410
+ waits = detect_unreachable_waits(entries_from_rows(list_drive_queue()))
411
+ except Exception as exc: # noqa: BLE001
412
+ log.debug("notifier: drive queue unavailable for unreachable-wait check (%s)", exc)
413
+ return []
414
+
415
+ out: list[HaltedDrive] = []
416
+ for wait in waits:
417
+ parsed = parse_key(wait.key)
418
+ if parsed is None:
419
+ continue
420
+ repo, issue = parsed
421
+ if (repo, issue) in escalated_keys:
422
+ continue
423
+ out.append(
424
+ HaltedDrive(
425
+ repo=repo,
426
+ issue=issue,
427
+ reason=(
428
+ "guaranteed-false wait (#2944/#2978): "
429
+ + describe_unreachable_wait(wait, now=now)
430
+ ),
431
+ urgent=urgent_key(repo, issue) in urgent,
432
+ proposed_command=unreachable_wait_remedy_command(wait),
433
+ )
434
+ )
340
435
  return out
341
436
 
342
437