code-coordinator 0.5.647__tar.gz → 0.5.649__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (981) hide show
  1. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. code_coordinator-0.5.649/code_coordinator.egg-info/scm_version.json +8 -0
  4. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/agent.py +6 -2
  5. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/drive_queue.py +199 -1
  6. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coordinator.example.yml +1 -0
  7. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_drive_queue.py +267 -0
  8. code_coordinator-0.5.647/code_coordinator.egg-info/scm_version.json +0 -8
  9. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/.claude/commands/board.md +0 -0
  10. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/.claude/commands/complete-session.md +0 -0
  11. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/.claude/commands/coordinator.md +0 -0
  12. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/.githooks/_lib.sh +0 -0
  13. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/.githooks/post-checkout +0 -0
  14. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/.githooks/post-commit +0 -0
  15. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/.githooks/post-merge +0 -0
  16. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  17. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/.github/coord-ci-acceptance.yml +0 -0
  18. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/.github/workflows/auto-release.yml +0 -0
  19. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/.github/workflows/publish.yml +0 -0
  20. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/.github/workflows/test.yml +0 -0
  21. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/.gitignore +0 -0
  22. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/CLAUDE.md +0 -0
  23. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/GOAL.md +0 -0
  24. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/LICENSE +0 -0
  25. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/MANIFEST.in +0 -0
  26. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/README.md +0 -0
  27. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/code_coordinator.egg-info/SOURCES.txt +0 -0
  28. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/code_coordinator.egg-info/dependency_links.txt +0 -0
  29. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/code_coordinator.egg-info/entry_points.txt +0 -0
  30. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/code_coordinator.egg-info/requires.txt +0 -0
  31. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/code_coordinator.egg-info/scm_file_list.json +0 -0
  32. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/code_coordinator.egg-info/top_level.txt +0 -0
  33. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/__init__.py +0 -0
  34. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/_board_mapping.py +0 -0
  35. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/acceptance.py +0 -0
  36. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/acceptance_drivers.py +0 -0
  37. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/agent_app.py +0 -0
  38. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/agent_update.py +0 -0
  39. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/agents/opencode/.gitignore +0 -0
  40. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/agents/opencode/agents/work.md +0 -0
  41. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/agents/opencode/routing.jsonc +0 -0
  42. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/app_drive.py +0 -0
  43. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/app_drive_daemon.py +0 -0
  44. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/approved_work.py +0 -0
  45. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/audit.py +0 -0
  46. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/auto_loop.py +0 -0
  47. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/backup.py +0 -0
  48. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/block_log.py +0 -0
  49. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/board_schema.py +0 -0
  50. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/board_service.py +0 -0
  51. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/board_wire.py +0 -0
  52. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/brain.py +0 -0
  53. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/branch_model.py +0 -0
  54. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/briefing_lessons.py +0 -0
  55. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/bug_intake.py +0 -0
  56. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/bugbash.py +0 -0
  57. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/cargo_cache.py +0 -0
  58. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/ci_fix.py +0 -0
  59. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/ci_github.py +0 -0
  60. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/ci_gitlab.py +0 -0
  61. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/ci_store.py +0 -0
  62. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/claim.py +0 -0
  63. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/claude_setup_token.py +0 -0
  64. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/cli.py +0 -0
  65. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/client.py +0 -0
  66. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/codegen.py +0 -0
  67. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/__init__.py +0 -0
  68. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/_common.py +0 -0
  69. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/acceptance.py +0 -0
  70. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/agent_ops.py +0 -0
  71. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/app_drive.py +0 -0
  72. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/audit.py +0 -0
  73. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/backup.py +0 -0
  74. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/bugbash.py +0 -0
  75. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/chat.py +0 -0
  76. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/ci.py +0 -0
  77. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/codegen.py +0 -0
  78. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/dispatch.py +0 -0
  79. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/dispatch_workers.py +0 -0
  80. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/dr.py +0 -0
  81. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/drive.py +0 -0
  82. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/gate_a.py +0 -0
  83. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/gates.py +0 -0
  84. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/issues.py +0 -0
  85. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/lifecycle.py +0 -0
  86. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/machine.py +0 -0
  87. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/merge.py +0 -0
  88. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/milestone.py +0 -0
  89. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/plan_followup.py +0 -0
  90. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/plans.py +0 -0
  91. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/portal.py +0 -0
  92. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/pr.py +0 -0
  93. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/release.py +0 -0
  94. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/repo.py +0 -0
  95. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/report.py +0 -0
  96. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/review.py +0 -0
  97. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/scorecard.py +0 -0
  98. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/sessions.py +0 -0
  99. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/setup.py +0 -0
  100. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/smoke.py +0 -0
  101. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/status.py +0 -0
  102. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/store_migrate.py +0 -0
  103. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/terminal.py +0 -0
  104. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/test_gate.py +0 -0
  105. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/commands/tui.py +0 -0
  106. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/comments.py +0 -0
  107. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/config.py +0 -0
  108. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/config_reload.py +0 -0
  109. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/confirm_test.py +0 -0
  110. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/conflict_fix.py +0 -0
  111. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/dao.py +0 -0
  112. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/dashboard/__init__.py +0 -0
  113. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/dashboard/fixture.py +0 -0
  114. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/dashboard/index.html +0 -0
  115. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/dashboard/reports.html +0 -0
  116. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/dashboard/server.py +0 -0
  117. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/dashboard/terminal.py +0 -0
  118. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/db.py +0 -0
  119. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/dead_end.py +0 -0
  120. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/decomposition_chat.py +0 -0
  121. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/README.md +0 -0
  122. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-agent.service +0 -0
  123. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-backup.service +0 -0
  124. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-backup.timer +0 -0
  125. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-db-backup.service +0 -0
  126. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-db-backup.sh +0 -0
  127. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-db-backup.timer +0 -0
  128. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-dr-verify.service +0 -0
  129. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-dr-verify.timer +0 -0
  130. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-drive-queue.service +0 -0
  131. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-drive-queue.timer +0 -0
  132. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-failure-notify.service +0 -0
  133. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-fleet-watchdog.service +0 -0
  134. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  135. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-nightly-smoke.service +0 -0
  136. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-nightly-smoke.timer +0 -0
  137. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-notify.service +0 -0
  138. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-notify.timer +0 -0
  139. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-release-propagate.service +0 -0
  140. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-release-propagate.timer +0 -0
  141. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-release-window.service +0 -0
  142. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-release-window.timer +0 -0
  143. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-serve.service +0 -0
  144. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-web-dist-build.service +0 -0
  145. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-web-dist-build.timer +0 -0
  146. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy/coord-web.service +0 -0
  147. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy_manifest.py +0 -0
  148. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deploy_units.py +0 -0
  149. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deprecation_telemetry.py +0 -0
  150. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/deps.py +0 -0
  151. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/diagnose.py +0 -0
  152. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/dirlink.py +0 -0
  153. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/dispatch.py +0 -0
  154. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/dispatch_liveness.py +0 -0
  155. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/dist_name.py +0 -0
  156. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/dr_promote.py +0 -0
  157. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/dr_verify.py +0 -0
  158. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/drive.py +0 -0
  159. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/drive_queue.py +0 -0
  160. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/drive_sessions_snapshot.py +0 -0
  161. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/drive_state.py +0 -0
  162. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/events.py +0 -0
  163. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/failure_class.py +0 -0
  164. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/failure_classifier.py +0 -0
  165. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/filelock.py +0 -0
  166. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/fleet_config_health.py +0 -0
  167. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/forge_availability.py +0 -0
  168. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/freshness.py +0 -0
  169. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/gate_a.py +0 -0
  170. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/gate_b.py +0 -0
  171. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/gate_snapshot.py +0 -0
  172. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/gates.py +0 -0
  173. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/gen_board_fixture.py +0 -0
  174. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/github_ops.py +0 -0
  175. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/github_throttle.py +0 -0
  176. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/goal.py +0 -0
  177. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/graph_health.py +0 -0
  178. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/gtk_native_driver.py +0 -0
  179. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/__init__.py +0 -0
  180. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/aggregate.py +0 -0
  181. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/__init__.py +0 -0
  182. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/_ci_pin.py +0 -0
  183. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/agent_install.py +0 -0
  184. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/cargo_targets.py +0 -0
  185. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/claude_binary.py +0 -0
  186. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/config_drift.py +0 -0
  187. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  188. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/coord_web_ci_pin.py +0 -0
  189. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/deploy_lane_facts.py +0 -0
  190. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/disk.py +0 -0
  191. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/fleet_board.py +0 -0
  192. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  193. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/fleet_phantom.py +0 -0
  194. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/fleet_unit_drift.py +0 -0
  195. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/graph.py +0 -0
  196. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/graphify_cli.py +0 -0
  197. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/gui_lane_preflight.py +0 -0
  198. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/index_lock.py +0 -0
  199. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/issues_sync_staleness.py +0 -0
  200. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/local_machine_identity.py +0 -0
  201. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/plan_usage.py +0 -0
  202. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/pr_churn.py +0 -0
  203. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/release_cordon.py +0 -0
  204. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/repo_state.py +0 -0
  205. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/spawned_coord.py +0 -0
  206. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/stalled_pipeline.py +0 -0
  207. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/timer_active.py +0 -0
  208. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/toolchain.py +0 -0
  209. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/unit_drift.py +0 -0
  210. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/unit_enablement.py +0 -0
  211. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/wedged_drive_queue.py +0 -0
  212. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/checks/worktrees.py +0 -0
  213. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/cli.py +0 -0
  214. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/context.py +0 -0
  215. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/fleet_snapshot.py +0 -0
  216. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/models.py +0 -0
  217. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/pypi.py +0 -0
  218. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/registry.py +0 -0
  219. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/render.py +0 -0
  220. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/health/units.py +0 -0
  221. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/hooks.py +0 -0
  222. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/housekeeping.py +0 -0
  223. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/interactive.py +0 -0
  224. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/invariant_alarms.py +0 -0
  225. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/issue_store.py +0 -0
  226. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/issues_sync_status.py +0 -0
  227. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/key_spec.py +0 -0
  228. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/liveness_auditor.py +0 -0
  229. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/mac_native_driver.py +0 -0
  230. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/machine_fault.py +0 -0
  231. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/machine_metrics.py +0 -0
  232. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/machine_onboard.py +0 -0
  233. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/machine_pause.py +0 -0
  234. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/machine_stats.py +0 -0
  235. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/merge_queue.py +0 -0
  236. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/milestone_chat.py +0 -0
  237. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/milestone_dispatch.py +0 -0
  238. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/milestone_gate.py +0 -0
  239. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/milestone_order.py +0 -0
  240. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/mock_author.py +0 -0
  241. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/models.py +0 -0
  242. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/native_fs_wait.py +0 -0
  243. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/native_pixels.py +0 -0
  244. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/network.py +0 -0
  245. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/new_issue_chat.py +0 -0
  246. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/nightly_runner.py +0 -0
  247. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/nightly_smoke.py +0 -0
  248. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/nightly_status.py +0 -0
  249. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/nightly_store.py +0 -0
  250. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/notifier/__init__.py +0 -0
  251. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/notifier/baseline.py +0 -0
  252. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/notifier/cli.py +0 -0
  253. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/notifier/collect.py +0 -0
  254. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/notifier/digest.py +0 -0
  255. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/notifier/models.py +0 -0
  256. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/notifier/predicate.py +0 -0
  257. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/notifier/service.py +0 -0
  258. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/notifier/store.py +0 -0
  259. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/notifier/transport.py +0 -0
  260. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/notify.py +0 -0
  261. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/openapi.py +0 -0
  262. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/overlap_fence.py +0 -0
  263. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/overlap_predict.py +0 -0
  264. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/parentage.py +0 -0
  265. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/parentage_github.py +0 -0
  266. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/pipeline.py +0 -0
  267. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/plan_parser.py +0 -0
  268. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/plans.py +0 -0
  269. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/platform_paths.py +0 -0
  270. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/portal_bridge.py +0 -0
  271. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/portal_store.py +0 -0
  272. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/portal_sync.py +0 -0
  273. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/pr_body_lint.py +0 -0
  274. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/prereqs.py +0 -0
  275. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/prereview_gate.py +0 -0
  276. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/progress.py +0 -0
  277. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/providers/__init__.py +0 -0
  278. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/providers/base.py +0 -0
  279. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/providers/claude.py +0 -0
  280. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/providers/claude_pty.py +0 -0
  281. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/providers/opencode.py +0 -0
  282. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/queue_diagnose.py +0 -0
  283. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/reconcile.py +0 -0
  284. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/reconcile_tick.py +0 -0
  285. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/refine_chat.py +0 -0
  286. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/release_cordon.py +0 -0
  287. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/release_gate.py +0 -0
  288. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/release_propagate.py +0 -0
  289. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/release_verify.py +0 -0
  290. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/release_window.py +0 -0
  291. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/repo_dormancy.py +0 -0
  292. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/repo_edit.py +0 -0
  293. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/repo_onboard.py +0 -0
  294. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/reports.py +0 -0
  295. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/rest_schema.py +0 -0
  296. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/restart_cmd.py +0 -0
  297. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/revalidate.py +0 -0
  298. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/review.py +0 -0
  299. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/scorecard.py +0 -0
  300. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/self_health.py +0 -0
  301. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/serve_app.py +0 -0
  302. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/shell_exec_wrap.py +0 -0
  303. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  304. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  305. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  306. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  307. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  308. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/skills/portal-followup/SKILL.md +0 -0
  309. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/skills/release-now/SKILL.md +0 -0
  310. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  311. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  312. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/skills/update-issue/SKILL.md +0 -0
  313. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/smoke.py +0 -0
  314. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/smoke_tags.py +0 -0
  315. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/spend_ceiling.py +0 -0
  316. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/split_work.py +0 -0
  317. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/sql.py +0 -0
  318. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/stage_projection.py +0 -0
  319. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/state.py +0 -0
  320. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/store_migrate.py +0 -0
  321. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/store_parity.py +0 -0
  322. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/templates/deploy-cloudflare.node.yml +0 -0
  323. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/test_author.py +0 -0
  324. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/test_chat.py +0 -0
  325. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/test_orchestrator.py +0 -0
  326. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/test_report.py +0 -0
  327. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/tui_pty_driver.py +0 -0
  328. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/tui_release.py +0 -0
  329. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/uat_checks.py +0 -0
  330. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/upstream_gaps.py +0 -0
  331. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/usage.py +0 -0
  332. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/usage_limits.py +0 -0
  333. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/usage_rollup.py +0 -0
  334. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/win_native_bridge.py +0 -0
  335. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/win_native_driver.py +0 -0
  336. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/coord/worker_events.py +0 -0
  337. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-agent.service +0 -0
  338. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-backup.service +0 -0
  339. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-backup.timer +0 -0
  340. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-db-backup.service +0 -0
  341. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-db-backup.sh +0 -0
  342. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-db-backup.timer +0 -0
  343. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-dr-verify.service +0 -0
  344. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-dr-verify.timer +0 -0
  345. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-drive-queue.service +0 -0
  346. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-drive-queue.timer +0 -0
  347. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-failure-notify.service +0 -0
  348. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-failure-notify.sh +0 -0
  349. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-fleet-watchdog.service +0 -0
  350. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-fleet-watchdog.timer +0 -0
  351. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-nightly-smoke.service +0 -0
  352. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-nightly-smoke.timer +0 -0
  353. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-notify.service +0 -0
  354. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-notify.timer +0 -0
  355. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-release-propagate.service +0 -0
  356. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-release-propagate.timer +0 -0
  357. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-release-window.service +0 -0
  358. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-release-window.timer +0 -0
  359. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-serve.service +0 -0
  360. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-web-dist-build.service +0 -0
  361. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-web-dist-build.sh +0 -0
  362. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-web-dist-build.timer +0 -0
  363. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-web-rollback.sh +0 -0
  364. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/coord-web.service +0 -0
  365. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/deploy/node-shim.sh +0 -0
  366. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/ADR_COORD_TUI_CI.md +0 -0
  367. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  368. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/ADR_COORD_WEB_CI.md +0 -0
  369. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/ADR_COORD_WEB_DIST.md +0 -0
  370. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  371. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/AGENT_OPERATIONS.md +0 -0
  372. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/ARCHITECTURE.md +0 -0
  373. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/ARCH_SECURITY_GATES.md +0 -0
  374. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/COCKPIT.md +0 -0
  375. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/CONTROL_CENTER.md +0 -0
  376. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/COST_DISCIPLINE.md +0 -0
  377. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/CROSS_PLATFORM.md +0 -0
  378. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/CUSTOMER_FACING_APPS.md +0 -0
  379. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/CUSTOMER_PORTAL.md +0 -0
  380. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/DATA_STORE_SELECTION.md +0 -0
  381. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/DISASTER_RECOVERY.md +0 -0
  382. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/DRIVE_QUEUE.md +0 -0
  383. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/EPHEMERAL_WORKERS.md +0 -0
  384. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/FORGE_MIGRATION.md +0 -0
  385. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/GRAPHIFY_SETUP.md +0 -0
  386. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/ISSUE_GUIDANCE.md +0 -0
  387. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/MAC_MINI.md +0 -0
  388. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  389. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/NOTIFIER.md +0 -0
  390. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/OPENCODE_VERIFICATION.md +0 -0
  391. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/OPERATING_GOTCHAS.md +0 -0
  392. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/OPERATOR_GUIDES.md +0 -0
  393. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/ORACLE_LOOP.md +0 -0
  394. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/PHONE_WEBAPP.md +0 -0
  395. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/PIPELINE_V2.md +0 -0
  396. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/PLATFORM_EVOLUTION.md +0 -0
  397. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/SECOND_BACKEND.md +0 -0
  398. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/STORE_SERVICE.md +0 -0
  399. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  400. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/WEB_CONTROL_CENTER.md +0 -0
  401. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/WSL_WINDOWS_WORKER.md +0 -0
  402. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/mocks/web/README.md +0 -0
  403. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/mocks/web/_tokens.css +0 -0
  404. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/mocks/web/issue-detail.html +0 -0
  405. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/mocks/web/pipeline-narrow.html +0 -0
  406. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/docs/mocks/web/pipeline-wide.html +0 -0
  407. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/graphify-out/.gitignore +0 -0
  408. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/install-agent.sh +0 -0
  409. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/pyproject.toml +0 -0
  410. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/audit_review_verdict_overrides.py +0 -0
  411. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  412. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/azure-workers/build-worker-image.sh +0 -0
  413. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/azure-workers/coordinator-machine.py +0 -0
  414. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/azure-workers/dr-down.sh +0 -0
  415. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/azure-workers/dr-up.sh +0 -0
  416. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/azure-workers/epic-down.sh +0 -0
  417. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/azure-workers/epic-up.sh +0 -0
  418. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/azure-workers/preflight.sh +0 -0
  419. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/azure-workers/provision-server.sh +0 -0
  420. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/azure-workers/provision-worker.sh +0 -0
  421. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  422. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  423. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/azure-workers/throwaway-vm.sh +0 -0
  424. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/azure-workers/verify-github-token.sh +0 -0
  425. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/check_gh_argv_containment.py +0 -0
  426. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/codegen.py +0 -0
  427. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/comment_cruft.py +0 -0
  428. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/coord-test-runner.sh +0 -0
  429. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  430. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  431. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  432. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  433. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/coord-venv-rollback.sh +0 -0
  434. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/drive-batch.sh +0 -0
  435. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/extract-coord-tui.sh +0 -0
  436. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/fleet_watchdog.py +0 -0
  437. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/gen_board_fixture.py +0 -0
  438. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/gen_mock_index.py +0 -0
  439. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/lib/provision-core.sh +0 -0
  440. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/next_release_tag.py +0 -0
  441. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/provision-machine.sh +0 -0
  442. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/run_tests_in_populated_home.sh +0 -0
  443. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/run_tests_without_gh.sh +0 -0
  444. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/setup-macmini.sh +0 -0
  445. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/smoke_437_interactive.py +0 -0
  446. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/verify-provision-noble.sh +0 -0
  447. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/verify_878_review_capture.py +0 -0
  448. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/verify_release_published.py +0 -0
  449. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/scripts/verify_release_wheel.py +0 -0
  450. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/setup.cfg +0 -0
  451. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/SMOKE_SET.md +0 -0
  452. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/__init__.py +0 -0
  453. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/acceptance/ms-37/conftest.py +0 -0
  454. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/acceptance/ms-37/contract.md +0 -0
  455. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/acceptance/ms-37/manifest.yml +0 -0
  456. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  457. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  458. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/acceptance/ms-51/contract.md +0 -0
  459. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  460. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  461. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/acceptance/ms-51/manifest.yml +0 -0
  462. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  463. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/acceptance/ms-51/tsconfig.json +0 -0
  464. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  465. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/backends.py +0 -0
  466. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/conftest.py +0 -0
  467. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/board-pipeline-basic.json +0 -0
  468. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  469. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  470. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  471. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  472. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/playwright/all_pass.json +0 -0
  473. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  474. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/playwright/mixed_fail.json +0 -0
  475. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  476. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  477. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/playwright/skip.json +0 -0
  478. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/playwright/truncated.json +0 -0
  479. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  480. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  481. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  482. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  483. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
  484. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  485. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  486. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  487. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  488. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_acceptance.py +0 -0
  489. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_acceptance_drivers.py +0 -0
  490. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent.py +0 -0
  491. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_api_error.py +0 -0
  492. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_app.py +0 -0
  493. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_branch_base.py +0 -0
  494. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_branch_capture.py +0 -0
  495. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_config_free_1712.py +0 -0
  496. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_deploy_units_endpoint.py +0 -0
  497. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_dirty_worktree.py +0 -0
  498. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  499. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_graph_refresh.py +0 -0
  500. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_graph_self_heal.py +0 -0
  501. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_health_h3.py +0 -0
  502. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_idle_restart.py +0 -0
  503. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_push_failure.py +0 -0
  504. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_reap.py +0 -0
  505. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_repos_and_pull.py +0 -0
  506. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_restart_services_endpoint.py +0 -0
  507. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_skills_self_heal.py +0 -0
  508. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_startup_diagnostics.py +0 -0
  509. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_update.py +0 -0
  510. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_update_bluegreen.py +0 -0
  511. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_usage_limit.py +0 -0
  512. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_agent_zero_commit.py +0 -0
  513. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_ambient_home_isolation.py +0 -0
  514. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_app_drive.py +0 -0
  515. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_approve_capability_reroute_3241.py +0 -0
  516. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_approve_dependency_busy_2804.py +0 -0
  517. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_approve_reject_plan.py +0 -0
  518. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_approve_usage_gate.py +0 -0
  519. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_approved_work_2532.py +0 -0
  520. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_approved_work_2996.py +0 -0
  521. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_assignment_already_recorded_daemon.py +0 -0
  522. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_audit_log.py +0 -0
  523. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_audit_outcome.py +0 -0
  524. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_audit_query.py +0 -0
  525. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_auto_loop.py +0 -0
  526. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_auto_release_publish_2035.py +0 -0
  527. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_backend_selection.py +0 -0
  528. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_backup.py +0 -0
  529. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_base_checkout_restore.py +0 -0
  530. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_block_log.py +0 -0
  531. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_board_cap_762.py +0 -0
  532. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_board_fixture.py +0 -0
  533. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_board_nightly_status.py +0 -0
  534. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_board_read_path.py +0 -0
  535. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_board_schema.py +0 -0
  536. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_board_service.py +0 -0
  537. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_board_state.py +0 -0
  538. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_board_wire.py +0 -0
  539. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_brain.py +0 -0
  540. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_branch_model.py +0 -0
  541. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_briefing_lessons.py +0 -0
  542. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_bug_intake.py +0 -0
  543. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_bugbash.py +0 -0
  544. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_build_worker_image_env_update.py +0 -0
  545. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cargo_cache.py +0 -0
  546. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_check_gh_argv_containment.py +0 -0
  547. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_ci_acceptance_gate_1950.py +0 -0
  548. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_ci_fix.py +0 -0
  549. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_ci_github.py +0 -0
  550. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_ci_gitlab.py +0 -0
  551. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_ci_parity_2091.py +0 -0
  552. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_ci_store.py +0 -0
  553. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_claim.py +0 -0
  554. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_claude_md_budget.py +0 -0
  555. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_claude_setup_token.py +0 -0
  556. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_acceptance.py +0 -0
  557. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_assign.py +0 -0
  558. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  559. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_assign_interactive_remote.py +0 -0
  560. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_assign_provider.py +0 -0
  561. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  562. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_audit.py +0 -0
  563. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_chat_continue.py +0 -0
  564. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_ci.py +0 -0
  565. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_codegen.py +0 -0
  566. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_decide.py +0 -0
  567. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_diagnose_capability_rules.py +0 -0
  568. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_diagnose_config_provenance.py +0 -0
  569. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_diagnose_forge_availability.py +0 -0
  570. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_diagnose_graph.py +0 -0
  571. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_diagnose_self.py +0 -0
  572. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_diagnose_test_coverage.py +0 -0
  573. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_doctor.py +0 -0
  574. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_doctor_config_free_1801.py +0 -0
  575. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  576. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  577. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_drive.py +0 -0
  578. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_escalate.py +0 -0
  579. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_fix_headless_review.py +0 -0
  580. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_gate_a.py +0 -0
  581. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_inject_board_less.py +0 -0
  582. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_install_drift.py +0 -0
  583. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_install_skills.py +0 -0
  584. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_issue_close_wrong_repo.py +0 -0
  585. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_issue_comment.py +0 -0
  586. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_issue_create_label.py +0 -0
  587. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_issue_reopen.py +0 -0
  588. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_issue_view_list.py +0 -0
  589. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_issues.py +0 -0
  590. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_merge.py +0 -0
  591. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_milestone_assign.py +0 -0
  592. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_milestone_capture.py +0 -0
  593. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_milestone_chat_add_child.py +0 -0
  594. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_milestone_dispatch.py +0 -0
  595. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_milestone_gate_b.py +0 -0
  596. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_milestone_gate_c.py +0 -0
  597. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_milestone_order.py +0 -0
  598. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  599. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_milestone_ship.py +0 -0
  600. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_network.py +0 -0
  601. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_new_issue_chat.py +0 -0
  602. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_plans.py +0 -0
  603. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_portal.py +0 -0
  604. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_pr.py +0 -0
  605. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_pull_artifact.py +0 -0
  606. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_queue.py +0 -0
  607. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_reattach_sessions.py +0 -0
  608. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_refine_board.py +0 -0
  609. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_release_preflight.py +0 -0
  610. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_release_propagate.py +0 -0
  611. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_release_window.py +0 -0
  612. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_repo_2220.py +0 -0
  613. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  614. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_scorecard.py +0 -0
  615. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_serve_store_backend_3084.py +0 -0
  616. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_set_review_findings.py +0 -0
  617. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_smoke_nightly.py +0 -0
  618. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_smoke_nightly_sweep.py +0 -0
  619. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_status_advisory_terminal.py +0 -0
  620. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_status_contested_tag.py +0 -0
  621. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_status_invariant_alarms.py +0 -0
  622. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_status_machine_fault.py +0 -0
  623. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_status_merge_queue.py +0 -0
  624. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_status_nightly.py +0 -0
  625. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_status_provider.py +0 -0
  626. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_status_retried_3340.py +0 -0
  627. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_status_review_finalizing.py +0 -0
  628. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_status_supervisor_3366.py +0 -0
  629. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_status_test_failed_tag.py +0 -0
  630. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_status_usage_limit.py +0 -0
  631. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_sync_comments_873.py +0 -0
  632. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_test_plan.py +0 -0
  633. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_track.py +0 -0
  634. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_tui_update.py +0 -0
  635. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cli_wait.py +0 -0
  636. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_client.py +0 -0
  637. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_client_base_install.py +0 -0
  638. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_client_config_cache_atomic_3052.py +0 -0
  639. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_client_resource_migration_1946.py +0 -0
  640. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_commands_common.py +0 -0
  641. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_comment_cruft.py +0 -0
  642. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_comments.py +0 -0
  643. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_completion_summary.py +0 -0
  644. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_config.py +0 -0
  645. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_config_acceptance.py +0 -0
  646. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_config_audit.py +0 -0
  647. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_config_drift_check.py +0 -0
  648. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_config_effective.py +0 -0
  649. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_config_prereview_gate.py +0 -0
  650. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_config_pricing.py +0 -0
  651. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  652. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_config_usage_gate.py +0 -0
  653. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_confirm_test.py +0 -0
  654. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_conflict_fix.py +0 -0
  655. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_conflict_fix_semantic.py +0 -0
  656. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  657. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_coord_test.py +0 -0
  658. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  659. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_coord_test_runner_baseline.py +0 -0
  660. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_coord_test_runner_populated_home.py +0 -0
  661. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_coord_test_runner_routing.py +0 -0
  662. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_coord_test_runner_toolchain.py +0 -0
  663. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_coord_uat.py +0 -0
  664. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_coord_web_sse_restart_live.py +0 -0
  665. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_coordinator_machine.py +0 -0
  666. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_cross_platform_imports.py +0 -0
  667. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dao.py +0 -0
  668. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dashboard.py +0 -0
  669. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dashboard_api.py +0 -0
  670. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dashboard_fixture.py +0 -0
  671. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dashboard_reports.py +0 -0
  672. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dashboard_server.py +0 -0
  673. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dashboard_terminal.py +0 -0
  674. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dashboard_terminal_live.py +0 -0
  675. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_db.py +0 -0
  676. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dead_end.py +0 -0
  677. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_decomposition_chat.py +0 -0
  678. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_deploy_coord_db_backup.py +0 -0
  679. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_deploy_coord_web_dist.py +0 -0
  680. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_deploy_coord_web_rollback.py +0 -0
  681. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_deploy_db_backup_unit.py +0 -0
  682. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_deploy_drive_queue_unit.py +0 -0
  683. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_deploy_failure_notify_unit.py +0 -0
  684. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_deploy_manifest.py +0 -0
  685. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_deploy_notify_unit.py +0 -0
  686. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_deploy_units_lane.py +0 -0
  687. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_deploy_web_unit.py +0 -0
  688. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_deprecation_telemetry.py +0 -0
  689. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_deps.py +0 -0
  690. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_diagnose.py +0 -0
  691. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dirlink.py +0 -0
  692. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dispatch.py +0 -0
  693. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dispatch_liveness.py +0 -0
  694. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dispatch_target_validation.py +0 -0
  695. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dispatch_workers.py +0 -0
  696. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dist_name.py +0 -0
  697. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_done_housekeeping.py +0 -0
  698. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dr_azure_scripts.py +0 -0
  699. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dr_promote.py +0 -0
  700. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_dr_verify.py +0 -0
  701. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_drive.py +0 -0
  702. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_drive_machine_fault.py +0 -0
  703. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_drive_queue.py +0 -0
  704. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_drive_queue_blocked_rendering.py +0 -0
  705. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_drive_queue_launch_argv.py +0 -0
  706. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_drive_queue_max_parallel_config.py +0 -0
  707. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  708. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_drive_queue_roll_pending.py +0 -0
  709. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  710. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_drive_sessions_snapshot.py +0 -0
  711. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_drive_state.py +0 -0
  712. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_drive_tmux.py +0 -0
  713. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_epic_up_capability_detection.py +0 -0
  714. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  715. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_epic_up_image_provenance.py +0 -0
  716. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_errors.py +0 -0
  717. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_events.py +0 -0
  718. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_failure_class.py +0 -0
  719. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_failure_classifier.py +0 -0
  720. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_filelock.py +0 -0
  721. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  722. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_fix_escalation_classifier.py +0 -0
  723. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_fix_of_force_override.py +0 -0
  724. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_fleet_config_health.py +0 -0
  725. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_fleet_health_probes.py +0 -0
  726. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_fleet_health_snapshot.py +0 -0
  727. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_fleet_watchdog.py +0 -0
  728. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_forge_availability.py +0 -0
  729. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_freshness.py +0 -0
  730. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_gate_a.py +0 -0
  731. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_gate_b.py +0 -0
  732. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_gate_snapshot_staleness.py +0 -0
  733. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_gates.py +0 -0
  734. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  735. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_gen_mock_index.py +0 -0
  736. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_generated_rust_fixture.py +0 -0
  737. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_generated_rust_requests.py +0 -0
  738. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_generated_types_fixture.py +0 -0
  739. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_github_ops.py +0 -0
  740. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_github_throttle.py +0 -0
  741. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_goal.py +0 -0
  742. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_graph_health.py +0 -0
  743. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_graph_selfheal_absent_2237.py +0 -0
  744. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_gtk_native_driver.py +0 -0
  745. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_handoff.py +0 -0
  746. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_checks.py +0 -0
  747. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_cli.py +0 -0
  748. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_cli_graph.py +0 -0
  749. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_config.py +0 -0
  750. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_context.py +0 -0
  751. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_coord_tui_ci_pin.py +0 -0
  752. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_coord_web_ci_pin.py +0 -0
  753. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_deploy_lane_facts.py +0 -0
  754. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_fix.py +0 -0
  755. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_incident_regression.py +0 -0
  756. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_issues_sync_staleness.py +0 -0
  757. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_pr_churn.py +0 -0
  758. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_pypi.py +0 -0
  759. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_registry.py +0 -0
  760. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_release_cordon_probe.py +0 -0
  761. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_timer_active.py +0 -0
  762. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_toolchain.py +0 -0
  763. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_unit_drift.py +0 -0
  764. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_unit_enablement.py +0 -0
  765. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_health_wedged_drive_queue.py +0 -0
  766. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_hooks.py +0 -0
  767. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_housekeeping.py +0 -0
  768. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_human_attended_437.py +0 -0
  769. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_init.py +0 -0
  770. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_install_agent_capabilities_3515.py +0 -0
  771. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_install_agent_venv_2911.py +0 -0
  772. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_install_agent_wsl_bridge_3515.py +0 -0
  773. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_integration.py +0 -0
  774. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_interactive.py +0 -0
  775. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_interactive_briefing_echo.py +0 -0
  776. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_interactive_pane_log_2541.py +0 -0
  777. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_interactive_prefill_state.py +0 -0
  778. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_interactive_session_relaunch.py +0 -0
  779. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_interactive_test_verdict_backstop.py +0 -0
  780. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_interactive_token_attribution.py +0 -0
  781. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_interactive_worktree.py +0 -0
  782. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_invariant_alarms.py +0 -0
  783. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_issue_store_seam.py +0 -0
  784. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_issues_sync_status.py +0 -0
  785. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_key_spec.py +0 -0
  786. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_liveness_auditor.py +0 -0
  787. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_liveness_notify.py +0 -0
  788. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_lock_contention_ratchet.py +0 -0
  789. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_mac_native_driver.py +0 -0
  790. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_machine_fault.py +0 -0
  791. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_machine_metrics.py +0 -0
  792. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_machine_onboard.py +0 -0
  793. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_machine_pause.py +0 -0
  794. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_machine_stats.py +0 -0
  795. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_merge_queue.py +0 -0
  796. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_merge_verification.py +0 -0
  797. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_merge_verify.py +0 -0
  798. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_milestone_chat.py +0 -0
  799. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_milestone_dispatch.py +0 -0
  800. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_milestone_gate.py +0 -0
  801. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_milestone_order.py +0 -0
  802. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_milestone_seam.py +0 -0
  803. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_mock_author.py +0 -0
  804. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_model_tiering.py +0 -0
  805. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_models.py +0 -0
  806. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_models_config_labels.py +0 -0
  807. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_models_pinned_1650.py +0 -0
  808. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_native_fs_wait.py +0 -0
  809. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_native_pixels.py +0 -0
  810. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_needs_attention.py +0 -0
  811. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_network.py +0 -0
  812. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_new_issue_chat.py +0 -0
  813. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_next_release_tag.py +0 -0
  814. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_nightly_runner.py +0 -0
  815. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_nightly_smoke.py +0 -0
  816. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_nightly_status.py +0 -0
  817. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_nightly_store.py +0 -0
  818. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_no_eligible_host_3600.py +0 -0
  819. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_node_shim.py +0 -0
  820. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_notifier_baseline.py +0 -0
  821. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_notifier_cli.py +0 -0
  822. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_notifier_collect.py +0 -0
  823. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_notifier_config.py +0 -0
  824. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_notifier_drive_seam.py +0 -0
  825. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_notifier_isolation.py +0 -0
  826. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_notifier_predicate.py +0 -0
  827. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_notifier_quiet_hours.py +0 -0
  828. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_notifier_service.py +0 -0
  829. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_notify.py +0 -0
  830. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_notify_drain.py +0 -0
  831. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_openapi.py +0 -0
  832. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_operational_defaults.py +0 -0
  833. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_overlap_fence.py +0 -0
  834. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_overlap_predict.py +0 -0
  835. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_packaged_deploy_units.py +0 -0
  836. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_parentage.py +0 -0
  837. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_paste_landed.py +0 -0
  838. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  839. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_pipeline.py +0 -0
  840. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_plain_runner_smoke_3673.py +0 -0
  841. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_plan_followup_approve_plan_command.py +0 -0
  842. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_plan_followup_pr_command.py +0 -0
  843. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_plan_followup_review_command.py +0 -0
  844. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_plan_only.py +0 -0
  845. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_plan_parser.py +0 -0
  846. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_platform_paths.py +0 -0
  847. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_portal_bridge.py +0 -0
  848. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_portal_config.py +0 -0
  849. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_portal_store.py +0 -0
  850. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_portal_sync.py +0 -0
  851. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_pr_body_lint.py +0 -0
  852. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_prereqs.py +0 -0
  853. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_prereview_gate.py +0 -0
  854. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_production_db_guard.py +0 -0
  855. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_progress.py +0 -0
  856. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_provider_seam.py +0 -0
  857. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_providers.py +0 -0
  858. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_providers_config_labels.py +0 -0
  859. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_providers_pty.py +0 -0
  860. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_provision_core.py +0 -0
  861. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_provision_machine.py +0 -0
  862. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_py_rust_mirror_inventory.py +0 -0
  863. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_quiet_hours.py +0 -0
  864. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_quiet_hours_store_2146.py +0 -0
  865. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_reap_merged_sessions.py +0 -0
  866. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_reap_stale_interactive_tick.py +0 -0
  867. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_reconcile.py +0 -0
  868. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_reconcile_branch.py +0 -0
  869. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_reconcile_completions.py +0 -0
  870. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  871. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_reconcile_merges.py +0 -0
  872. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_reconcile_no_agent_record.py +0 -0
  873. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_reconcile_tick.py +0 -0
  874. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_reconcile_usage_limit_done.py +0 -0
  875. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_refine_chat.py +0 -0
  876. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_release_cordon_2101.py +0 -0
  877. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  878. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_release_cordon_deadlock_2240.py +0 -0
  879. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  880. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_release_cordon_stuck_2490.py +0 -0
  881. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_release_gate.py +0 -0
  882. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_release_propagate.py +0 -0
  883. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_release_propagate_threshold.py +0 -0
  884. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_release_roll_between_legs_2854.py +0 -0
  885. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_release_roll_window_handoff.py +0 -0
  886. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_release_unified_1242.py +0 -0
  887. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_release_verify.py +0 -0
  888. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_release_window.py +0 -0
  889. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_remote_auto_prune.py +0 -0
  890. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_remote_interactive_reaper.py +0 -0
  891. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_repo_add.py +0 -0
  892. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_repo_dormancy.py +0 -0
  893. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_repo_edit_2220.py +0 -0
  894. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_repo_graph_fleet_2237.py +0 -0
  895. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_repo_max_parallel_3423.py +0 -0
  896. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_repo_onboard_2220.py +0 -0
  897. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_report_public_export.py +0 -0
  898. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_report_result_push.py +0 -0
  899. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_reports.py +0 -0
  900. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_restart_cmd.py +0 -0
  901. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_retry.py +0 -0
  902. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_retry_advisory_1606.py +0 -0
  903. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_retry_escalation_classify_3360.py +0 -0
  904. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_retry_type_1636.py +0 -0
  905. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_revalidate.py +0 -0
  906. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_review.py +0 -0
  907. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_review_end_review_without_verdict.py +0 -0
  908. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_review_parse_failure_diagnostic.py +0 -0
  909. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_review_reaffirm.py +0 -0
  910. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_review_state.py +0 -0
  911. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_review_verdict_backstop.py +0 -0
  912. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_review_verdict_override_audit.py +0 -0
  913. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_review_verdict_relay.py +0 -0
  914. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_review_zero_commits.py +0 -0
  915. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_scoped_review_wiring.py +0 -0
  916. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_scorecard.py +0 -0
  917. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_self_health.py +0 -0
  918. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_serve.py +0 -0
  919. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_serve_app.py +0 -0
  920. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_serve_app_board_trim.py +0 -0
  921. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_serve_rest_routes.py +0 -0
  922. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_session.py +0 -0
  923. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_slice_issue_attribution.py +0 -0
  924. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_smoke.py +0 -0
  925. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  926. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_smoke_live_checkout_restore.py +0 -0
  927. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_smoke_plain_runner_3673.py +0 -0
  928. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_smoke_workflow.py +0 -0
  929. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_spend_ceiling.py +0 -0
  930. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_spend_ceiling_coordinator.py +0 -0
  931. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_split.py +0 -0
  932. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_split_work.py +0 -0
  933. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_sql_dialect.py +0 -0
  934. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_sqlite_connect_ratchet.py +0 -0
  935. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_stage_projection.py +0 -0
  936. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_stale_busy_reviewer_697.py +0 -0
  937. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_stalled_pipeline.py +0 -0
  938. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_state.py +0 -0
  939. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_state_review_findings_daemon.py +0 -0
  940. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_status_fleet_footer.py +0 -0
  941. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_stop_1567.py +0 -0
  942. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_store_contract.py +0 -0
  943. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_store_migrate.py +0 -0
  944. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_stuck.py +0 -0
  945. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  946. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_terminal_command.py +0 -0
  947. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_test_author.py +0 -0
  948. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_test_chat.py +0 -0
  949. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_test_orchestrator.py +0 -0
  950. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_test_report.py +0 -0
  951. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_test_verdict_parsing.py +0 -0
  952. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_test_verdict_transcript_floor.py +0 -0
  953. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_text_io_encoding_audit.py +0 -0
  954. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_thin_client_board_audit.py +0 -0
  955. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_thin_client_config_load_1080.py +0 -0
  956. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_thin_client_daemon_routing_906.py +0 -0
  957. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_throwaway_vm.py +0 -0
  958. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_tmux_host.py +0 -0
  959. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_tmux_session.py +0 -0
  960. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_transcript_floor.py +0 -0
  961. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_tui_pty_driver.py +0 -0
  962. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_uat_checks.py +0 -0
  963. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_upstream_gaps.py +0 -0
  964. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_usage.py +0 -0
  965. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_usage_limits.py +0 -0
  966. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_usage_rollup.py +0 -0
  967. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_venv_live_install_2121.py +0 -0
  968. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_version_single_source.py +0 -0
  969. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_watch.py +0 -0
  970. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_win_native_bridge.py +0 -0
  971. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_win_native_driver.py +0 -0
  972. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  973. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_worker_env_venv_isolation.py +0 -0
  974. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_worker_events.py +0 -0
  975. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_worker_image_pin_sync.py +0 -0
  976. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_worker_safety.py +0 -0
  977. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_worker_test_scoping.py +0 -0
  978. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_worktree.py +0 -0
  979. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  980. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/test_write_parity.py +0 -0
  981. {code_coordinator-0.5.647 → code_coordinator-0.5.649}/tests/write_parity.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.647
3
+ Version: 0.5.649
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.647
3
+ Version: 0.5.649
4
4
  Summary: Coordinate Claude Code workers across multiple machines and repos.
5
5
  Author-email: John Donaghy <johnfdonaghy@gmail.com>
6
6
  License-Expression: LicenseRef-FSL-1.1-MIT
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.5.649",
3
+ "distance": 0,
4
+ "node": "g86804ec8747c96b5ade7034cf0c6d0a6f617febb",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-10-18"
8
+ }
@@ -6474,6 +6474,7 @@ def run_plain_runner_command(
6474
6474
  cwd: str,
6475
6475
  *,
6476
6476
  timeout: float,
6477
+ env: dict[str, str] | None = None,
6477
6478
  run: Callable[..., subprocess.CompletedProcess] = subprocess.run,
6478
6479
  ) -> PlainRunnerVerdict:
6479
6480
  """Execute *command* as a bare subprocess in *cwd* and derive a
@@ -6510,6 +6511,7 @@ def run_plain_runner_command(
6510
6511
  # content a worker or a smoke runner is actually testing.
6511
6512
  result = run(
6512
6513
  command, shell=True, cwd=cwd, capture_output=True, text=True, timeout=timeout,
6514
+ env=env,
6513
6515
  )
6514
6516
  except subprocess.TimeoutExpired as exc:
6515
6517
  combined = (exc.stdout or "") + (exc.stderr or "")
@@ -6536,6 +6538,7 @@ def execute_plain_runner_smoke(
6536
6538
  cwd: str,
6537
6539
  *,
6538
6540
  timeout: float,
6541
+ env: dict[str, str] | None = None,
6539
6542
  run: Callable[..., subprocess.CompletedProcess] = subprocess.run,
6540
6543
  spawn_failure_summary: Callable[[AssignmentSpec, PlainRunnerVerdict], None] | None = None,
6541
6544
  ) -> PlainRunnerVerdict:
@@ -6571,7 +6574,7 @@ def execute_plain_runner_smoke(
6571
6574
  log_tail="#3673 plain-runner: no smoke_command on this assignment spec",
6572
6575
  )
6573
6576
  else:
6574
- verdict = run_plain_runner_command(spec.smoke_command, cwd, timeout=timeout, run=run)
6577
+ verdict = run_plain_runner_command(spec.smoke_command, cwd, timeout=timeout, env=env, run=run)
6575
6578
 
6576
6579
  if not verdict.passed and not verdict.baseline_red and spawn_failure_summary is not None:
6577
6580
  spawn_failure_summary(spec, verdict)
@@ -10376,9 +10379,10 @@ class AgentServer:
10376
10379
  if spec.smoke_timeout_s and spec.smoke_timeout_s > 0
10377
10380
  else 600.0
10378
10381
  )
10382
+ smoke_env = {**os.environ, **cargo_cache.cargo_env(spec.repo_name, self.state_dir)}
10379
10383
  try:
10380
10384
  verdict = execute_plain_runner_smoke(
10381
- spec, str(repo_path), timeout=timeout,
10385
+ spec, str(repo_path), timeout=timeout, env=smoke_env,
10382
10386
  spawn_failure_summary=lambda s, v: self._spawn_plain_runner_failure_summary(
10383
10387
  assignment, s, v,
10384
10388
  ),
@@ -31,6 +31,7 @@ from __future__ import annotations
31
31
 
32
32
  import json as _json
33
33
  import logging
34
+ import re
34
35
  import socket
35
36
  import subprocess
36
37
  import time
@@ -95,7 +96,9 @@ from coord.drive_queue import (
95
96
  is_fix_round_ceiling_blocked,
96
97
  is_merge_gate_block_reason,
97
98
  is_permanent_block_reason,
99
+ is_policy_refusal_reason,
98
100
  is_pre_dispatch_block_reason,
101
+ is_premise_refusal_reason,
99
102
  is_test_stage_routing_dead_end_reason,
100
103
  is_unsatisfiable_prereq_reason,
101
104
  merge_gate_remedy_command,
@@ -2304,6 +2307,36 @@ def drive_queue_remove(repo: str, issue: int, config_path: Path) -> None:
2304
2307
  )
2305
2308
 
2306
2309
 
2310
+ #: Shapes an un-filled-in ``--reason`` template takes: an angle-bracketed
2311
+ #: prompt (``<describe why the premise now holds>``) or a bare ellipsis
2312
+ #: (``"..."``) — the two forms this repo's own remediation strings use.
2313
+ _TEMPLATED_REASON_RE = re.compile(r"<[^<>]*>|^[.…\s]+$")
2314
+
2315
+
2316
+ def _is_templated_reason(reason: str) -> bool:
2317
+ """True when *reason* is still a copy-pasted placeholder, not an assertion.
2318
+
2319
+ #3339's premise recheck is "a human's explicit, auditable assertion …
2320
+ its mere presence — never inferred, never re-derived" (`coord/drive.py`'s
2321
+ `decide()`), so the one thing `--reason` must never accept is the template
2322
+ text out of a remediation string. Several surfaces print that chain with a
2323
+ placeholder in it — `coord diagnose`'s `refused_premise` finding, the
2324
+ premise park reason, and the `proposed_command` on the #3719 refusal-park
2325
+ escalation, which `coord escalate run` executes blind with no confirmation
2326
+ prompt. Rejecting the placeholder is what makes such a blind run exit
2327
+ non-zero (so nothing is requeued and the escalation is not dismissed)
2328
+ instead of recording a fabricated assertion and dispatching paid work at
2329
+ a premise nobody rechecked.
2330
+
2331
+ The angle-bracket arm over-matches: a genuine reason that quotes a
2332
+ bracketed URL (`PR <https://…> landed`) is rejected too. That is the
2333
+ deliberate direction to err in — the rejection names the offending
2334
+ string and shows a usable example, so the cost is one retyped sentence,
2335
+ whereas the other direction records an assertion nobody made.
2336
+ """
2337
+ return bool(_TEMPLATED_REASON_RE.search(reason))
2338
+
2339
+
2307
2340
  @drive_queue_group.command("clear-refusal")
2308
2341
  @click.argument("repo")
2309
2342
  @click.argument("issue", type=int)
@@ -2336,6 +2369,13 @@ def drive_queue_clear_refusal(
2336
2369
  row that will actually tick. Re-scope the issue FIRST if the remaining
2337
2370
  work has changed — this command only unblocks dispatch, it does not
2338
2371
  touch the issue body.
2372
+
2373
+ `--reason` must be your own words. A still-templated placeholder — the
2374
+ `<...>`/`"..."` text the remediation chains printed by `coord diagnose`,
2375
+ the premise park reason and the #3719 refusal-park escalation all carry
2376
+ — is rejected, so running one of those chains verbatim (including blind,
2377
+ via `coord escalate run`) fails here rather than fabricating the
2378
+ assertion and redispatching paid work at an unverified premise.
2339
2379
  """
2340
2380
  from coord.drive_state import WORK_LIKE # noqa: PLC0415
2341
2381
  from coord.state import mark_premise_rechecked # noqa: PLC0415
@@ -2343,6 +2383,16 @@ def drive_queue_clear_refusal(
2343
2383
  reason = reason.strip()
2344
2384
  if not reason:
2345
2385
  raise click.ClickException("--reason must not be empty")
2386
+ if _is_templated_reason(reason):
2387
+ raise click.ClickException(
2388
+ f"--reason is still the placeholder text ({reason!r}) — it must be "
2389
+ "your own assertion of why the premise now holds (e.g. "
2390
+ '--reason "quadraui#971 landed, re-scoped to a pin move"). This '
2391
+ "is recorded as a human's explicit, auditable claim that the "
2392
+ "prerequisite exists now, and `coord drive` dispatches fresh "
2393
+ "paid work off its mere presence, so it is never inferred and "
2394
+ "never filled in from a template."
2395
+ )
2346
2396
 
2347
2397
  aid, status, _machine = _latest_work_assignment(repo, issue)
2348
2398
  if not aid:
@@ -6759,7 +6809,15 @@ def _apply_writes(plan: TickPlan) -> None:
6759
6809
  update_drive_queue_entry(parsed[0], parsed[1], **updates)
6760
6810
 
6761
6811
 
6762
- def _escalate(repo: str, issue: int, *, reason: str, gates: str, command: str) -> None:
6812
+ def _escalate(
6813
+ repo: str,
6814
+ issue: int,
6815
+ *,
6816
+ reason: str,
6817
+ gates: str,
6818
+ command: str,
6819
+ assignment_id: str | None = None,
6820
+ ) -> None:
6763
6821
  from coord.state import record_drive_escalation # noqa: PLC0415
6764
6822
 
6765
6823
  record_drive_escalation(
@@ -6769,6 +6827,7 @@ def _escalate(repo: str, issue: int, *, reason: str, gates: str, command: str) -
6769
6827
  reason=reason,
6770
6828
  gate_readings=gates,
6771
6829
  proposed_command=command,
6830
+ assignment_id=assignment_id,
6772
6831
  )
6773
6832
 
6774
6833
 
@@ -6801,6 +6860,77 @@ def _requeue_command(entry: QueueEntry | None, key: str) -> str:
6801
6860
  )
6802
6861
 
6803
6862
 
6863
+ def _refusal_park_escalation_command(
6864
+ entry: QueueEntry | None,
6865
+ key: str,
6866
+ reason: str,
6867
+ kind: str,
6868
+ *,
6869
+ config_path: Path | None = None,
6870
+ ) -> str:
6871
+ """The command a #3719 policy-/premise-refusal `parked` escalation
6872
+ proposes.
6873
+
6874
+ Both causes need a human DECISION first — retarget the issue (policy,
6875
+ #2234) or confirm the premise now holds (premise, #3164) — and neither
6876
+ decision is itself expressible as a blind CLI command: retargeting means
6877
+ rewriting the GitHub issue title by hand, and `clear-refusal` takes a
6878
+ free-text `--reason` only a human can write. `reason` (passed through
6879
+ verbatim as this escalation's own `reason=`) already states which
6880
+ decision is needed and why, so this only has to supply the mechanical
6881
+ half that runs once that decision is made.
6882
+
6883
+ A parked `refused_premise`/`refused_policy` row IS a completed
6884
+ Work-stage assignment (that is what those statuses mean), so it gets
6885
+ the mechanical half from `_blocked_escalation_command` — the same
6886
+ function every other parked/blocked escalation uses — instead of a
6887
+ bespoke requeue: #2377's open-PR check (never propose a blind requeue
6888
+ when an out-of-band PR already exists for this entry) and #3539's
6889
+ plain-`add` carve-out (a green PR missing only its recorded gates)
6890
+ both apply here as they do for any other parked entry. One corner is
6891
+ inherited from #3539's own design rather than chosen here: it reasons
6892
+ from `state.work_aid` being unset, which for a refusal park it is not,
6893
+ so on a premise refusal whose issue has acquired a green out-of-band PR
6894
+ the plain `add` restarts the Work stage over that PR rather than
6895
+ running only the missing stages forward.
6896
+
6897
+ For `kind == "premise"`, `coord drive`'s `decide()` reads the latest
6898
+ work assignment's own `work_status` column directly — independent of
6899
+ the drive-queue row or any PR — so ANY redispatch (the blind requeue
6900
+ OR the #3539 plain `add`) dies on the same refusal again unless
6901
+ `clear-refusal` first records that the premise now holds. Prepend
6902
+ that step whenever the delegated command would actually redispatch
6903
+ (still names `drive-queue add`); the inspect/merge-existing remedies
6904
+ propose no redispatch at all, so they need no such prefix. The policy
6905
+ case has no `clear-refusal` equivalent — #2234's refusal is cleared by
6906
+ retargeting the GitHub issue by hand, which a redispatch neither needs
6907
+ nor can bypass.
6908
+
6909
+ The `--reason` this emits is a PLACEHOLDER, and this field is executed
6910
+ blind: `coord escalate run` shells the whole string out with no
6911
+ confirmation prompt, and `coord/reports.py` offers it as the card's
6912
+ "Recommended" option. That is safe only because
6913
+ :func:`_is_templated_reason` makes `clear-refusal` reject the
6914
+ placeholder, so a one-key run fails on the FIRST step — nothing is
6915
+ requeued, no premise assertion is recorded, and `escalate run` reports
6916
+ the failure instead of dismissing the escalation as resolved. Keep the
6917
+ two in step: an edit here that produces a reason `clear-refusal` would
6918
+ accept turns this into a blind command that fabricates the one value
6919
+ #3339 says must never be inferred.
6920
+ """
6921
+ tail = _blocked_escalation_command(entry, key, reason, config_path=config_path)
6922
+ if kind != "premise" or "drive-queue add" not in tail:
6923
+ return tail
6924
+ parsed = parse_key(key)
6925
+ if parsed is None:
6926
+ return tail
6927
+ repo, issue = parsed
6928
+ return (
6929
+ f"coord drive-queue clear-refusal {repo} {issue} "
6930
+ f'--reason "<describe why the premise now holds>" && {tail}'
6931
+ )
6932
+
6933
+
6804
6934
  def _blocked_escalation_command(
6805
6935
  entry: QueueEntry | None,
6806
6936
  key: str,
@@ -7771,6 +7901,74 @@ def drive_queue_tick(
7771
7901
  command=merge_plan_inspect_command(parsed[0]),
7772
7902
  )
7773
7903
 
7904
+ # #3719: a `parked` entry whose park reason names a policy (#2234)
7905
+ # or premise (#3164) refusal never resumes on its own — see
7906
+ # `plan_tick`'s pre-pass above (`is_policy_refusal_reason`/
7907
+ # `is_premise_refusal_reason` both just `continue`, leaving the
7908
+ # entry parked rather than falling through to the CI-park auto-
7909
+ # resume) — so without this it sits invisible until an operator
7910
+ # happens to notice it in `coord drive-queue list`. Gate-A
7911
+ # (#2063), throttle-skip (#2977), `merge_ci_pending` (#1891), and
7912
+ # the issue-cache-stale (#2858) parks are deliberately NOT swept
7913
+ # here: all four are documented, by the same pre-pass, to clear
7914
+ # themselves with no human decision needed — exactly the
7915
+ # auto-resolvable half #3719 says must NOT be escalated.
7916
+ #
7917
+ # This fires once: `plan.reconciles` only carries a `"parked"`
7918
+ # entry for *this* key on the single tick `_reconcile_running`
7919
+ # first parks it (a running entry hitting the refusal) — every
7920
+ # later tick the entry stays parked, the pre-pass above `continue`s
7921
+ # without emitting a `Reconcile` for it at all, so there is no
7922
+ # repeat entry here to re-escalate on.
7923
+ for item in plan.reconciles:
7924
+ if item.outcome != "parked":
7925
+ continue
7926
+ if not (
7927
+ is_policy_refusal_reason(item.reason)
7928
+ or is_premise_refusal_reason(item.reason)
7929
+ ):
7930
+ continue
7931
+ parsed = parse_key(item.key)
7932
+ if parsed is None:
7933
+ continue
7934
+ entry = by_key.get(item.key)
7935
+ kind = "premise" if is_premise_refusal_reason(item.reason) else "policy"
7936
+ # Best-effort, matching `_record_checks_stale_escalation`'s own
7937
+ # posture: the write above (`_apply_writes(plan)`) already
7938
+ # landed, so a failure recording the escalation itself must not
7939
+ # turn an otherwise-successful tick into a reported CLI failure.
7940
+ # The stdout line is the floor, and here it is load-bearing: the
7941
+ # sweep fires once per park, so a failure anywhere in this block
7942
+ # (including inside `_refusal_park_escalation_command`, which
7943
+ # reaches `gh` for #2377's open-PR check) loses this entry's ONLY
7944
+ # escalation permanently — it must at least leave a trace.
7945
+ try:
7946
+ aid, _status, _machine = _latest_work_assignment(
7947
+ parsed[0], parsed[1]
7948
+ )
7949
+ _escalate(
7950
+ parsed[0],
7951
+ parsed[1],
7952
+ reason=item.reason,
7953
+ gates=(
7954
+ f"queue_state=parked | refusal={kind} | position="
7955
+ f"{entry.position if entry else '?'}"
7956
+ ),
7957
+ command=_refusal_park_escalation_command(
7958
+ entry,
7959
+ item.key,
7960
+ item.reason,
7961
+ kind,
7962
+ config_path=config_path,
7963
+ ),
7964
+ assignment_id=aid or None,
7965
+ )
7966
+ except Exception as exc: # noqa: BLE001 — the stdout line is the floor
7967
+ click.echo(
7968
+ f" (could not record the {kind}-refusal park escalation "
7969
+ f"for {item.key}: {exc})"
7970
+ )
7971
+
7774
7972
  # #3695 review finding 1: `_apply_writes(plan)` above only ever
7775
7973
  # touches `_DRIVE_QUEUE_UPDATABLE` columns on the DRIVE QUEUE row
7776
7974
  # itself (`update_drive_queue_entry`) — it has no way to reach the
@@ -451,6 +451,7 @@ models:
451
451
  bug: sonnet
452
452
  enhancement: sonnet
453
453
  infrastructure: opus
454
+ ultracode: opus
454
455
  # Pin each alias to an exact model id so the coordinator passes the exact
455
456
  # version to `claude -p --model <id>` instead of relying on the CLI's
456
457
  # latest-by-default. Aliases not listed here fall back to claude -p's pick.
@@ -1093,6 +1093,98 @@ def test_blocked_escalation_command_proposes_a_plain_add_when_pr_is_green_but_un
1093
1093
  assert "remove" not in command
1094
1094
 
1095
1095
 
1096
+ # ── #3719: what a refusal park's escalation proposes ────────────────────────
1097
+ #
1098
+ # `_refusal_park_escalation_command` delegates the mechanical half to
1099
+ # `_blocked_escalation_command` (so #2377's open-PR check and #3539's
1100
+ # plain-`add` carve-out apply) and prepends `clear-refusal` ONLY when the
1101
+ # delegated tail would actually redispatch AND the refusal is a premise one.
1102
+ # That branch selector is a substring sniff on the tail, so both of its
1103
+ # negative legs are pinned here: a wording change in
1104
+ # `existing_pr_relaunch_remedy`/`merge_gate_remedy_command` that silently
1105
+ # flipped either direction would otherwise leave the suite green.
1106
+
1107
+
1108
+ def test_refusal_park_command_prepends_clear_refusal_for_a_premise_requeue(
1109
+ monkeypatch, config_file,
1110
+ ):
1111
+ """The positive leg: premise refusal, nothing dispatched out of band, so
1112
+ the tail is the blind requeue — `coord drive`'s `decide()` reads the
1113
+ latest work row's own status, so the requeue must be preceded by the
1114
+ `clear-refusal` that records the premise holds now (#3339)."""
1115
+ from coord.commands.drive_queue import _refusal_park_escalation_command
1116
+ from coord.drive_queue import entry_key
1117
+
1118
+ monkeypatch.setattr(
1119
+ "coord.commands.drive_queue._existing_pr_match",
1120
+ lambda config_path, repo, issue: None,
1121
+ )
1122
+ command = _refusal_park_escalation_command(
1123
+ None, entry_key(REPO, 4219), "refused on the issue's own false premise",
1124
+ "premise", config_path=config_file,
1125
+ )
1126
+
1127
+ assert command.startswith(f"coord drive-queue clear-refusal {REPO} 4219 ")
1128
+ assert command.index("clear-refusal") < command.index("drive-queue remove")
1129
+ assert command.endswith(
1130
+ f"coord drive-queue remove {REPO} 4219 && coord drive-queue add {REPO} 4219"
1131
+ )
1132
+
1133
+
1134
+ def test_refusal_park_command_omits_clear_refusal_for_a_policy_refusal(
1135
+ monkeypatch, config_file,
1136
+ ):
1137
+ """A `refused_policy` verdict (#2234) has no `clear-refusal` equivalent —
1138
+ it is cleared by retargeting the GitHub issue by hand, which no CLI
1139
+ command expresses — so the proposed command is the delegated tail
1140
+ unchanged. #2871's stale-refusal bypass makes that plain requeue
1141
+ genuinely work once the retarget lands."""
1142
+ from coord.commands.drive_queue import _refusal_park_escalation_command
1143
+ from coord.drive_queue import entry_key
1144
+
1145
+ monkeypatch.setattr(
1146
+ "coord.commands.drive_queue._existing_pr_match",
1147
+ lambda config_path, repo, issue: None,
1148
+ )
1149
+ command = _refusal_park_escalation_command(
1150
+ None, entry_key(REPO, 4220), "refused: the deliverable is coordinator-only",
1151
+ "policy", config_path=config_file,
1152
+ )
1153
+
1154
+ assert command == (
1155
+ f"coord drive-queue remove {REPO} 4220 && coord drive-queue add {REPO} 4220"
1156
+ )
1157
+ assert "clear-refusal" not in command
1158
+
1159
+
1160
+ def test_refusal_park_command_omits_clear_refusal_when_the_tail_wont_redispatch(
1161
+ monkeypatch, config_file,
1162
+ ):
1163
+ """#2377's leg, reached through a premise refusal: an out-of-band green PR
1164
+ already exists for this entry, so the tail is `coord merge --only` and
1165
+ nothing is redispatched. Prepending `clear-refusal` there would assert a
1166
+ rechecked premise to unblock a dispatch that is not going to happen."""
1167
+ from coord.commands.drive_queue import _refusal_park_escalation_command
1168
+ from coord.drive_queue import ExistingPrMatch, entry_key
1169
+
1170
+ monkeypatch.setattr(
1171
+ "coord.commands.drive_queue._existing_pr_match",
1172
+ lambda config_path, repo, issue: ExistingPrMatch(
1173
+ number=4321,
1174
+ branch="issue-4219-prereq-landed",
1175
+ url="https://github.com/example/claude-coordinator/pull/4321",
1176
+ all_green=True,
1177
+ ),
1178
+ )
1179
+ command = _refusal_park_escalation_command(
1180
+ None, entry_key(REPO, 4219), "refused on the issue's own false premise",
1181
+ "premise", config_path=config_file,
1182
+ )
1183
+
1184
+ assert command == f"coord merge --only {REPO}#4219"
1185
+ assert "clear-refusal" not in command
1186
+
1187
+
1096
1188
  def test_a_declared_file_is_checked_against_a_live_branchs_real_diff(
1097
1189
  cli, declare, seed, branch_diff,
1098
1190
  ):
@@ -2296,6 +2388,79 @@ def test_clear_refusal_requires_a_nonempty_reason(cli, seed):
2296
2388
  assert "must not be empty" in result.output
2297
2389
 
2298
2390
 
2391
+ @pytest.mark.parametrize(
2392
+ "reason",
2393
+ [
2394
+ "<describe why the premise now holds>",
2395
+ "...",
2396
+ "…",
2397
+ "the prerequisite <name it> has landed",
2398
+ ],
2399
+ )
2400
+ def test_clear_refusal_rejects_a_still_templated_reason(cli, seed, coord_db, reason):
2401
+ """The recorded recheck is "a human's explicit, auditable assertion …
2402
+ never inferred" (`coord/drive.py`'s `decide()`), and `coord drive`
2403
+ dispatches fresh paid work off its mere presence. Several surfaces print
2404
+ the remediation chain WITH a placeholder in the `--reason` — `coord
2405
+ diagnose`'s `refused_premise` finding, the premise park reason, and the
2406
+ #3719 refusal-park escalation's `proposed_command`, which `coord escalate
2407
+ run` shells out blind. Copying one verbatim must fail here rather than
2408
+ record the template text as the assertion."""
2409
+ seed(assignments=[{"issue_number": 1650, "status": "refused_premise"}])
2410
+
2411
+ result = cli("clear-refusal", REPO, "1650", "--reason", reason)
2412
+
2413
+ assert result.exit_code != 0, result.output
2414
+ assert "still the placeholder text" in result.output
2415
+ row = coord_db.execute(
2416
+ "SELECT premise_rechecked_at, premise_rechecked_reason FROM assignments "
2417
+ "WHERE assignment_id = ?",
2418
+ ("a-claude-coordinator-0",),
2419
+ ).fetchone()
2420
+ assert row["premise_rechecked_at"] is None
2421
+ assert row["premise_rechecked_reason"] is None
2422
+
2423
+
2424
+ def test_the_refusal_escalations_own_proposed_command_fails_closed(
2425
+ cli, seed, coord_db, monkeypatch, config_file,
2426
+ ):
2427
+ """`drive_escalations.proposed_command` is executed BLIND: `coord escalate
2428
+ run` shells the whole string out with no confirmation prompt and, unless
2429
+ it exits non-zero, dismisses the escalation as resolved. So the premise
2430
+ remedy's placeholder `--reason` is only safe while `clear-refusal` keeps
2431
+ rejecting it — this reads the placeholder back out of the command the
2432
+ sweep actually proposes and asserts a blind run dies on the FIRST step,
2433
+ before any requeue and with no fabricated recheck recorded."""
2434
+ import shlex
2435
+
2436
+ from coord.commands.drive_queue import _refusal_park_escalation_command
2437
+ from coord.drive_queue import entry_key
2438
+
2439
+ monkeypatch.setattr(
2440
+ "coord.commands.drive_queue._existing_pr_match",
2441
+ lambda config_path, repo, issue: None,
2442
+ )
2443
+ proposed = _refusal_park_escalation_command(
2444
+ None, entry_key(REPO, 1650), "refused on the issue's own false premise",
2445
+ "premise", config_path=config_file,
2446
+ )
2447
+ first_step, _, requeue = proposed.partition(" && ")
2448
+ argv = shlex.split(first_step)
2449
+ assert argv[:4] == ["coord", "drive-queue", "clear-refusal", REPO]
2450
+ assert "drive-queue add" in requeue # the step that must never be reached
2451
+ reason = argv[argv.index("--reason") + 1]
2452
+
2453
+ seed(assignments=[{"issue_number": 1650, "status": "refused_premise"}])
2454
+ result = cli("clear-refusal", REPO, "1650", "--reason", reason)
2455
+
2456
+ assert result.exit_code != 0, result.output
2457
+ row = coord_db.execute(
2458
+ "SELECT premise_rechecked_at FROM assignments WHERE assignment_id = ?",
2459
+ ("a-claude-coordinator-0",),
2460
+ ).fetchone()
2461
+ assert row["premise_rechecked_at"] is None
2462
+
2463
+
2299
2464
  # ── remove owns the driver it orphans (#3282) ───────────────────────────────
2300
2465
  #
2301
2466
  # Before this fix, `remove` deleted only the queue row: a driver already
@@ -3094,6 +3259,87 @@ def test_a_dead_drives_own_exit_reason_reaches_the_queue_row(
3094
3259
  assert state._get_drive_escalation_local(REPO, 1762) is not None
3095
3260
 
3096
3261
 
3262
+ def test_a_premise_refusal_park_escalates_exactly_once(
3263
+ cli, seed, launches, coord_db, monkeypatch,
3264
+ ):
3265
+ """#3719: a premise refusal (#3164) parks the entry, but unlike a
3266
+ `merge_ci_pending` park it never clears itself — `plan_tick`'s
3267
+ STATE_PARKED pre-pass just `continue`s on it forever (see
3268
+ `test_a_parked_policy_refusal_does_not_auto_resume_next_tick` in
3269
+ tests/test_drive_queue.py). Before this issue, that meant the entry
3270
+ sat parked and invisible until an operator happened to go looking in
3271
+ `coord drive-queue list`. The very tick that first parks it must now
3272
+ also write a `drive_escalations` row naming the human decision needed
3273
+ (confirm the premise now holds) and, as the mechanical half, a
3274
+ `clear-refusal` ahead of the requeue — `coord drive`'s `decide()` keys
3275
+ off the latest work assignment's own status column, so a bare requeue
3276
+ without first clearing the refusal would just die on it again. Because
3277
+ the pre-pass never re-emits a `Reconcile` for an already-parked entry, a
3278
+ second tick must NOT write a second escalation.
3279
+ """
3280
+ from coord.audit import record_audit
3281
+ from coord.models import PREMISE_REFUSAL_MARKER
3282
+ from coord import state as state_module
3283
+
3284
+ calls = []
3285
+ real_record = state_module.record_drive_escalation
3286
+
3287
+ def _spy(*args, **kwargs):
3288
+ calls.append((args, kwargs))
3289
+ return real_record(*args, **kwargs)
3290
+
3291
+ monkeypatch.setattr(state_module, "record_drive_escalation", _spy)
3292
+
3293
+ seed(issues={4219: "open"})
3294
+ cli("add", REPO, "4219")
3295
+ cli("tick")
3296
+
3297
+ reason = (
3298
+ f"drive exited for {REPO}#4219 (exit_code=1): work 721861c90bf3 "
3299
+ "refused on the issue's own false premise rather than doing the "
3300
+ f"dispatched work — the worker did the CORRECT thing (#3164). "
3301
+ f"{PREMISE_REFUSAL_MARKER}"
3302
+ )
3303
+ launched_at = queued(4219)["launched_at"]
3304
+ _backdate(4219, DRIVE_STARTUP_GRACE_SECONDS + 60)
3305
+ record_audit(
3306
+ tier="business", category="drive", event_type="drive_exited",
3307
+ actor="drive", summary=reason, repo=REPO, issue=4219,
3308
+ ts=launched_at + 5,
3309
+ )
3310
+ result = cli("tick")
3311
+ assert result.exit_code == 0, result.output
3312
+
3313
+ entry = queued(4219)
3314
+ assert entry["state"] == "parked"
3315
+ assert entry["attempts"] == 0
3316
+
3317
+ escalation = state._get_drive_escalation_local(REPO, 4219)
3318
+ assert escalation is not None
3319
+ proposed = escalation["proposed_command"]
3320
+ assert "coord drive-queue clear-refusal" in proposed
3321
+ assert "coord drive-queue remove" in proposed
3322
+ assert "coord drive-queue add" in proposed
3323
+ # The clear-refusal must run BEFORE the requeue it precedes, or the
3324
+ # requeue's own redispatch races the still-unset premise-recheck flag.
3325
+ assert proposed.index("clear-refusal") < proposed.index("remove")
3326
+ assert PREMISE_REFUSAL_MARKER in escalation["reason"]
3327
+ assert "refusal=premise" in escalation["gate_readings"]
3328
+ first_created_at = escalation["created_at"]
3329
+ assert len(calls) == 1, calls
3330
+
3331
+ # A second tick: the entry stays parked, no second escalation write.
3332
+ second = cli("tick")
3333
+ assert second.exit_code == 0, second.output
3334
+ assert queued(4219)["state"] == "parked"
3335
+ still = state._get_drive_escalation_local(REPO, 4219)
3336
+ assert still is not None
3337
+ assert still["created_at"] == first_created_at
3338
+ # The actual write call count — not just the preserved `created_at` —
3339
+ # is the assertion that would fail if the sweep re-escalated.
3340
+ assert len(calls) == 1, calls
3341
+
3342
+
3097
3343
  def test_exhausted_ci_stale_escalation_proposes_revalidate_not_a_requeue(
3098
3344
  cli, seed, launches, coord_db, config_file
3099
3345
  ):
@@ -3386,6 +3632,27 @@ def test_a_still_parked_entry_stays_parked_across_a_quiet_tick(
3386
3632
  assert len(launches) == 1, launches # no second launch attempt
3387
3633
 
3388
3634
 
3635
+ def test_a_merge_ci_pending_park_never_escalates(cli, seed, launches, coord_db):
3636
+ """#3719's sweep targets only the two causes a human must decide
3637
+ (policy/premise refusal) — a `merge_ci_pending` park is self-healing
3638
+ (the pre-pass in `plan_tick` resumes it the moment CI reports), so it
3639
+ must never write a `drive_escalations` row, no matter how many quiet
3640
+ ticks it sits through."""
3641
+ seed(issues={1762: "open"})
3642
+ cli("add", REPO, "1762")
3643
+ cli("tick")
3644
+ _seed_ci_pending_merge_row(coord_db, 1762)
3645
+ _backdate(1762, DRIVE_STARTUP_GRACE_SECONDS + 60)
3646
+ cli("tick")
3647
+ assert queued(1762)["state"] == "parked"
3648
+ assert state._get_drive_escalation_local(REPO, 1762) is None
3649
+
3650
+ result = cli("tick")
3651
+ assert result.exit_code == 0, result.output
3652
+ assert queued(1762)["state"] == "parked"
3653
+ assert state._get_drive_escalation_local(REPO, 1762) is None
3654
+
3655
+
3389
3656
  # ── #2158: a park must have an exit that is not the merge it blocks ────────
3390
3657
  #
3391
3658
  # #1891's resume predicate was refreshable ONLY by a live `coord merge`
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "0.5.647",
3
- "distance": 0,
4
- "node": "g60a9fa87d838723613ea07d8d30f1e8a08914471",
5
- "dirty": false,
6
- "branch": "HEAD",
7
- "node_date": "2026-10-17"
8
- }