code-coordinator 0.5.499__tar.gz → 0.5.501__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 (901) hide show
  1. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/.github/workflows/test.yml +28 -6
  2. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/PKG-INFO +1 -1
  3. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/code_coordinator.egg-info/PKG-INFO +1 -1
  4. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/code_coordinator.egg-info/SOURCES.txt +3 -0
  5. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/code_coordinator.egg-info/scm_file_list.json +3 -0
  6. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/code_coordinator.egg-info/scm_version.json +2 -2
  7. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/agent_app.py +51 -4
  8. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/agent_update.py +3 -2
  9. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/agent_ops.py +49 -10
  10. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/release.py +22 -7
  11. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/status.py +12 -2
  12. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/config.py +18 -0
  13. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/machine_onboard.py +52 -3
  14. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/models.py +13 -0
  15. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/notify.py +15 -1
  16. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/reconcile.py +13 -1
  17. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/release_verify.py +4 -2
  18. code_coordinator-0.5.501/coord/restart_cmd.py +120 -0
  19. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/smoke.py +71 -0
  20. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/MAC_MINI.md +10 -0
  21. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_app.py +17 -0
  22. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_deploy_units_endpoint.py +34 -0
  23. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_update.py +33 -0
  24. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_release_propagate.py +24 -0
  25. code_coordinator-0.5.501/tests/test_cli_status_supervisor_3366.py +91 -0
  26. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_config.py +36 -0
  27. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_machine_onboard.py +26 -0
  28. code_coordinator-0.5.501/tests/test_restart_cmd.py +88 -0
  29. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_smoke.py +110 -0
  30. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_windows_job_is_a_real_gate_2000.py +46 -11
  31. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/.claude/commands/board.md +0 -0
  32. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/.claude/commands/complete-session.md +0 -0
  33. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/.claude/commands/coordinator.md +0 -0
  34. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/.githooks/_lib.sh +0 -0
  35. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/.githooks/post-checkout +0 -0
  36. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/.githooks/post-commit +0 -0
  37. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/.githooks/post-merge +0 -0
  38. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  39. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/.github/coord-ci-acceptance.yml +0 -0
  40. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/.github/workflows/auto-release.yml +0 -0
  41. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/.github/workflows/publish.yml +0 -0
  42. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/.gitignore +0 -0
  43. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/CLAUDE.md +0 -0
  44. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/GOAL.md +0 -0
  45. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/LICENSE +0 -0
  46. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/MANIFEST.in +0 -0
  47. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/README.md +0 -0
  48. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/code_coordinator.egg-info/dependency_links.txt +0 -0
  49. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/code_coordinator.egg-info/entry_points.txt +0 -0
  50. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/code_coordinator.egg-info/requires.txt +0 -0
  51. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/code_coordinator.egg-info/top_level.txt +0 -0
  52. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/__init__.py +0 -0
  53. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/_board_mapping.py +0 -0
  54. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/acceptance.py +0 -0
  55. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/acceptance_drivers.py +0 -0
  56. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/agent.py +0 -0
  57. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/agents/opencode/.gitignore +0 -0
  58. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/agents/opencode/agents/work.md +0 -0
  59. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/agents/opencode/routing.jsonc +0 -0
  60. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/approved_work.py +0 -0
  61. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/audit.py +0 -0
  62. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/auto_loop.py +0 -0
  63. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/backup.py +0 -0
  64. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/block_log.py +0 -0
  65. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/board_schema.py +0 -0
  66. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/board_service.py +0 -0
  67. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/board_wire.py +0 -0
  68. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/brain.py +0 -0
  69. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/branch_model.py +0 -0
  70. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/bug_intake.py +0 -0
  71. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/cargo_cache.py +0 -0
  72. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/ci_fix.py +0 -0
  73. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/ci_github.py +0 -0
  74. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/ci_gitlab.py +0 -0
  75. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/ci_store.py +0 -0
  76. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/claim.py +0 -0
  77. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/claude_setup_token.py +0 -0
  78. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/cli.py +0 -0
  79. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/client.py +0 -0
  80. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/codegen.py +0 -0
  81. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/__init__.py +0 -0
  82. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/_common.py +0 -0
  83. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/acceptance.py +0 -0
  84. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/audit.py +0 -0
  85. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/backup.py +0 -0
  86. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/chat.py +0 -0
  87. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/codegen.py +0 -0
  88. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/dispatch.py +0 -0
  89. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/dispatch_workers.py +0 -0
  90. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/dr.py +0 -0
  91. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/drive.py +0 -0
  92. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/drive_queue.py +0 -0
  93. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/gate_a.py +0 -0
  94. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/gates.py +0 -0
  95. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/issues.py +0 -0
  96. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/lifecycle.py +0 -0
  97. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/machine.py +0 -0
  98. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/merge.py +0 -0
  99. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/milestone.py +0 -0
  100. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/plan_followup.py +0 -0
  101. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/plans.py +0 -0
  102. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/portal.py +0 -0
  103. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/pr.py +0 -0
  104. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/repo.py +0 -0
  105. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/report.py +0 -0
  106. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/review.py +0 -0
  107. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/scorecard.py +0 -0
  108. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/sessions.py +0 -0
  109. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/setup.py +0 -0
  110. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/store_migrate.py +0 -0
  111. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/terminal.py +0 -0
  112. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/test_gate.py +0 -0
  113. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/commands/tui.py +0 -0
  114. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/comments.py +0 -0
  115. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/config_reload.py +0 -0
  116. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/confirm_test.py +0 -0
  117. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/conflict_fix.py +0 -0
  118. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/dao.py +0 -0
  119. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/dashboard/__init__.py +0 -0
  120. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/dashboard/fixture.py +0 -0
  121. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/dashboard/index.html +0 -0
  122. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/dashboard/server.py +0 -0
  123. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/dashboard/terminal.py +0 -0
  124. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/db.py +0 -0
  125. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/dead_end.py +0 -0
  126. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/decomposition_chat.py +0 -0
  127. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/README.md +0 -0
  128. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-agent.service +0 -0
  129. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-backup.service +0 -0
  130. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-backup.timer +0 -0
  131. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-db-backup.service +0 -0
  132. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-db-backup.sh +0 -0
  133. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-db-backup.timer +0 -0
  134. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-dr-verify.service +0 -0
  135. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-dr-verify.timer +0 -0
  136. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-drive-queue.service +0 -0
  137. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-drive-queue.timer +0 -0
  138. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-failure-notify.service +0 -0
  139. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-fleet-watchdog.service +0 -0
  140. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  141. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-notify.service +0 -0
  142. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-notify.timer +0 -0
  143. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-release-propagate.service +0 -0
  144. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-release-propagate.timer +0 -0
  145. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-release-window.service +0 -0
  146. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-release-window.timer +0 -0
  147. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-serve.service +0 -0
  148. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-web-dist-build.service +0 -0
  149. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-web-dist-build.timer +0 -0
  150. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy/coord-web.service +0 -0
  151. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy_manifest.py +0 -0
  152. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deploy_units.py +0 -0
  153. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deprecation_telemetry.py +0 -0
  154. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/deps.py +0 -0
  155. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/diagnose.py +0 -0
  156. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/dispatch.py +0 -0
  157. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/dispatch_liveness.py +0 -0
  158. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/dist_name.py +0 -0
  159. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/dr_promote.py +0 -0
  160. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/dr_verify.py +0 -0
  161. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/drive.py +0 -0
  162. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/drive_queue.py +0 -0
  163. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/drive_state.py +0 -0
  164. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/events.py +0 -0
  165. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/failure_class.py +0 -0
  166. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/failure_classifier.py +0 -0
  167. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/filelock.py +0 -0
  168. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/fleet_config_health.py +0 -0
  169. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/forge_availability.py +0 -0
  170. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/freshness.py +0 -0
  171. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/gate_a.py +0 -0
  172. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/gate_b.py +0 -0
  173. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/gate_snapshot.py +0 -0
  174. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/gates.py +0 -0
  175. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/gen_board_fixture.py +0 -0
  176. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/github_ops.py +0 -0
  177. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/github_throttle.py +0 -0
  178. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/goal.py +0 -0
  179. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/graph_health.py +0 -0
  180. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/__init__.py +0 -0
  181. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/aggregate.py +0 -0
  182. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/__init__.py +0 -0
  183. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/_ci_pin.py +0 -0
  184. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/agent_install.py +0 -0
  185. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/cargo_targets.py +0 -0
  186. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/claude_binary.py +0 -0
  187. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/config_drift.py +0 -0
  188. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  189. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/coord_web_ci_pin.py +0 -0
  190. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/deploy_lane_facts.py +0 -0
  191. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/disk.py +0 -0
  192. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/fleet_board.py +0 -0
  193. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  194. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/fleet_phantom.py +0 -0
  195. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/fleet_unit_drift.py +0 -0
  196. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/graph.py +0 -0
  197. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/graphify_cli.py +0 -0
  198. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/index_lock.py +0 -0
  199. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/issues_sync_staleness.py +0 -0
  200. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/plan_usage.py +0 -0
  201. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/pr_churn.py +0 -0
  202. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/release_cordon.py +0 -0
  203. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/repo_state.py +0 -0
  204. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/spawned_coord.py +0 -0
  205. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/stalled_pipeline.py +0 -0
  206. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/timer_active.py +0 -0
  207. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/toolchain.py +0 -0
  208. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/unit_drift.py +0 -0
  209. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/unit_enablement.py +0 -0
  210. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/wedged_drive_queue.py +0 -0
  211. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/checks/worktrees.py +0 -0
  212. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/cli.py +0 -0
  213. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/context.py +0 -0
  214. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/fleet_snapshot.py +0 -0
  215. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/models.py +0 -0
  216. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/pypi.py +0 -0
  217. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/registry.py +0 -0
  218. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/render.py +0 -0
  219. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/health/units.py +0 -0
  220. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/hooks.py +0 -0
  221. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/housekeeping.py +0 -0
  222. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/interactive.py +0 -0
  223. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/invariant_alarms.py +0 -0
  224. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/issue_store.py +0 -0
  225. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/issues_sync_status.py +0 -0
  226. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/liveness_auditor.py +0 -0
  227. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/machine_fault.py +0 -0
  228. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/machine_metrics.py +0 -0
  229. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/machine_pause.py +0 -0
  230. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/machine_stats.py +0 -0
  231. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/merge_queue.py +0 -0
  232. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/milestone_chat.py +0 -0
  233. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/milestone_dispatch.py +0 -0
  234. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/milestone_gate.py +0 -0
  235. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/milestone_order.py +0 -0
  236. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/mock_author.py +0 -0
  237. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/network.py +0 -0
  238. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/new_issue_chat.py +0 -0
  239. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/notifier/__init__.py +0 -0
  240. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/notifier/baseline.py +0 -0
  241. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/notifier/cli.py +0 -0
  242. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/notifier/collect.py +0 -0
  243. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/notifier/digest.py +0 -0
  244. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/notifier/models.py +0 -0
  245. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/notifier/predicate.py +0 -0
  246. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/notifier/service.py +0 -0
  247. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/notifier/store.py +0 -0
  248. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/notifier/transport.py +0 -0
  249. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/openapi.py +0 -0
  250. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/overlap_fence.py +0 -0
  251. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/overlap_predict.py +0 -0
  252. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/parentage.py +0 -0
  253. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/parentage_github.py +0 -0
  254. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/pipeline.py +0 -0
  255. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/plan_parser.py +0 -0
  256. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/plans.py +0 -0
  257. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/platform_paths.py +0 -0
  258. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/portal_bridge.py +0 -0
  259. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/portal_store.py +0 -0
  260. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/portal_sync.py +0 -0
  261. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/pr_body_lint.py +0 -0
  262. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/prereqs.py +0 -0
  263. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/progress.py +0 -0
  264. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/providers/__init__.py +0 -0
  265. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/providers/base.py +0 -0
  266. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/providers/claude.py +0 -0
  267. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/providers/claude_pty.py +0 -0
  268. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/providers/opencode.py +0 -0
  269. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/queue_diagnose.py +0 -0
  270. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/reconcile_tick.py +0 -0
  271. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/refine_chat.py +0 -0
  272. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/release_cordon.py +0 -0
  273. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/release_propagate.py +0 -0
  274. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/release_window.py +0 -0
  275. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/repo_dormancy.py +0 -0
  276. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/repo_edit.py +0 -0
  277. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/repo_onboard.py +0 -0
  278. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/reports.py +0 -0
  279. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/rest_schema.py +0 -0
  280. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/revalidate.py +0 -0
  281. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/review.py +0 -0
  282. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/scorecard.py +0 -0
  283. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/self_health.py +0 -0
  284. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/serve_app.py +0 -0
  285. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  286. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  287. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  288. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  289. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  290. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/skills/portal-followup/SKILL.md +0 -0
  291. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/skills/release-now/SKILL.md +0 -0
  292. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  293. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  294. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/skills/update-issue/SKILL.md +0 -0
  295. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/spend_ceiling.py +0 -0
  296. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/split_work.py +0 -0
  297. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/sql.py +0 -0
  298. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/stage_projection.py +0 -0
  299. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/state.py +0 -0
  300. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/store_migrate.py +0 -0
  301. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/store_parity.py +0 -0
  302. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/templates/deploy-cloudflare.node.yml +0 -0
  303. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/test_author.py +0 -0
  304. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/test_chat.py +0 -0
  305. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/test_orchestrator.py +0 -0
  306. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/test_report.py +0 -0
  307. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/tui_release.py +0 -0
  308. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/uat_checks.py +0 -0
  309. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/usage.py +0 -0
  310. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/usage_limits.py +0 -0
  311. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/usage_rollup.py +0 -0
  312. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coord/worker_events.py +0 -0
  313. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/coordinator.example.yml +0 -0
  314. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-agent.service +0 -0
  315. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-backup.service +0 -0
  316. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-backup.timer +0 -0
  317. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-db-backup.service +0 -0
  318. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-db-backup.sh +0 -0
  319. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-db-backup.timer +0 -0
  320. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-dr-verify.service +0 -0
  321. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-dr-verify.timer +0 -0
  322. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-drive-queue.service +0 -0
  323. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-drive-queue.timer +0 -0
  324. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-failure-notify.service +0 -0
  325. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-failure-notify.sh +0 -0
  326. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-fleet-watchdog.service +0 -0
  327. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-fleet-watchdog.timer +0 -0
  328. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-notify.service +0 -0
  329. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-notify.timer +0 -0
  330. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-release-propagate.service +0 -0
  331. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-release-propagate.timer +0 -0
  332. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-release-window.service +0 -0
  333. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-release-window.timer +0 -0
  334. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-serve.service +0 -0
  335. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-web-dist-build.service +0 -0
  336. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-web-dist-build.sh +0 -0
  337. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-web-dist-build.timer +0 -0
  338. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-web-rollback.sh +0 -0
  339. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/coord-web.service +0 -0
  340. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/deploy/node-shim.sh +0 -0
  341. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/ADR_COORD_TUI_CI.md +0 -0
  342. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  343. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/ADR_COORD_WEB_CI.md +0 -0
  344. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/ADR_COORD_WEB_DIST.md +0 -0
  345. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  346. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/AGENT_OPERATIONS.md +0 -0
  347. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/ARCHITECTURE.md +0 -0
  348. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/ARCH_SECURITY_GATES.md +0 -0
  349. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/COCKPIT.md +0 -0
  350. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/CONTROL_CENTER.md +0 -0
  351. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/COST_DISCIPLINE.md +0 -0
  352. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/CROSS_PLATFORM.md +0 -0
  353. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/CUSTOMER_FACING_APPS.md +0 -0
  354. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/CUSTOMER_PORTAL.md +0 -0
  355. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/DATA_STORE_SELECTION.md +0 -0
  356. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/DISASTER_RECOVERY.md +0 -0
  357. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/DRIVE_QUEUE.md +0 -0
  358. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/EPHEMERAL_WORKERS.md +0 -0
  359. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/FORGE_MIGRATION.md +0 -0
  360. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/GRAPHIFY_SETUP.md +0 -0
  361. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/ISSUE_GUIDANCE.md +0 -0
  362. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  363. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/NOTIFIER.md +0 -0
  364. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/OPENCODE_VERIFICATION.md +0 -0
  365. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/OPERATING_GOTCHAS.md +0 -0
  366. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/OPERATOR_GUIDES.md +0 -0
  367. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/ORACLE_LOOP.md +0 -0
  368. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/PHONE_WEBAPP.md +0 -0
  369. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/PIPELINE_V2.md +0 -0
  370. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/PLATFORM_EVOLUTION.md +0 -0
  371. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/SECOND_BACKEND.md +0 -0
  372. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/STORE_SERVICE.md +0 -0
  373. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  374. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/WEB_CONTROL_CENTER.md +0 -0
  375. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/WSL_WINDOWS_WORKER.md +0 -0
  376. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/mocks/web/README.md +0 -0
  377. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/mocks/web/_tokens.css +0 -0
  378. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/mocks/web/issue-detail.html +0 -0
  379. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/mocks/web/pipeline-narrow.html +0 -0
  380. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/docs/mocks/web/pipeline-wide.html +0 -0
  381. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/graphify-out/.gitignore +0 -0
  382. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/install-agent.sh +0 -0
  383. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/pyproject.toml +0 -0
  384. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/audit_review_verdict_overrides.py +0 -0
  385. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  386. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/azure-workers/build-worker-image.sh +0 -0
  387. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/azure-workers/coordinator-machine.py +0 -0
  388. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/azure-workers/dr-down.sh +0 -0
  389. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/azure-workers/dr-up.sh +0 -0
  390. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/azure-workers/epic-down.sh +0 -0
  391. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/azure-workers/epic-up.sh +0 -0
  392. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/azure-workers/preflight.sh +0 -0
  393. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/azure-workers/provision-server.sh +0 -0
  394. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/azure-workers/provision-worker.sh +0 -0
  395. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  396. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  397. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/azure-workers/throwaway-vm.sh +0 -0
  398. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/azure-workers/verify-github-token.sh +0 -0
  399. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/check_gh_argv_containment.py +0 -0
  400. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/codegen.py +0 -0
  401. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/coord-test-runner.sh +0 -0
  402. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  403. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  404. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  405. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  406. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/coord-venv-rollback.sh +0 -0
  407. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/drive-batch.sh +0 -0
  408. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/extract-coord-tui.sh +0 -0
  409. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/fleet_watchdog.py +0 -0
  410. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/gen_board_fixture.py +0 -0
  411. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/gen_mock_index.py +0 -0
  412. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/lib/provision-core.sh +0 -0
  413. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/next_release_tag.py +0 -0
  414. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/provision-machine.sh +0 -0
  415. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/run_tests_in_populated_home.sh +0 -0
  416. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/run_tests_without_gh.sh +0 -0
  417. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/setup-macmini.sh +0 -0
  418. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/smoke_437_interactive.py +0 -0
  419. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/verify-provision-noble.sh +0 -0
  420. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/verify_878_review_capture.py +0 -0
  421. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/verify_release_published.py +0 -0
  422. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/scripts/verify_release_wheel.py +0 -0
  423. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/setup.cfg +0 -0
  424. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/SMOKE_SET.md +0 -0
  425. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/__init__.py +0 -0
  426. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/acceptance/ms-37/conftest.py +0 -0
  427. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/acceptance/ms-37/contract.md +0 -0
  428. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/acceptance/ms-37/manifest.yml +0 -0
  429. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  430. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  431. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/acceptance/ms-51/contract.md +0 -0
  432. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  433. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  434. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/acceptance/ms-51/manifest.yml +0 -0
  435. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  436. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/acceptance/ms-51/tsconfig.json +0 -0
  437. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  438. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/backends.py +0 -0
  439. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/conftest.py +0 -0
  440. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/board-pipeline-basic.json +0 -0
  441. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  442. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  443. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  444. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  445. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/playwright/all_pass.json +0 -0
  446. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  447. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/playwright/mixed_fail.json +0 -0
  448. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  449. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  450. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/playwright/skip.json +0 -0
  451. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/playwright/truncated.json +0 -0
  452. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  453. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  454. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  455. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  456. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  457. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  458. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  459. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  460. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_acceptance.py +0 -0
  461. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_acceptance_drivers.py +0 -0
  462. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent.py +0 -0
  463. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_api_error.py +0 -0
  464. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_branch_base.py +0 -0
  465. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_branch_capture.py +0 -0
  466. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_config_free_1712.py +0 -0
  467. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_dirty_worktree.py +0 -0
  468. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  469. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_graph_self_heal.py +0 -0
  470. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_health_h3.py +0 -0
  471. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_idle_restart.py +0 -0
  472. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_push_failure.py +0 -0
  473. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_reap.py +0 -0
  474. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_repos_and_pull.py +0 -0
  475. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_restart_services_endpoint.py +0 -0
  476. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_skills_self_heal.py +0 -0
  477. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_startup_diagnostics.py +0 -0
  478. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_update_bluegreen.py +0 -0
  479. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_usage_limit.py +0 -0
  480. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_agent_zero_commit.py +0 -0
  481. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_ambient_home_isolation.py +0 -0
  482. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_approve_capability_reroute_3241.py +0 -0
  483. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_approve_dependency_busy_2804.py +0 -0
  484. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_approve_reject_plan.py +0 -0
  485. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_approve_usage_gate.py +0 -0
  486. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_approved_work_2532.py +0 -0
  487. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_approved_work_2996.py +0 -0
  488. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_assignment_already_recorded_daemon.py +0 -0
  489. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_audit_log.py +0 -0
  490. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_audit_outcome.py +0 -0
  491. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_audit_query.py +0 -0
  492. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_auto_loop.py +0 -0
  493. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_auto_release_publish_2035.py +0 -0
  494. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_backend_selection.py +0 -0
  495. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_backup.py +0 -0
  496. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_base_checkout_restore.py +0 -0
  497. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_block_log.py +0 -0
  498. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_board_cap_762.py +0 -0
  499. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_board_fixture.py +0 -0
  500. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_board_read_path.py +0 -0
  501. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_board_schema.py +0 -0
  502. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_board_service.py +0 -0
  503. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_board_state.py +0 -0
  504. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_board_wire.py +0 -0
  505. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_brain.py +0 -0
  506. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_branch_model.py +0 -0
  507. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_bug_intake.py +0 -0
  508. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_build_worker_image_env_update.py +0 -0
  509. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cargo_cache.py +0 -0
  510. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_check_gh_argv_containment.py +0 -0
  511. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_ci_acceptance_gate_1950.py +0 -0
  512. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_ci_fix.py +0 -0
  513. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_ci_github.py +0 -0
  514. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_ci_gitlab.py +0 -0
  515. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_ci_parity_2091.py +0 -0
  516. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_ci_store.py +0 -0
  517. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_claim.py +0 -0
  518. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_claude_md_budget.py +0 -0
  519. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_claude_setup_token.py +0 -0
  520. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_acceptance.py +0 -0
  521. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_assign.py +0 -0
  522. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  523. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_assign_interactive_remote.py +0 -0
  524. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_assign_provider.py +0 -0
  525. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  526. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_audit.py +0 -0
  527. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_chat_continue.py +0 -0
  528. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_codegen.py +0 -0
  529. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_decide.py +0 -0
  530. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_diagnose_capability_rules.py +0 -0
  531. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_diagnose_config_provenance.py +0 -0
  532. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_diagnose_forge_availability.py +0 -0
  533. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_diagnose_graph.py +0 -0
  534. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_diagnose_self.py +0 -0
  535. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_diagnose_test_coverage.py +0 -0
  536. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_doctor.py +0 -0
  537. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_doctor_config_free_1801.py +0 -0
  538. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  539. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  540. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_drive.py +0 -0
  541. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_drive_queue.py +0 -0
  542. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_escalate.py +0 -0
  543. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_fix_headless_review.py +0 -0
  544. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_gate_a.py +0 -0
  545. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_install_drift.py +0 -0
  546. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_install_skills.py +0 -0
  547. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_issue_comment.py +0 -0
  548. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_issue_create_label.py +0 -0
  549. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_issue_reopen.py +0 -0
  550. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_issue_view_list.py +0 -0
  551. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_merge.py +0 -0
  552. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_milestone_assign.py +0 -0
  553. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_milestone_capture.py +0 -0
  554. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_milestone_chat_add_child.py +0 -0
  555. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_milestone_dispatch.py +0 -0
  556. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_milestone_gate_b.py +0 -0
  557. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_milestone_gate_c.py +0 -0
  558. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_milestone_order.py +0 -0
  559. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  560. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_milestone_ship.py +0 -0
  561. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_network.py +0 -0
  562. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_new_issue_chat.py +0 -0
  563. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_plans.py +0 -0
  564. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_portal.py +0 -0
  565. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_pr.py +0 -0
  566. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_pull_artifact.py +0 -0
  567. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_queue.py +0 -0
  568. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_reattach_sessions.py +0 -0
  569. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_refine_board.py +0 -0
  570. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_release_preflight.py +0 -0
  571. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_release_window.py +0 -0
  572. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_repo_2220.py +0 -0
  573. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  574. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_scorecard.py +0 -0
  575. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_serve_store_backend_3084.py +0 -0
  576. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_set_review_findings.py +0 -0
  577. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_status_advisory_terminal.py +0 -0
  578. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_status_contested_tag.py +0 -0
  579. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_status_invariant_alarms.py +0 -0
  580. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_status_machine_fault.py +0 -0
  581. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_status_merge_queue.py +0 -0
  582. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_status_provider.py +0 -0
  583. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_status_retried_3340.py +0 -0
  584. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_status_review_finalizing.py +0 -0
  585. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_status_test_failed_tag.py +0 -0
  586. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_status_usage_limit.py +0 -0
  587. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_sync_comments_873.py +0 -0
  588. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_test_plan.py +0 -0
  589. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_track.py +0 -0
  590. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_tui_update.py +0 -0
  591. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cli_wait.py +0 -0
  592. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_client.py +0 -0
  593. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_client_base_install.py +0 -0
  594. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_client_config_cache_atomic_3052.py +0 -0
  595. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_client_resource_migration_1946.py +0 -0
  596. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_commands_common.py +0 -0
  597. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_comments.py +0 -0
  598. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_completion_summary.py +0 -0
  599. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_config_acceptance.py +0 -0
  600. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_config_audit.py +0 -0
  601. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_config_drift_check.py +0 -0
  602. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_config_pricing.py +0 -0
  603. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  604. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_config_usage_gate.py +0 -0
  605. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_confirm_test.py +0 -0
  606. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_conflict_fix.py +0 -0
  607. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_conflict_fix_semantic.py +0 -0
  608. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  609. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_coord_test.py +0 -0
  610. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  611. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_coord_test_runner_baseline.py +0 -0
  612. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_coord_test_runner_populated_home.py +0 -0
  613. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_coord_test_runner_routing.py +0 -0
  614. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_coord_test_runner_toolchain.py +0 -0
  615. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_coord_uat.py +0 -0
  616. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_coord_web_sse_restart_live.py +0 -0
  617. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_coordinator_machine.py +0 -0
  618. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_cross_platform_imports.py +0 -0
  619. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dao.py +0 -0
  620. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dashboard.py +0 -0
  621. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dashboard_api.py +0 -0
  622. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dashboard_fixture.py +0 -0
  623. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dashboard_server.py +0 -0
  624. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dashboard_terminal.py +0 -0
  625. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dashboard_terminal_live.py +0 -0
  626. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_db.py +0 -0
  627. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dead_end.py +0 -0
  628. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_decomposition_chat.py +0 -0
  629. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_deploy_coord_db_backup.py +0 -0
  630. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_deploy_coord_web_dist.py +0 -0
  631. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_deploy_coord_web_rollback.py +0 -0
  632. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_deploy_db_backup_unit.py +0 -0
  633. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_deploy_drive_queue_unit.py +0 -0
  634. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_deploy_failure_notify_unit.py +0 -0
  635. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_deploy_manifest.py +0 -0
  636. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_deploy_notify_unit.py +0 -0
  637. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_deploy_units_lane.py +0 -0
  638. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_deploy_web_unit.py +0 -0
  639. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_deprecation_telemetry.py +0 -0
  640. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_deps.py +0 -0
  641. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_diagnose.py +0 -0
  642. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dispatch.py +0 -0
  643. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dispatch_liveness.py +0 -0
  644. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dispatch_target_validation.py +0 -0
  645. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dispatch_workers.py +0 -0
  646. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dist_name.py +0 -0
  647. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_done_housekeeping.py +0 -0
  648. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dr_azure_scripts.py +0 -0
  649. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dr_promote.py +0 -0
  650. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_dr_verify.py +0 -0
  651. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_drive.py +0 -0
  652. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_drive_machine_fault.py +0 -0
  653. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_drive_queue.py +0 -0
  654. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_drive_queue_blocked_rendering.py +0 -0
  655. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_drive_queue_launch_argv.py +0 -0
  656. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_drive_queue_max_parallel_config.py +0 -0
  657. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  658. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_drive_queue_roll_pending.py +0 -0
  659. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  660. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_drive_state.py +0 -0
  661. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_drive_tmux.py +0 -0
  662. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_epic_up_capability_detection.py +0 -0
  663. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  664. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_epic_up_image_provenance.py +0 -0
  665. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_errors.py +0 -0
  666. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_events.py +0 -0
  667. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_failure_class.py +0 -0
  668. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_failure_classifier.py +0 -0
  669. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_filelock.py +0 -0
  670. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  671. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_fix_escalation_classifier.py +0 -0
  672. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_fix_of_force_override.py +0 -0
  673. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_fleet_config_health.py +0 -0
  674. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_fleet_health_probes.py +0 -0
  675. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_fleet_health_snapshot.py +0 -0
  676. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_fleet_watchdog.py +0 -0
  677. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_forge_availability.py +0 -0
  678. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_freshness.py +0 -0
  679. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_gate_a.py +0 -0
  680. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_gate_b.py +0 -0
  681. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_gate_snapshot_staleness.py +0 -0
  682. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_gates.py +0 -0
  683. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  684. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_gen_mock_index.py +0 -0
  685. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_generated_rust_fixture.py +0 -0
  686. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_generated_rust_requests.py +0 -0
  687. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_generated_types_fixture.py +0 -0
  688. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_github_ops.py +0 -0
  689. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_github_throttle.py +0 -0
  690. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_goal.py +0 -0
  691. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_graph_health.py +0 -0
  692. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_graph_selfheal_absent_2237.py +0 -0
  693. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_handoff.py +0 -0
  694. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_checks.py +0 -0
  695. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_cli.py +0 -0
  696. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_cli_graph.py +0 -0
  697. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_config.py +0 -0
  698. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_context.py +0 -0
  699. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_coord_tui_ci_pin.py +0 -0
  700. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_coord_web_ci_pin.py +0 -0
  701. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_deploy_lane_facts.py +0 -0
  702. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_fix.py +0 -0
  703. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_incident_regression.py +0 -0
  704. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_issues_sync_staleness.py +0 -0
  705. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_pr_churn.py +0 -0
  706. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_pypi.py +0 -0
  707. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_registry.py +0 -0
  708. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_release_cordon_probe.py +0 -0
  709. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_timer_active.py +0 -0
  710. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_toolchain.py +0 -0
  711. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_unit_drift.py +0 -0
  712. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_unit_enablement.py +0 -0
  713. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_health_wedged_drive_queue.py +0 -0
  714. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_hooks.py +0 -0
  715. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_housekeeping.py +0 -0
  716. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_human_attended_437.py +0 -0
  717. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_init.py +0 -0
  718. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_install_agent_venv_2911.py +0 -0
  719. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_integration.py +0 -0
  720. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_interactive_briefing_echo.py +0 -0
  721. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_interactive_pane_log_2541.py +0 -0
  722. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_interactive_prefill_state.py +0 -0
  723. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_interactive_session_relaunch.py +0 -0
  724. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_interactive_test_verdict_backstop.py +0 -0
  725. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_interactive_token_attribution.py +0 -0
  726. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_interactive_worktree.py +0 -0
  727. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_invariant_alarms.py +0 -0
  728. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_issue_store_seam.py +0 -0
  729. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_issues_sync_status.py +0 -0
  730. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_liveness_auditor.py +0 -0
  731. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_liveness_notify.py +0 -0
  732. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_lock_contention_ratchet.py +0 -0
  733. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_machine_fault.py +0 -0
  734. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_machine_metrics.py +0 -0
  735. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_machine_pause.py +0 -0
  736. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_machine_stats.py +0 -0
  737. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_merge_queue.py +0 -0
  738. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_merge_verify.py +0 -0
  739. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_milestone_chat.py +0 -0
  740. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_milestone_dispatch.py +0 -0
  741. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_milestone_gate.py +0 -0
  742. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_milestone_order.py +0 -0
  743. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_milestone_seam.py +0 -0
  744. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_mock_author.py +0 -0
  745. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_model_tiering.py +0 -0
  746. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_models.py +0 -0
  747. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_models_config_labels.py +0 -0
  748. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_needs_attention.py +0 -0
  749. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_network.py +0 -0
  750. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_new_issue_chat.py +0 -0
  751. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_next_release_tag.py +0 -0
  752. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_node_shim.py +0 -0
  753. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_notifier_baseline.py +0 -0
  754. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_notifier_cli.py +0 -0
  755. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_notifier_collect.py +0 -0
  756. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_notifier_config.py +0 -0
  757. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_notifier_drive_seam.py +0 -0
  758. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_notifier_isolation.py +0 -0
  759. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_notifier_predicate.py +0 -0
  760. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_notifier_quiet_hours.py +0 -0
  761. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_notifier_service.py +0 -0
  762. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_notify.py +0 -0
  763. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_notify_drain.py +0 -0
  764. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_openapi.py +0 -0
  765. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_operational_defaults.py +0 -0
  766. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_overlap_fence.py +0 -0
  767. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_overlap_predict.py +0 -0
  768. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_packaged_deploy_units.py +0 -0
  769. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_parentage.py +0 -0
  770. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_paste_landed.py +0 -0
  771. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  772. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_pipeline.py +0 -0
  773. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_plan_followup_approve_plan_command.py +0 -0
  774. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_plan_followup_pr_command.py +0 -0
  775. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_plan_followup_review_command.py +0 -0
  776. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_plan_only.py +0 -0
  777. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_plan_parser.py +0 -0
  778. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_platform_paths.py +0 -0
  779. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_portal_bridge.py +0 -0
  780. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_portal_config.py +0 -0
  781. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_portal_store.py +0 -0
  782. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_portal_sync.py +0 -0
  783. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_pr_body_lint.py +0 -0
  784. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_prereqs.py +0 -0
  785. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_production_db_guard.py +0 -0
  786. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_progress.py +0 -0
  787. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_provider_seam.py +0 -0
  788. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_providers.py +0 -0
  789. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_providers_config_labels.py +0 -0
  790. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_providers_pty.py +0 -0
  791. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_provision_core.py +0 -0
  792. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_provision_machine.py +0 -0
  793. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_py_rust_mirror_inventory.py +0 -0
  794. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_quiet_hours.py +0 -0
  795. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_quiet_hours_store_2146.py +0 -0
  796. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_reap_merged_sessions.py +0 -0
  797. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_reap_stale_interactive_tick.py +0 -0
  798. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_reconcile.py +0 -0
  799. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_reconcile_branch.py +0 -0
  800. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_reconcile_completions.py +0 -0
  801. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  802. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_reconcile_merges.py +0 -0
  803. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_reconcile_no_agent_record.py +0 -0
  804. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_reconcile_tick.py +0 -0
  805. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_reconcile_usage_limit_done.py +0 -0
  806. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_refine_chat.py +0 -0
  807. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_release_cordon_2101.py +0 -0
  808. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  809. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_release_cordon_deadlock_2240.py +0 -0
  810. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  811. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_release_cordon_stuck_2490.py +0 -0
  812. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_release_propagate.py +0 -0
  813. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_release_propagate_threshold.py +0 -0
  814. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_release_roll_between_legs_2854.py +0 -0
  815. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_release_roll_window_handoff.py +0 -0
  816. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_release_unified_1242.py +0 -0
  817. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_release_verify.py +0 -0
  818. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_release_window.py +0 -0
  819. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_remote_auto_prune.py +0 -0
  820. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_remote_interactive_reaper.py +0 -0
  821. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_repo_add.py +0 -0
  822. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_repo_dormancy.py +0 -0
  823. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_repo_edit_2220.py +0 -0
  824. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_repo_graph_fleet_2237.py +0 -0
  825. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_repo_onboard_2220.py +0 -0
  826. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_report_result_push.py +0 -0
  827. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_reports.py +0 -0
  828. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_retry.py +0 -0
  829. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_retry_advisory_1606.py +0 -0
  830. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_retry_escalation_classify_3360.py +0 -0
  831. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_retry_type_1636.py +0 -0
  832. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_revalidate.py +0 -0
  833. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_review.py +0 -0
  834. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_review_end_review_without_verdict.py +0 -0
  835. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_review_parse_failure_diagnostic.py +0 -0
  836. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_review_reaffirm.py +0 -0
  837. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_review_state.py +0 -0
  838. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_review_verdict_backstop.py +0 -0
  839. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_review_verdict_override_audit.py +0 -0
  840. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_review_verdict_relay.py +0 -0
  841. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_review_zero_commits.py +0 -0
  842. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_scoped_review_wiring.py +0 -0
  843. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_scorecard.py +0 -0
  844. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_self_health.py +0 -0
  845. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_serve.py +0 -0
  846. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_serve_app.py +0 -0
  847. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_serve_app_board_trim.py +0 -0
  848. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_serve_rest_routes.py +0 -0
  849. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_session.py +0 -0
  850. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_slice_issue_attribution.py +0 -0
  851. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  852. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_smoke_live_checkout_restore.py +0 -0
  853. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_smoke_workflow.py +0 -0
  854. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_spend_ceiling.py +0 -0
  855. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_spend_ceiling_coordinator.py +0 -0
  856. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_split.py +0 -0
  857. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_split_work.py +0 -0
  858. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_sql_dialect.py +0 -0
  859. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_sqlite_connect_ratchet.py +0 -0
  860. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_stage_projection.py +0 -0
  861. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_stale_busy_reviewer_697.py +0 -0
  862. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_stalled_pipeline.py +0 -0
  863. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_state.py +0 -0
  864. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_state_review_findings_daemon.py +0 -0
  865. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_status_fleet_footer.py +0 -0
  866. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_stop_1567.py +0 -0
  867. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_store_contract.py +0 -0
  868. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_store_migrate.py +0 -0
  869. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_stuck.py +0 -0
  870. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  871. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_terminal_command.py +0 -0
  872. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_test_author.py +0 -0
  873. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_test_chat.py +0 -0
  874. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_test_orchestrator.py +0 -0
  875. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_test_report.py +0 -0
  876. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_test_verdict_parsing.py +0 -0
  877. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_test_verdict_transcript_floor.py +0 -0
  878. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_text_io_encoding_audit.py +0 -0
  879. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_thin_client_board_audit.py +0 -0
  880. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_thin_client_config_load_1080.py +0 -0
  881. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_thin_client_daemon_routing_906.py +0 -0
  882. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_throwaway_vm.py +0 -0
  883. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_tmux_host.py +0 -0
  884. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_tmux_session.py +0 -0
  885. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_transcript_floor.py +0 -0
  886. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_uat_checks.py +0 -0
  887. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_usage.py +0 -0
  888. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_usage_limits.py +0 -0
  889. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_usage_rollup.py +0 -0
  890. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_venv_live_install_2121.py +0 -0
  891. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_version_single_source.py +0 -0
  892. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_watch.py +0 -0
  893. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_worker_env_venv_isolation.py +0 -0
  894. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_worker_events.py +0 -0
  895. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_worker_image_pin_sync.py +0 -0
  896. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_worker_safety.py +0 -0
  897. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_worker_test_scoping.py +0 -0
  898. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_worktree.py +0 -0
  899. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  900. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/test_write_parity.py +0 -0
  901. {code_coordinator-0.5.499 → code_coordinator-0.5.501}/tests/write_parity.py +0 -0
@@ -111,12 +111,34 @@ jobs:
111
111
  # — the matrix axis there is Python versions on Linux; this job's axis is
112
112
  # the platform. See docs/CROSS_PLATFORM.md §9.
113
113
  windows:
114
- # #2039: on `push` (i.e. merges to main) only. On a `pull_request` event
115
- # this evaluates false and the job is SKIPPED — conclusion `skipped`,
116
- # which is already in `ci_store._PASSING_CONCLUSIONS`, so the merge gate
117
- # is satisfied rather than merely tolerant. `windows` is not a required
118
- # status check either, so branch protection is unaffected.
119
- if: github.event_name == 'push'
114
+ # #3394, 2026-09-18: taken out of automatic CI by operator decision —
115
+ # Windows is not current work. Everything in the block above about this
116
+ # being a real gate (#2000) remains true of the job's SHAPE and is
117
+ # deliberately left intact; what changed is WHEN it runs.
118
+ #
119
+ # Why: it has failed every run sampled back to 2026-09-10 (~614
120
+ # AssertionError plus WinError / BackupError / FileNotFoundError / OSError,
121
+ # concentrated in tests/test_dr_azure_scripts.py and tests/test_agent.py).
122
+ # A gate that is always red gates nothing — it only kept `main` permanently
123
+ # red, at ~85 min of runner time per push, and that permanent redness is
124
+ # what made coord mark every branch baseline-red and SKIP its test stage
125
+ # while the gate still reported `test: passed`. #3378 item 1, #3380 and
126
+ # #3385 were all scoped as "make main green" and all misattributed that
127
+ # redness to the (advisory) postgres job.
128
+ #
129
+ # The #2039 note this replaces still describes the restore target: on
130
+ # `push` only, so the job is SKIPPED on `pull_request` — conclusion
131
+ # `skipped`, already in `ci_store._PASSING_CONCLUSIONS`, so a red Windows
132
+ # run surfaces on main and never blocks a PR. `windows` is not a required
133
+ # status check either, so branch protection is unaffected in either shape.
134
+ #
135
+ # RESTORE by putting `github.event_name == 'push'` back here when Windows
136
+ # becomes active work — THEN fix the ~614 failures. Only once it is green
137
+ # is it a gate again. Do NOT add `continue-on-error` as a shortcut: #2026
138
+ # found that softens the run conclusion while the check still reports
139
+ # `failure` to the Checks API, which stalled the whole drive queue
140
+ # overnight on 2026-08-08.
141
+ if: github.event_name == 'workflow_dispatch'
120
142
  runs-on: windows-latest
121
143
  steps:
122
144
  - uses: actions/checkout@v4
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.499
3
+ Version: 0.5.501
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.499
3
+ Version: 0.5.501
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
@@ -143,6 +143,7 @@ coord/repo_edit.py
143
143
  coord/repo_onboard.py
144
144
  coord/reports.py
145
145
  coord/rest_schema.py
146
+ coord/restart_cmd.py
146
147
  coord/revalidate.py
147
148
  coord/review.py
148
149
  coord/scorecard.py
@@ -541,6 +542,7 @@ tests/test_cli_status_merge_queue.py
541
542
  tests/test_cli_status_provider.py
542
543
  tests/test_cli_status_retried_3340.py
543
544
  tests/test_cli_status_review_finalizing.py
545
+ tests/test_cli_status_supervisor_3366.py
544
546
  tests/test_cli_status_test_failed_tag.py
545
547
  tests/test_cli_status_usage_limit.py
546
548
  tests/test_cli_sync_comments_873.py
@@ -786,6 +788,7 @@ tests/test_repo_graph_fleet_2237.py
786
788
  tests/test_repo_onboard_2220.py
787
789
  tests/test_report_result_push.py
788
790
  tests/test_reports.py
791
+ tests/test_restart_cmd.py
789
792
  tests/test_retry.py
790
793
  tests/test_retry_advisory_1606.py
791
794
  tests/test_retry_escalation_classify_3360.py
@@ -257,6 +257,7 @@
257
257
  "coord/repo_onboard.py",
258
258
  "coord/reports.py",
259
259
  "coord/rest_schema.py",
260
+ "coord/restart_cmd.py",
260
261
  "coord/revalidate.py",
261
262
  "coord/review.py",
262
263
  "coord/scorecard.py",
@@ -567,6 +568,7 @@
567
568
  "tests/test_cli_status_provider.py",
568
569
  "tests/test_cli_status_retried_3340.py",
569
570
  "tests/test_cli_status_review_finalizing.py",
571
+ "tests/test_cli_status_supervisor_3366.py",
570
572
  "tests/test_cli_status_test_failed_tag.py",
571
573
  "tests/test_cli_status_usage_limit.py",
572
574
  "tests/test_cli_sync_comments_873.py",
@@ -812,6 +814,7 @@
812
814
  "tests/test_repo_onboard_2220.py",
813
815
  "tests/test_report_result_push.py",
814
816
  "tests/test_reports.py",
817
+ "tests/test_restart_cmd.py",
815
818
  "tests/test_retry.py",
816
819
  "tests/test_retry_advisory_1606.py",
817
820
  "tests/test_retry_escalation_classify_3360.py",
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.499",
2
+ "tag": "0.5.501",
3
3
  "distance": 0,
4
- "node": "gf300cdf9d6d4ef1871e0b1016a2875ac0572ea95",
4
+ "node": "gf1c4fc8c6aabba829d2631892fc576fd10bbc58a",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-09-19"
@@ -7,6 +7,7 @@ import json
7
7
  import logging
8
8
  import os
9
9
  import re
10
+ import shutil
10
11
  import subprocess
11
12
  import sys
12
13
  import threading
@@ -20,7 +21,7 @@ from starlette.requests import Request
20
21
  from starlette.responses import JSONResponse, PlainTextResponse, Response, StreamingResponse
21
22
  from starlette.routing import Route
22
23
 
23
- from coord import __version__, agent_update
24
+ from coord import __version__, agent_update, restart_cmd
24
25
  from coord.agent import RUNNING, PENDING, AgentAssignment, AgentServer, AssignmentSpec
25
26
  from coord.dist_name import DistributionNotFoundError, resolve_installed, resolve_installed_name
26
27
  from coord.dist_name import pkg_spec as _dist_pkg_spec
@@ -129,8 +130,13 @@ def _running_under_systemd() -> bool:
129
130
  ``INVOCATION_ID`` is set by systemd for every unit invocation (since
130
131
  v232) and is the standard "am I running under systemd" signal — unlike
131
132
  checking the parent PID, it survives the process being reparented.
133
+
134
+ Delegates to :mod:`coord.restart_cmd` (#3366) — the single place that
135
+ answers this, shared with the SSH-side escalation and every
136
+ operator-facing remediation string, so this process's own idea of its
137
+ supervisor can never drift from what those tell an operator.
132
138
  """
133
- return bool(os.environ.get("INVOCATION_ID"))
139
+ return restart_cmd.running_under_systemd()
134
140
 
135
141
 
136
142
  def _systemctl_env() -> dict[str, str]:
@@ -1157,6 +1163,12 @@ def build_app(
1157
1163
  # liveness or PID.
1158
1164
  data["version"] = __version__
1159
1165
  data["installed_version"] = _installed_version()
1166
+ # #3366: this process's own live self-report of what supervises
1167
+ # it — "systemd", "launchd", or null when neither is known (a dev
1168
+ # box, Windows). The freshest possible answer to "what restarts
1169
+ # this host," ahead of any static config an operator may also set
1170
+ # (see `coord.restart_cmd.resolve_supervisor`).
1171
+ data["supervisor"] = restart_cmd.local_supervisor()
1160
1172
  # Surface the most recent /update attempt so the CLI can show
1161
1173
  # "0.3.0 → 0.4.0" or "no_change (0.3.0)" or "failed: <error>".
1162
1174
  last = _read_last_update(server.state_dir)
@@ -1625,6 +1637,33 @@ def build_app(
1625
1637
  body = {}
1626
1638
  dry_run = bool(body.get("dry_run"))
1627
1639
 
1640
+ # #3366: this whole lane is systemd-unit management — on a host
1641
+ # with no `systemctl` at all (every macOS agent today; #1158's
1642
+ # launchd port ships no unit-file equivalent) every one of the
1643
+ # packaged units reads as "new"/"not installed here", every run,
1644
+ # forever. That is not drift, it is the platform, and reporting it
1645
+ # as drift-adjacent noise on every propagation trains the operator
1646
+ # to ignore this lane. Short-circuit with an honest n/a instead of
1647
+ # calling into `du.install_units`, which has no way to tell "not
1648
+ # installed yet" apart from "cannot ever be installed here".
1649
+ if shutil.which("systemctl") is None:
1650
+ supervisor = restart_cmd.local_supervisor()
1651
+ return JSONResponse(
1652
+ {
1653
+ "ok": True,
1654
+ "units": [],
1655
+ "dry_run": dry_run,
1656
+ "reloaded": False,
1657
+ "reload_detail": "",
1658
+ "timers_enabled": {},
1659
+ "detail": (
1660
+ f"n/a — no systemd on this host (supervisor: "
1661
+ f"{supervisor or 'unknown'})"
1662
+ ),
1663
+ },
1664
+ status_code=200,
1665
+ )
1666
+
1628
1667
  report = du.install_units(
1629
1668
  machine_name=getattr(server, "machine_name", None),
1630
1669
  port=AGENT_PORT,
@@ -1714,12 +1753,20 @@ def build_app(
1714
1753
  )
1715
1754
 
1716
1755
  if not _running_under_systemd():
1756
+ # #3366: name the actual supervisor, when known, instead of
1757
+ # only ever saying what this ISN'T (systemd) — a launchd host
1758
+ # reads as clearly out of scope for a systemd-only lane rather
1759
+ # than as unexplained drift-adjacent noise on every run.
1760
+ supervisor = restart_cmd.local_supervisor()
1717
1761
  return JSONResponse(
1718
1762
  {
1719
1763
  "units": {},
1720
1764
  "detail": (
1721
- "this agent is not running under systemd — nothing here "
1722
- "can restart a sibling unit"
1765
+ f"this agent runs under {supervisor}, not systemd — "
1766
+ "nothing here can restart a sibling unit"
1767
+ if supervisor
1768
+ else "this agent is not running under systemd — nothing "
1769
+ "here can restart a sibling unit"
1723
1770
  ),
1724
1771
  },
1725
1772
  status_code=200,
@@ -85,6 +85,7 @@ import sys
85
85
  from dataclasses import dataclass
86
86
  from pathlib import Path
87
87
 
88
+ from coord import restart_cmd
88
89
  from coord.platform_paths import venv_exe, venv_pip, venv_python
89
90
 
90
91
  _log = logging.getLogger(__name__)
@@ -698,8 +699,8 @@ def perform_update(
698
699
  f"and rebuild — {listed}. Replacing a running process's "
699
700
  "site-packages leaves it executing a mix of two versions (the "
700
701
  "2026-08-11 dellserver incident, #2121). Restart or stop those "
701
- "processes — `systemctl --user restart coord-agent` for the "
702
- "agent — and retry.",
702
+ f"processes — {restart_cmd.restart_hint(restart_cmd.local_supervisor())} "
703
+ "for the agent — and retry.",
703
704
  holders=[
704
705
  {"pid": h.pid, "source": h.source, "cmdline": h.cmdline}
705
706
  for h in holders[:20]
@@ -16,7 +16,7 @@ from typing import TYPE_CHECKING, Any
16
16
  import click
17
17
  import httpx
18
18
 
19
- from coord import __version__
19
+ from coord import __version__, restart_cmd
20
20
  # Aliased: `agent_update` is also the name of this module's click command.
21
21
  from coord.agent_update import cli_initiator as _cli_initiator
22
22
  from coord.config import Config
@@ -726,10 +726,12 @@ def agent_update(
726
726
  err = outcome.get("error") or "pip failed; see ~/.coord/last_update.log"
727
727
  click.echo(f" {machine.name}: ✗ failed — {err}", err=True)
728
728
  elif outcome.get("escalated"):
729
+ hint = restart_cmd.resolve_supervisor(machine, live=outcome.get("supervisor"))
729
730
  click.echo(
730
731
  f" {machine.name}: ✗ pip upgraded to {target_version} but the "
731
- f"process is stuck reporting {version_now} even after a "
732
- "`systemctl --user restart` — needs manual investigation",
732
+ f"process is stuck reporting {version_now} even after a driven "
733
+ f"restart ({restart_cmd.restart_shell_command(hint)}) — needs "
734
+ "manual investigation",
733
735
  err=True,
734
736
  )
735
737
  elif not outcome.get("came_online"):
@@ -743,12 +745,15 @@ def agent_update(
743
745
  # Distinguishing this from a bare "still reporting X"
744
746
  # is the whole point: it says the process needs a
745
747
  # restart, not another pip attempt.
748
+ hint = restart_cmd.resolve_supervisor(
749
+ machine, live=outcome.get("supervisor")
750
+ )
746
751
  click.echo(
747
752
  f" {machine.name}: ✗ installed {installed_now} but the "
748
753
  f"running process still reports {version_now} (expected "
749
754
  f"{target_version}) — it hasn't restarted since the "
750
- "update; try `systemctl --user restart coord-agent` "
751
- "on that machine",
755
+ f"update; try {restart_cmd.restart_hint(hint)} on that "
756
+ "machine",
752
757
  err=True,
753
758
  )
754
759
  else:
@@ -1169,6 +1174,7 @@ def _wait_agents_updated(
1169
1174
  "result": None,
1170
1175
  "error": None,
1171
1176
  "escalated": False,
1177
+ "supervisor": None,
1172
1178
  }
1173
1179
  for m in machines
1174
1180
  }
@@ -1199,6 +1205,11 @@ def _wait_agents_updated(
1199
1205
  info["result"] = last.get("result")
1200
1206
  info["error"] = last.get("error")
1201
1207
  info["version_before"] = last.get("version_before")
1208
+ # #3366: the agent's own live self-report — when this ever
1209
+ # disagrees with the machine's static `supervisor:` config, this
1210
+ # wins (see `restart_cmd.resolve_supervisor`), because it's the
1211
+ # host answering right now, not a fact someone typed once.
1212
+ info["supervisor"] = health.get("supervisor")
1202
1213
 
1203
1214
  if machine.name in pre:
1204
1215
  pre_val = pre[machine.name]
@@ -1255,7 +1266,8 @@ def _wait_agents_updated(
1255
1266
 
1256
1267
 
1257
1268
  def _escalate_restart(machine) -> bool:
1258
- """Best-effort ``systemctl --user restart coord-agent`` over SSH.
1269
+ """Best-effort driven restart of ``coord-agent`` over SSH — systemd or
1270
+ launchd, whichever the target host actually runs (#3366).
1259
1271
 
1260
1272
  #404 / #1568: ``/update``'s ``os.execv`` self-restart does not take
1261
1273
  under systemd — same PID, stale version. ``XDG_RUNTIME_DIR=/run/user/
@@ -1263,17 +1275,44 @@ def _escalate_restart(machine) -> bool:
1263
1275
  silently no-ops in a non-interactive SSH session. See
1264
1276
  docs/AGENT_OPERATIONS.md for the manual runbook this automates.
1265
1277
 
1266
- Returns True if the ssh command itself exited 0 — NOT whether the
1267
- agent actually came back on the new version; the caller re-polls
1268
- /health afterwards to confirm that.
1278
+ #3366: macOS ships no systemd at all, so the command above always
1279
+ failed there — this was the whole escalation channel, and a fleet mac
1280
+ (``docs/MAC_MINI.md``) simply had none: no automated recovery, and
1281
+ every operator-facing message also only ever named ``systemctl``. The
1282
+ working command is ``launchctl kickstart -k gui/<uid>/<label>``
1283
+ (:mod:`coord.restart_cmd`). Rather than branching ahead of time on
1284
+ possibly-stale config, the remote shell tries systemd FIRST — zero
1285
+ behaviour change for the rest of the fleet — and only falls back to
1286
+ launchd when ``systemctl`` genuinely isn't there to ask, discovering
1287
+ the real launchd Label from the host's own plist (falling back to
1288
+ :data:`coord.restart_cmd.LAUNCHD_LABEL` only if that read fails) so
1289
+ this keeps working even if a second mac ever uses a different label.
1290
+
1291
+ Returns True if a restart command itself exited 0 on the target host —
1292
+ NOT whether the agent actually came back on the new version; the
1293
+ caller re-polls /health afterwards to confirm that.
1269
1294
  """
1295
+ from coord.restart_cmd import LAUNCHD_LABEL # noqa: PLC0415
1296
+
1297
+ remote_script = (
1298
+ "if command -v systemctl >/dev/null 2>&1 && "
1299
+ "XDG_RUNTIME_DIR=/run/user/$(id -u) systemctl --user restart coord-agent "
1300
+ "2>/dev/null; then exit 0; fi; "
1301
+ 'plist=$(ls "$HOME/Library/LaunchAgents"/*coord-agent*.plist 2>/dev/null | head -1); '
1302
+ 'if [ -n "$plist" ]; then '
1303
+ "label=$(/usr/libexec/PlistBuddy -c 'Print :Label' \"$plist\" 2>/dev/null); "
1304
+ f'label="${{label:-{LAUNCHD_LABEL}}}"; '
1305
+ 'exec launchctl kickstart -k "gui/$(id -u)/$label"; '
1306
+ "fi; "
1307
+ "exit 1"
1308
+ )
1270
1309
  cmd = [
1271
1310
  "ssh",
1272
1311
  "-o", "BatchMode=yes",
1273
1312
  "-o", "ConnectTimeout=10",
1274
1313
  "-o", "StrictHostKeyChecking=accept-new",
1275
1314
  machine.host,
1276
- "XDG_RUNTIME_DIR=/run/user/$(id -u) systemctl --user restart coord-agent",
1315
+ remote_script,
1277
1316
  ]
1278
1317
  try:
1279
1318
  result = subprocess.run(cmd, capture_output=True, text=True, timeout=20)
@@ -24,6 +24,7 @@ from typing import Any
24
24
 
25
25
  import click
26
26
 
27
+ from coord import restart_cmd
27
28
  from coord.commands._common import _CONFIG_OPTION
28
29
 
29
30
 
@@ -1779,9 +1780,11 @@ def release_propagate( # noqa: PLR0912, PLR0915 — a pipeline; the decisions a
1779
1780
  "ROLLBACK LEFT AGENTS DOWN: "
1780
1781
  + ", ".join(down)
1781
1782
  + " — these hosts answered the rollback but never came back "
1782
- "on /health, and an SSH `systemctl --user restart "
1783
- "coord-agent` did not revive them either. Recover by hand "
1784
- "before anything else."
1783
+ "on /health, and a driven SSH restart (systemd "
1784
+ f"({restart_cmd.restart_shell_command(restart_cmd.SYSTEMD)}) or "
1785
+ f"launchd ({restart_cmd.restart_shell_command(restart_cmd.LAUNCHD)}), "
1786
+ "whichever applies) did not revive them either. Recover by "
1787
+ "hand before anything else."
1785
1788
  )
1786
1789
  click.echo(f"error: {record.error}", err=True)
1787
1790
  _finish(rp.STATUS_ROLLED_BACK, 2)
@@ -2715,6 +2718,16 @@ def _roll_units(machine, *, agent_port: int) -> tuple[bool | None, str]:
2715
2718
  # report" / a false-positive success.
2716
2719
  if status != 200 and not (status == 500 and "units" in body):
2717
2720
  return False, str(body.get("error") or body.get("summary") or f"HTTP {status}")
2721
+ # #3366: the agent itself already told us this host has no systemd to
2722
+ # deploy units onto (see `agent_app.py`'s `deploy_units` handler) —
2723
+ # every packaged unit reading as "new"/"not installed here" on THAT
2724
+ # host, every run, is the platform, not drift, so this is a structural
2725
+ # gap like the pre-#1835 404 branch above, not a failed lane: `None`,
2726
+ # same "not accountable for a lane it cannot roll" verdict #2052
2727
+ # already established for that case.
2728
+ detail = str(body.get("detail") or "")
2729
+ if detail.startswith("n/a"):
2730
+ return None, detail
2718
2731
  units = body.get("units") or []
2719
2732
  changed = [u.get("name") for u in units if u.get("action") == "updated"]
2720
2733
  new = [u.get("name") for u in units if u.get("action") == "new"]
@@ -3111,8 +3124,9 @@ def _rollback_host(
3111
3124
  )
3112
3125
  if back:
3113
3126
  return _back_on_target(
3114
- f"rolled back; agent needed an SSH `systemctl --user restart "
3115
- f"coord-agent` but is serving again on v{version}"
3127
+ "rolled back; agent needed a driven SSH restart "
3128
+ f"({restart_cmd.restart_hint(restart_cmd.resolve_supervisor(machine))}) "
3129
+ f"but is serving again on v{version}"
3116
3130
  )
3117
3131
  return False, (
3118
3132
  "rolled back the venv but the agent is DOWN — it never came back on "
@@ -3120,8 +3134,9 @@ def _rollback_host(
3120
3134
  + (
3121
3135
  "the SSH restart did not revive it"
3122
3136
  if escalated
3123
- else "the SSH `systemctl --user restart coord-agent` escalation "
3124
- "could not run"
3137
+ else "the SSH "
3138
+ f"{restart_cmd.restart_hint(restart_cmd.resolve_supervisor(machine))} "
3139
+ "escalation could not run"
3125
3140
  )
3126
3141
  + f". Recover by hand on {machine.name}."
3127
3142
  )
@@ -10,7 +10,7 @@ from typing import TYPE_CHECKING
10
10
 
11
11
  import click
12
12
 
13
- from coord import __version__, github_ops
13
+ from coord import __version__, github_ops, restart_cmd
14
14
 
15
15
  from coord.commands._common import _CONFIG_OPTION, _load_config
16
16
 
@@ -375,6 +375,16 @@ def status(config_path: Path, machine_filter: str | None, no_reconcile: bool, ti
375
375
  version_line = f" agent-version: {agent_version} ⚠ (coord is {__version__})"
376
376
  else:
377
377
  version_line = f" agent-version: {agent_version}"
378
+ # #3366: surface the non-default supervisor (launchd) up front,
379
+ # before it matters — "this agent is not running under systemd"
380
+ # used to only ever show up mid-incident, buried in a propagate
381
+ # run's output. Silent for the systemd case: that's every other
382
+ # machine in the fleet today, and naming it there would just be
383
+ # noise on every `coord status`.
384
+ live_supervisor = s.health.get("supervisor") if s.is_online and s.health else None
385
+ supervisor = restart_cmd.resolve_supervisor(m, live=live_supervisor)
386
+ if supervisor == restart_cmd.LAUNCHD:
387
+ version_line += " supervisor: launchd"
378
388
  click.echo(f" host: {m.host} repos: {repos}{version_line}")
379
389
 
380
390
  # #1886 Path B: `/health` exposes `installed_version` (a disk read
@@ -399,7 +409,7 @@ def status(config_path: Path, machine_filter: str | None, no_reconcile: bool, ti
399
409
  click.echo(
400
410
  f" ⚠ running v{running_version} but installed "
401
411
  f"v{installed_version} — process hasn't restarted since "
402
- "its last update (`systemctl --user restart coord-agent` "
412
+ f"its last update ({restart_cmd.restart_hint(supervisor)} "
403
413
  "on that machine, or `coord agent update` to retry)"
404
414
  )
405
415
 
@@ -3071,6 +3071,23 @@ def _parse_machines(raw: Any, repos: list[Repo]) -> list[Machine]:
3071
3071
  entry.get("quiet_hours"), machine_index=i, machine_name=name,
3072
3072
  )
3073
3073
 
3074
+ # #3366: optional fact about which init system supervises this
3075
+ # host's `coord agent` — see `Machine.supervisor`'s docstring for
3076
+ # why it isn't inferred. Validated against the two names
3077
+ # `coord.restart_cmd` actually knows rather than left free-form,
3078
+ # so a typo (`launchD`, `Systemd`) fails config load loudly
3079
+ # instead of silently falling through to the systemd default the
3080
+ # same way an unset field does.
3081
+ machine_supervisor = entry.get("supervisor")
3082
+ if machine_supervisor is not None:
3083
+ if not isinstance(machine_supervisor, str) or machine_supervisor not in (
3084
+ "systemd", "launchd",
3085
+ ):
3086
+ raise ConfigError(
3087
+ f"machines[{i}].supervisor must be 'systemd' or 'launchd', "
3088
+ f"got {machine_supervisor!r}"
3089
+ )
3090
+
3074
3091
  # #3340: optional per-machine floor for the `/health` reachability
3075
3092
  # probe timeout — see `Machine.health_timeout`'s docstring for why
3076
3093
  # this exists instead of just raising `network.DEFAULT_TIMEOUT`.
@@ -3094,6 +3111,7 @@ def _parse_machines(raw: Any, repos: list[Repo]) -> list[Machine]:
3094
3111
  max_workers=machine_max_workers,
3095
3112
  quiet_hours=quiet_hours,
3096
3113
  health_timeout=machine_health_timeout,
3114
+ supervisor=machine_supervisor,
3097
3115
  )
3098
3116
  )
3099
3117
  return machines
@@ -96,6 +96,7 @@ from typing import TYPE_CHECKING
96
96
  # vocabulary is imported rather than restated so a third role added there
97
97
  # needs no edit here, and so no second default can drift into existence.
98
98
  from coord.deploy_manifest import ROLE_DAEMON, ROLE_WORKER
99
+ from coord import restart_cmd
99
100
 
100
101
  if TYPE_CHECKING: # pragma: no cover — typing only
101
102
  from coord.config import Config
@@ -419,6 +420,11 @@ class MachineFacts:
419
420
  #: Diagnostic only — the verdict comes from the agent's own probes, never
420
421
  #: from re-deriving a lookup against this string.
421
422
  agent_path: str | None = None
423
+ #: #3366: "systemd" / "launchd" / None (unprobed, or neither finder
424
+ #: found the agent) — which init system supervises this host's agent,
425
+ #: read straight off the SSH probe above (`ShellProbe.supervisor`).
426
+ #: Only known when :attr:`shell_probed` is True.
427
+ supervisor: str | None = None
422
428
 
423
429
  # ── Layer 8: identity ────────────────────────────────────────────────
424
430
  identity: IdentityFacts = field(default_factory=IdentityFacts)
@@ -656,14 +662,27 @@ def _agent_path_from_launchd():
656
662
  return declared
657
663
 
658
664
 
665
+ #: #3366: which finder actually answered the last `discover_agent_path()`
666
+ #: call — "systemd", "launchd", or None (neither found anything). Same
667
+ #: side-channel shape as `_LAUNCHD_LIVE_PATH` above: `discover_agent_path()`
668
+ #: must keep returning a single string (it's shared by two scripts, see the
669
+ #: module comment), so a caller that wants to know WHICH supervisor found
670
+ #: the agent (`OUT["agent_supervisor"]` below, ultimately
671
+ #: `MachineFacts.supervisor`) reads this global right after calling it.
672
+ _AGENT_PATH_SOURCE = None
673
+
674
+
659
675
  def discover_agent_path():
660
676
  \"\"\"The PATH the coord agent process on THIS host runs with, or None.\"\"\"
661
- for finder in (_agent_path_from_systemd, _agent_path_from_launchd):
677
+ global _AGENT_PATH_SOURCE
678
+ _AGENT_PATH_SOURCE = None
679
+ for source, finder in (("systemd", _agent_path_from_systemd), ("launchd", _agent_path_from_launchd)):
662
680
  try:
663
681
  found = finder()
664
682
  except Exception:
665
683
  found = None
666
684
  if found:
685
+ _AGENT_PATH_SOURCE = source
667
686
  return found
668
687
  return None
669
688
 
@@ -961,6 +980,11 @@ OUT["login_path"] = so.strip() or None
961
980
  # of the #1671 comparison works on a launchd host too, instead of silently
962
981
  # reporting None on every mac.
963
982
  OUT["agent_path"] = discover_agent_path()
983
+ # #3366: which of the two finders above actually found it — "systemd",
984
+ # "launchd", or null. Lets a PATH-fix remediation on the coordinator side
985
+ # name the right override mechanism (a systemd drop-in vs. the plist's
986
+ # EnvironmentVariables) instead of only ever describing the systemd one.
987
+ OUT["agent_supervisor"] = _AGENT_PATH_SOURCE
964
988
 
965
989
  # ── role: #3128's resolver, on the host that owns the declaration ──────
966
990
  try:
@@ -1112,6 +1136,10 @@ class ShellProbe:
1112
1136
  login_path_tools: dict[str, str | None] = field(default_factory=dict)
1113
1137
  login_path: str | None = None
1114
1138
  agent_path: str | None = None
1139
+ #: #3366: "systemd" / "launchd" / None — which finder in
1140
+ #: `_AGENT_PATH_DISCOVERY` actually resolved `agent_path` above, i.e.
1141
+ #: which supervisor is running the agent on the probed host.
1142
+ supervisor: str | None = None
1115
1143
  role: str = ROLE_WORKER
1116
1144
  role_source: str = "default"
1117
1145
  role_valid: bool = True
@@ -1235,11 +1263,13 @@ def parse_shell_probe(stdout: str) -> ShellProbe:
1235
1263
  board_reason=_reason("board_reason"),
1236
1264
  backup_env_present=_tri("backup_env_present"),
1237
1265
  )
1266
+ supervisor_raw = payload.get("agent_supervisor")
1238
1267
  return ShellProbe(
1239
1268
  role_error=redact(str(role_error)) if role_error else None,
1240
1269
  login_path_tools=tools,
1241
1270
  login_path=str(payload["login_path"]) if payload.get("login_path") else None,
1242
1271
  agent_path=str(payload["agent_path"]) if payload.get("agent_path") else None,
1272
+ supervisor=str(supervisor_raw) if supervisor_raw in ("systemd", "launchd") else None,
1243
1273
  role=role,
1244
1274
  role_source=str(role_block.get("source") or "default"),
1245
1275
  role_valid=bool(role_block.get("valid", True)),
@@ -1443,6 +1473,7 @@ def gather_facts(
1443
1473
  facts.login_path_tools = probe.login_path_tools
1444
1474
  facts.login_path = probe.login_path
1445
1475
  facts.agent_path = probe.agent_path
1476
+ facts.supervisor = probe.supervisor
1446
1477
  facts.identity = (
1447
1478
  probe.identity if probe.error is None
1448
1479
  else IdentityFacts(probed=False, error=probe.error)
@@ -2313,12 +2344,30 @@ def _toolchain_finding(facts: MachineFacts, prereq: "Prereq") -> Finding:
2313
2344
  "retries forever, and no board readout says why"
2314
2345
  ),
2315
2346
  subject=prereq.tool,
2347
+ # #3366: the override mechanism itself is supervisor-specific
2348
+ # (a systemd drop-in vs. the launchd plist's own
2349
+ # EnvironmentVariables), not just the trailing restart
2350
+ # command — a launchd host has no `~/.config/systemd/user/`
2351
+ # to write a drop-in into at all. `facts.supervisor` comes
2352
+ # from the same SSH probe that found `agent_path` above, so
2353
+ # this can only be `None` when that probe didn't run
2354
+ # (`--ssh` omitted) or found neither — in which case the
2355
+ # pre-#3366 systemd-only text is exactly right for every
2356
+ # machine that predates this fix.
2316
2357
  fix=(
2358
+ f"put {login}'s directory on the AGENT's PATH — edit this "
2359
+ "host's launchd plist's `EnvironmentVariables/PATH` "
2360
+ "(`~/Library/LaunchAgents/*coord-agent*.plist`), then "
2361
+ f"{restart_cmd.restart_hint(restart_cmd.LAUNCHD)}. Fixing "
2362
+ "your login shell's PATH changes nothing: the agent "
2363
+ "never reads it."
2364
+ if facts.supervisor == "launchd"
2365
+ else
2317
2366
  f"put {login}'s directory on the AGENT's PATH — a `PATH=` line "
2318
2367
  "in ~/.config/systemd/user/coord-agent.service.d/*.conf (or a "
2319
2368
  "~/.local/bin shim, as deploy/node-shim.sh does for Node), then "
2320
- "`systemctl --user restart coord-agent`. Fixing your login "
2321
- "shell's PATH changes nothing: the agent never reads it."
2369
+ f"{restart_cmd.restart_hint(restart_cmd.SYSTEMD)}. Fixing your "
2370
+ "login shell's PATH changes nothing: the agent never reads it."
2322
2371
  ),
2323
2372
  )
2324
2373
  where = (
@@ -446,6 +446,19 @@ class Machine:
446
446
  # caller's requested timeout and this value — a per-machine floor, never
447
447
  # a ceiling that could silently shrink a caller's own longer request.
448
448
  health_timeout: float | None = None
449
+ # #3366: optional operator-set fact about which init system supervises
450
+ # `coord agent` on this host — "systemd" or "launchd" (see
451
+ # `coord.restart_cmd`). `None` (the default, and every config that
452
+ # predates this field) means "unknown, assume systemd" — the exact
453
+ # pre-#3366 behaviour, never a guess: launchd hosts do not reliably
454
+ # carry any other distinguishing config (macmini's own capabilities
455
+ # are `[python, rust]`, not `macos` — `docs/MAC_MINI.md`), so this is
456
+ # deliberately a fact an operator states, not one inferred. Only
457
+ # consulted as a FALLBACK behind a live `/health` "supervisor"
458
+ # self-report — see `coord.restart_cmd.resolve_supervisor` — and never
459
+ # by the SSH escalation itself, which auto-detects on the target host
460
+ # regardless of what this says.
461
+ supervisor: str | None = None
449
462
 
450
463
  def can_work_on(self, repo_name: str) -> bool:
451
464
  return repo_name in self.repos