code-coordinator 0.5.654__tar.gz → 0.5.656__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.654 → code_coordinator-0.5.656}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/agent.py +121 -22
  5. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/providers/claude.py +8 -0
  6. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/smoke.py +7 -2
  7. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_reap.py +50 -0
  8. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_plain_runner_smoke_3673.py +82 -8
  9. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/.claude/commands/board.md +0 -0
  10. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/.claude/commands/complete-session.md +0 -0
  11. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/.claude/commands/coordinator.md +0 -0
  12. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/.githooks/_lib.sh +0 -0
  13. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/.githooks/post-checkout +0 -0
  14. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/.githooks/post-commit +0 -0
  15. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/.githooks/post-merge +0 -0
  16. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  17. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/.github/coord-ci-acceptance.yml +0 -0
  18. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/.github/workflows/auto-release.yml +0 -0
  19. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/.github/workflows/publish.yml +0 -0
  20. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/.github/workflows/test.yml +0 -0
  21. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/.gitignore +0 -0
  22. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/CLAUDE.md +0 -0
  23. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/GOAL.md +0 -0
  24. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/LICENSE +0 -0
  25. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/MANIFEST.in +0 -0
  26. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/README.md +0 -0
  27. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/code_coordinator.egg-info/SOURCES.txt +0 -0
  28. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/code_coordinator.egg-info/dependency_links.txt +0 -0
  29. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/code_coordinator.egg-info/entry_points.txt +0 -0
  30. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/code_coordinator.egg-info/requires.txt +0 -0
  31. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/code_coordinator.egg-info/scm_file_list.json +0 -0
  32. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/code_coordinator.egg-info/top_level.txt +0 -0
  33. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/__init__.py +0 -0
  34. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/_board_mapping.py +0 -0
  35. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/acceptance.py +0 -0
  36. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/acceptance_drivers.py +0 -0
  37. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/agent_app.py +0 -0
  38. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/agent_update.py +0 -0
  39. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/agents/opencode/.gitignore +0 -0
  40. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/agents/opencode/agents/work.md +0 -0
  41. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/agents/opencode/routing.jsonc +0 -0
  42. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/app_drive.py +0 -0
  43. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/app_drive_daemon.py +0 -0
  44. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/approved_work.py +0 -0
  45. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/audit.py +0 -0
  46. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/auto_loop.py +0 -0
  47. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/backup.py +0 -0
  48. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/block_log.py +0 -0
  49. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/board_schema.py +0 -0
  50. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/board_service.py +0 -0
  51. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/board_wire.py +0 -0
  52. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/brain.py +0 -0
  53. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/branch_model.py +0 -0
  54. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/briefing_lessons.py +0 -0
  55. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/bug_intake.py +0 -0
  56. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/bugbash.py +0 -0
  57. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/cargo_cache.py +0 -0
  58. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/ci_fix.py +0 -0
  59. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/ci_github.py +0 -0
  60. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/ci_gitlab.py +0 -0
  61. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/ci_store.py +0 -0
  62. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/claim.py +0 -0
  63. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/claude_setup_token.py +0 -0
  64. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/cli.py +0 -0
  65. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/client.py +0 -0
  66. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/codegen.py +0 -0
  67. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/__init__.py +0 -0
  68. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/_common.py +0 -0
  69. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/acceptance.py +0 -0
  70. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/agent_ops.py +0 -0
  71. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/app_drive.py +0 -0
  72. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/audit.py +0 -0
  73. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/backup.py +0 -0
  74. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/bugbash.py +0 -0
  75. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/chat.py +0 -0
  76. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/ci.py +0 -0
  77. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/codegen.py +0 -0
  78. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/dispatch.py +0 -0
  79. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/dispatch_workers.py +0 -0
  80. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/dr.py +0 -0
  81. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/drive.py +0 -0
  82. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/drive_queue.py +0 -0
  83. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/gate_a.py +0 -0
  84. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/gates.py +0 -0
  85. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/issues.py +0 -0
  86. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/lifecycle.py +0 -0
  87. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/machine.py +0 -0
  88. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/merge.py +0 -0
  89. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/milestone.py +0 -0
  90. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/plan_followup.py +0 -0
  91. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/plans.py +0 -0
  92. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/portal.py +0 -0
  93. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/pr.py +0 -0
  94. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/release.py +0 -0
  95. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/repo.py +0 -0
  96. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/report.py +0 -0
  97. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/review.py +0 -0
  98. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/scorecard.py +0 -0
  99. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/sessions.py +0 -0
  100. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/setup.py +0 -0
  101. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/smoke.py +0 -0
  102. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/status.py +0 -0
  103. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/store_migrate.py +0 -0
  104. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/terminal.py +0 -0
  105. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/test_gate.py +0 -0
  106. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/commands/tui.py +0 -0
  107. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/comments.py +0 -0
  108. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/config.py +0 -0
  109. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/config_reload.py +0 -0
  110. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/confirm_test.py +0 -0
  111. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/conflict_fix.py +0 -0
  112. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/dao.py +0 -0
  113. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/dashboard/__init__.py +0 -0
  114. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/dashboard/fixture.py +0 -0
  115. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/dashboard/index.html +0 -0
  116. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/dashboard/reports.html +0 -0
  117. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/dashboard/server.py +0 -0
  118. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/dashboard/terminal.py +0 -0
  119. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/db.py +0 -0
  120. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/dead_end.py +0 -0
  121. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/decomposition_chat.py +0 -0
  122. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/README.md +0 -0
  123. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-agent.service +0 -0
  124. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-backup.service +0 -0
  125. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-backup.timer +0 -0
  126. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-db-backup.service +0 -0
  127. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-db-backup.sh +0 -0
  128. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-db-backup.timer +0 -0
  129. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-dr-verify.service +0 -0
  130. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-dr-verify.timer +0 -0
  131. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-drive-queue.service +0 -0
  132. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-drive-queue.timer +0 -0
  133. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-failure-notify.service +0 -0
  134. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-fleet-watchdog.service +0 -0
  135. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  136. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-nightly-smoke.service +0 -0
  137. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-nightly-smoke.timer +0 -0
  138. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-notify.service +0 -0
  139. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-notify.timer +0 -0
  140. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-release-propagate.service +0 -0
  141. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-release-propagate.timer +0 -0
  142. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-release-window.service +0 -0
  143. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-release-window.timer +0 -0
  144. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-serve.service +0 -0
  145. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-web-dist-build.service +0 -0
  146. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-web-dist-build.timer +0 -0
  147. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy/coord-web.service +0 -0
  148. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy_manifest.py +0 -0
  149. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deploy_units.py +0 -0
  150. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deprecation_telemetry.py +0 -0
  151. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/deps.py +0 -0
  152. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/diagnose.py +0 -0
  153. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/dirlink.py +0 -0
  154. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/dispatch.py +0 -0
  155. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/dispatch_liveness.py +0 -0
  156. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/dist_name.py +0 -0
  157. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/dr_promote.py +0 -0
  158. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/dr_verify.py +0 -0
  159. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/drive.py +0 -0
  160. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/drive_queue.py +0 -0
  161. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/drive_sessions_snapshot.py +0 -0
  162. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/drive_state.py +0 -0
  163. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/events.py +0 -0
  164. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/failure_class.py +0 -0
  165. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/failure_classifier.py +0 -0
  166. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/filelock.py +0 -0
  167. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/fleet_config_health.py +0 -0
  168. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/forge_availability.py +0 -0
  169. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/freshness.py +0 -0
  170. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/gate_a.py +0 -0
  171. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/gate_b.py +0 -0
  172. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/gate_snapshot.py +0 -0
  173. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/gates.py +0 -0
  174. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/gen_board_fixture.py +0 -0
  175. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/github_ops.py +0 -0
  176. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/github_throttle.py +0 -0
  177. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/goal.py +0 -0
  178. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/graph_health.py +0 -0
  179. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/gtk_native_driver.py +0 -0
  180. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/__init__.py +0 -0
  181. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/aggregate.py +0 -0
  182. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/__init__.py +0 -0
  183. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/_ci_pin.py +0 -0
  184. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/agent_install.py +0 -0
  185. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/cargo_targets.py +0 -0
  186. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/claude_binary.py +0 -0
  187. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/config_drift.py +0 -0
  188. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  189. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/coord_web_ci_pin.py +0 -0
  190. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/deploy_lane_facts.py +0 -0
  191. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/disk.py +0 -0
  192. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/fleet_board.py +0 -0
  193. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  194. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/fleet_phantom.py +0 -0
  195. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/fleet_unit_drift.py +0 -0
  196. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/graph.py +0 -0
  197. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/graphify_cli.py +0 -0
  198. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/gui_lane_preflight.py +0 -0
  199. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/index_lock.py +0 -0
  200. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/issues_sync_staleness.py +0 -0
  201. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/local_machine_identity.py +0 -0
  202. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/plan_usage.py +0 -0
  203. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/pr_churn.py +0 -0
  204. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/release_cordon.py +0 -0
  205. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/repo_state.py +0 -0
  206. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/spawned_coord.py +0 -0
  207. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/stalled_pipeline.py +0 -0
  208. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/timer_active.py +0 -0
  209. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/toolchain.py +0 -0
  210. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/unit_drift.py +0 -0
  211. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/unit_enablement.py +0 -0
  212. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/wedged_drive_queue.py +0 -0
  213. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/checks/worktrees.py +0 -0
  214. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/cli.py +0 -0
  215. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/context.py +0 -0
  216. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/fleet_snapshot.py +0 -0
  217. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/models.py +0 -0
  218. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/pypi.py +0 -0
  219. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/registry.py +0 -0
  220. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/render.py +0 -0
  221. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/health/units.py +0 -0
  222. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/hooks.py +0 -0
  223. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/housekeeping.py +0 -0
  224. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/interactive.py +0 -0
  225. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/invariant_alarms.py +0 -0
  226. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/issue_store.py +0 -0
  227. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/issues_sync_status.py +0 -0
  228. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/key_spec.py +0 -0
  229. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/liveness_auditor.py +0 -0
  230. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/mac_native_driver.py +0 -0
  231. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/machine_fault.py +0 -0
  232. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/machine_metrics.py +0 -0
  233. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/machine_onboard.py +0 -0
  234. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/machine_pause.py +0 -0
  235. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/machine_stats.py +0 -0
  236. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/merge_queue.py +0 -0
  237. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/milestone_chat.py +0 -0
  238. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/milestone_dispatch.py +0 -0
  239. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/milestone_gate.py +0 -0
  240. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/milestone_order.py +0 -0
  241. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/mock_author.py +0 -0
  242. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/models.py +0 -0
  243. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/native_fs_wait.py +0 -0
  244. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/native_pixels.py +0 -0
  245. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/network.py +0 -0
  246. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/new_issue_chat.py +0 -0
  247. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/nightly_runner.py +0 -0
  248. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/nightly_smoke.py +0 -0
  249. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/nightly_status.py +0 -0
  250. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/nightly_store.py +0 -0
  251. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/notifier/__init__.py +0 -0
  252. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/notifier/baseline.py +0 -0
  253. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/notifier/cli.py +0 -0
  254. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/notifier/collect.py +0 -0
  255. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/notifier/digest.py +0 -0
  256. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/notifier/models.py +0 -0
  257. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/notifier/predicate.py +0 -0
  258. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/notifier/service.py +0 -0
  259. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/notifier/store.py +0 -0
  260. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/notifier/transport.py +0 -0
  261. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/notify.py +0 -0
  262. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/openapi.py +0 -0
  263. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/overlap_fence.py +0 -0
  264. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/overlap_predict.py +0 -0
  265. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/parentage.py +0 -0
  266. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/parentage_github.py +0 -0
  267. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/pipeline.py +0 -0
  268. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/plan_parser.py +0 -0
  269. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/plans.py +0 -0
  270. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/platform_paths.py +0 -0
  271. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/portal_bridge.py +0 -0
  272. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/portal_store.py +0 -0
  273. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/portal_sync.py +0 -0
  274. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/pr_body_lint.py +0 -0
  275. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/prereqs.py +0 -0
  276. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/prereview_gate.py +0 -0
  277. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/progress.py +0 -0
  278. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/providers/__init__.py +0 -0
  279. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/providers/base.py +0 -0
  280. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/providers/claude_pty.py +0 -0
  281. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/providers/opencode.py +0 -0
  282. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/queue_diagnose.py +0 -0
  283. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/reconcile.py +0 -0
  284. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/reconcile_tick.py +0 -0
  285. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/refine_chat.py +0 -0
  286. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/release_cordon.py +0 -0
  287. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/release_gate.py +0 -0
  288. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/release_propagate.py +0 -0
  289. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/release_verify.py +0 -0
  290. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/release_window.py +0 -0
  291. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/repo_dormancy.py +0 -0
  292. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/repo_edit.py +0 -0
  293. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/repo_onboard.py +0 -0
  294. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/reports.py +0 -0
  295. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/rest_schema.py +0 -0
  296. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/restart_cmd.py +0 -0
  297. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/revalidate.py +0 -0
  298. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/review.py +0 -0
  299. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/scorecard.py +0 -0
  300. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/self_health.py +0 -0
  301. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/serve_app.py +0 -0
  302. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/shell_exec_wrap.py +0 -0
  303. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  304. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  305. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  306. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  307. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  308. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/skills/portal-followup/SKILL.md +0 -0
  309. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/skills/release-now/SKILL.md +0 -0
  310. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  311. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  312. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/skills/update-issue/SKILL.md +0 -0
  313. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/smoke_tags.py +0 -0
  314. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/spend_ceiling.py +0 -0
  315. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/split_work.py +0 -0
  316. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/sql.py +0 -0
  317. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/stage_projection.py +0 -0
  318. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/state.py +0 -0
  319. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/store_migrate.py +0 -0
  320. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/store_parity.py +0 -0
  321. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/templates/deploy-cloudflare.node.yml +0 -0
  322. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/test_author.py +0 -0
  323. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/test_chat.py +0 -0
  324. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/test_orchestrator.py +0 -0
  325. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/test_report.py +0 -0
  326. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/tui_pty_driver.py +0 -0
  327. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/tui_release.py +0 -0
  328. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/uat_checks.py +0 -0
  329. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/upstream_gaps.py +0 -0
  330. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/usage.py +0 -0
  331. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/usage_limits.py +0 -0
  332. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/usage_rollup.py +0 -0
  333. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/win_native_bridge.py +0 -0
  334. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/win_native_driver.py +0 -0
  335. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coord/worker_events.py +0 -0
  336. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/coordinator.example.yml +0 -0
  337. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-agent.service +0 -0
  338. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-backup.service +0 -0
  339. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-backup.timer +0 -0
  340. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-db-backup.service +0 -0
  341. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-db-backup.sh +0 -0
  342. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-db-backup.timer +0 -0
  343. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-dr-verify.service +0 -0
  344. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-dr-verify.timer +0 -0
  345. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-drive-queue.service +0 -0
  346. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-drive-queue.timer +0 -0
  347. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-failure-notify.service +0 -0
  348. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-failure-notify.sh +0 -0
  349. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-fleet-watchdog.service +0 -0
  350. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-fleet-watchdog.timer +0 -0
  351. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-nightly-smoke.service +0 -0
  352. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-nightly-smoke.timer +0 -0
  353. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-notify.service +0 -0
  354. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-notify.timer +0 -0
  355. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-release-propagate.service +0 -0
  356. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-release-propagate.timer +0 -0
  357. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-release-window.service +0 -0
  358. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-release-window.timer +0 -0
  359. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-serve.service +0 -0
  360. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-web-dist-build.service +0 -0
  361. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-web-dist-build.sh +0 -0
  362. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-web-dist-build.timer +0 -0
  363. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-web-rollback.sh +0 -0
  364. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/coord-web.service +0 -0
  365. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/deploy/node-shim.sh +0 -0
  366. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/ADR_COORD_TUI_CI.md +0 -0
  367. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  368. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/ADR_COORD_WEB_CI.md +0 -0
  369. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/ADR_COORD_WEB_DIST.md +0 -0
  370. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  371. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/AGENT_OPERATIONS.md +0 -0
  372. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/ARCHITECTURE.md +0 -0
  373. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/ARCH_SECURITY_GATES.md +0 -0
  374. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/COCKPIT.md +0 -0
  375. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/CONTROL_CENTER.md +0 -0
  376. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/COST_DISCIPLINE.md +0 -0
  377. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/CROSS_PLATFORM.md +0 -0
  378. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/CUSTOMER_FACING_APPS.md +0 -0
  379. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/CUSTOMER_PORTAL.md +0 -0
  380. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/DATA_STORE_SELECTION.md +0 -0
  381. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/DISASTER_RECOVERY.md +0 -0
  382. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/DRIVE_QUEUE.md +0 -0
  383. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/EPHEMERAL_WORKERS.md +0 -0
  384. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/FORGE_MIGRATION.md +0 -0
  385. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/GRAPHIFY_SETUP.md +0 -0
  386. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/ISSUE_GUIDANCE.md +0 -0
  387. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/MAC_MINI.md +0 -0
  388. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  389. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/NOTIFIER.md +0 -0
  390. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/OPENCODE_VERIFICATION.md +0 -0
  391. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/OPERATING_GOTCHAS.md +0 -0
  392. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/OPERATOR_GUIDES.md +0 -0
  393. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/ORACLE_LOOP.md +0 -0
  394. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/PHONE_WEBAPP.md +0 -0
  395. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/PIPELINE_V2.md +0 -0
  396. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/PLATFORM_EVOLUTION.md +0 -0
  397. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/SECOND_BACKEND.md +0 -0
  398. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/STORE_SERVICE.md +0 -0
  399. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  400. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/WEB_CONTROL_CENTER.md +0 -0
  401. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/WSL_WINDOWS_WORKER.md +0 -0
  402. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/mocks/web/README.md +0 -0
  403. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/mocks/web/_tokens.css +0 -0
  404. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/mocks/web/issue-detail.html +0 -0
  405. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/mocks/web/pipeline-narrow.html +0 -0
  406. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/docs/mocks/web/pipeline-wide.html +0 -0
  407. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/graphify-out/.gitignore +0 -0
  408. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/install-agent.sh +0 -0
  409. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/pyproject.toml +0 -0
  410. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/audit_review_verdict_overrides.py +0 -0
  411. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  412. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/azure-workers/build-worker-image.sh +0 -0
  413. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/azure-workers/coordinator-machine.py +0 -0
  414. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/azure-workers/dr-down.sh +0 -0
  415. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/azure-workers/dr-up.sh +0 -0
  416. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/azure-workers/epic-down.sh +0 -0
  417. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/azure-workers/epic-up.sh +0 -0
  418. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/azure-workers/preflight.sh +0 -0
  419. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/azure-workers/provision-server.sh +0 -0
  420. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/azure-workers/provision-worker.sh +0 -0
  421. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  422. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  423. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/azure-workers/throwaway-vm.sh +0 -0
  424. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/azure-workers/verify-github-token.sh +0 -0
  425. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/check_gh_argv_containment.py +0 -0
  426. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/codegen.py +0 -0
  427. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/comment_cruft.py +0 -0
  428. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/coord-test-runner.sh +0 -0
  429. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  430. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  431. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  432. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  433. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/coord-venv-rollback.sh +0 -0
  434. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/drive-batch.sh +0 -0
  435. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/extract-coord-tui.sh +0 -0
  436. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/fleet_watchdog.py +0 -0
  437. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/gen_board_fixture.py +0 -0
  438. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/gen_mock_index.py +0 -0
  439. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/lib/provision-core.sh +0 -0
  440. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/next_release_tag.py +0 -0
  441. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/provision-machine.sh +0 -0
  442. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/run_tests_in_populated_home.sh +0 -0
  443. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/run_tests_without_gh.sh +0 -0
  444. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/setup-macmini.sh +0 -0
  445. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/smoke_437_interactive.py +0 -0
  446. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/verify-provision-noble.sh +0 -0
  447. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/verify_878_review_capture.py +0 -0
  448. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/verify_release_published.py +0 -0
  449. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/scripts/verify_release_wheel.py +0 -0
  450. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/setup.cfg +0 -0
  451. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/SMOKE_SET.md +0 -0
  452. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/__init__.py +0 -0
  453. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/acceptance/ms-37/conftest.py +0 -0
  454. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/acceptance/ms-37/contract.md +0 -0
  455. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/acceptance/ms-37/manifest.yml +0 -0
  456. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  457. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  458. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/acceptance/ms-51/contract.md +0 -0
  459. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  460. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  461. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/acceptance/ms-51/manifest.yml +0 -0
  462. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  463. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/acceptance/ms-51/tsconfig.json +0 -0
  464. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  465. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/backends.py +0 -0
  466. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/conftest.py +0 -0
  467. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/board-pipeline-basic.json +0 -0
  468. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  469. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  470. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  471. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  472. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/playwright/all_pass.json +0 -0
  473. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  474. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/playwright/mixed_fail.json +0 -0
  475. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  476. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  477. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/playwright/skip.json +0 -0
  478. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/playwright/truncated.json +0 -0
  479. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  480. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  481. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  482. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  483. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
  484. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  485. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  486. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  487. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  488. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_acceptance.py +0 -0
  489. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_acceptance_drivers.py +0 -0
  490. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent.py +0 -0
  491. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_api_error.py +0 -0
  492. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_app.py +0 -0
  493. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_branch_base.py +0 -0
  494. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_branch_capture.py +0 -0
  495. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_config_free_1712.py +0 -0
  496. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_deploy_units_endpoint.py +0 -0
  497. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_dirty_worktree.py +0 -0
  498. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  499. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_graceful_shutdown_3649.py +0 -0
  500. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_graph_refresh.py +0 -0
  501. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_graph_self_heal.py +0 -0
  502. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_health_h3.py +0 -0
  503. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_idle_restart.py +0 -0
  504. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_push_failure.py +0 -0
  505. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_repos_and_pull.py +0 -0
  506. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_restart_services_endpoint.py +0 -0
  507. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_skills_self_heal.py +0 -0
  508. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_startup_diagnostics.py +0 -0
  509. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_update.py +0 -0
  510. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_update_bluegreen.py +0 -0
  511. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_usage_limit.py +0 -0
  512. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_agent_zero_commit.py +0 -0
  513. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_ambient_home_isolation.py +0 -0
  514. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_app_drive.py +0 -0
  515. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_approve_capability_reroute_3241.py +0 -0
  516. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_approve_dependency_busy_2804.py +0 -0
  517. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_approve_reject_plan.py +0 -0
  518. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_approve_usage_gate.py +0 -0
  519. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_approved_work_2532.py +0 -0
  520. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_approved_work_2996.py +0 -0
  521. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_assignment_already_recorded_daemon.py +0 -0
  522. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_audit_log.py +0 -0
  523. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_audit_outcome.py +0 -0
  524. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_audit_query.py +0 -0
  525. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_auto_loop.py +0 -0
  526. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_auto_release_publish_2035.py +0 -0
  527. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_backend_selection.py +0 -0
  528. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_backup.py +0 -0
  529. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_base_checkout_restore.py +0 -0
  530. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_block_log.py +0 -0
  531. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_board_cap_762.py +0 -0
  532. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_board_fixture.py +0 -0
  533. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_board_nightly_status.py +0 -0
  534. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_board_read_path.py +0 -0
  535. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_board_schema.py +0 -0
  536. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_board_service.py +0 -0
  537. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_board_state.py +0 -0
  538. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_board_wire.py +0 -0
  539. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_brain.py +0 -0
  540. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_branch_model.py +0 -0
  541. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_briefing_lessons.py +0 -0
  542. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_bug_intake.py +0 -0
  543. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_bugbash.py +0 -0
  544. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_build_worker_image_env_update.py +0 -0
  545. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cargo_cache.py +0 -0
  546. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_check_gh_argv_containment.py +0 -0
  547. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_ci_acceptance_gate_1950.py +0 -0
  548. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_ci_fix.py +0 -0
  549. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_ci_github.py +0 -0
  550. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_ci_gitlab.py +0 -0
  551. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_ci_parity_2091.py +0 -0
  552. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_ci_store.py +0 -0
  553. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_claim.py +0 -0
  554. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_claude_md_budget.py +0 -0
  555. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_claude_setup_token.py +0 -0
  556. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_acceptance.py +0 -0
  557. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_assign.py +0 -0
  558. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  559. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_assign_interactive_remote.py +0 -0
  560. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_assign_provider.py +0 -0
  561. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  562. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_audit.py +0 -0
  563. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_chat_continue.py +0 -0
  564. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_ci.py +0 -0
  565. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_codegen.py +0 -0
  566. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_decide.py +0 -0
  567. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_diagnose_capability_rules.py +0 -0
  568. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_diagnose_config_provenance.py +0 -0
  569. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_diagnose_forge_availability.py +0 -0
  570. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_diagnose_graph.py +0 -0
  571. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_diagnose_self.py +0 -0
  572. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_diagnose_test_coverage.py +0 -0
  573. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_doctor.py +0 -0
  574. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_doctor_config_free_1801.py +0 -0
  575. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  576. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  577. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_drive.py +0 -0
  578. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_drive_queue.py +0 -0
  579. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_escalate.py +0 -0
  580. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_fix_headless_review.py +0 -0
  581. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_gate_a.py +0 -0
  582. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_inject_board_less.py +0 -0
  583. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_install_drift.py +0 -0
  584. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_install_skills.py +0 -0
  585. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_issue_close_wrong_repo.py +0 -0
  586. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_issue_comment.py +0 -0
  587. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_issue_create_label.py +0 -0
  588. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_issue_reopen.py +0 -0
  589. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_issue_view_list.py +0 -0
  590. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_issues.py +0 -0
  591. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_merge.py +0 -0
  592. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_milestone_assign.py +0 -0
  593. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_milestone_capture.py +0 -0
  594. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_milestone_chat_add_child.py +0 -0
  595. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_milestone_dispatch.py +0 -0
  596. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_milestone_gate_b.py +0 -0
  597. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_milestone_gate_c.py +0 -0
  598. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_milestone_order.py +0 -0
  599. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  600. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_milestone_ship.py +0 -0
  601. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_network.py +0 -0
  602. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_new_issue_chat.py +0 -0
  603. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_plans.py +0 -0
  604. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_portal.py +0 -0
  605. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_pr.py +0 -0
  606. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_pull_artifact.py +0 -0
  607. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_queue.py +0 -0
  608. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_reattach_sessions.py +0 -0
  609. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_refine_board.py +0 -0
  610. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_release_preflight.py +0 -0
  611. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_release_propagate.py +0 -0
  612. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_release_window.py +0 -0
  613. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_repo_2220.py +0 -0
  614. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  615. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_scorecard.py +0 -0
  616. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_serve_store_backend_3084.py +0 -0
  617. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_set_review_findings.py +0 -0
  618. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_smoke_nightly.py +0 -0
  619. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_smoke_nightly_sweep.py +0 -0
  620. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_status_advisory_terminal.py +0 -0
  621. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_status_contested_tag.py +0 -0
  622. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_status_invariant_alarms.py +0 -0
  623. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_status_machine_fault.py +0 -0
  624. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_status_merge_queue.py +0 -0
  625. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_status_nightly.py +0 -0
  626. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_status_provider.py +0 -0
  627. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_status_retried_3340.py +0 -0
  628. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_status_review_finalizing.py +0 -0
  629. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_status_supervisor_3366.py +0 -0
  630. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_status_test_failed_tag.py +0 -0
  631. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_status_usage_limit.py +0 -0
  632. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_sync_comments_873.py +0 -0
  633. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_test_plan.py +0 -0
  634. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_track.py +0 -0
  635. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_tui_update.py +0 -0
  636. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cli_wait.py +0 -0
  637. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_client.py +0 -0
  638. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_client_base_install.py +0 -0
  639. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_client_config_cache_atomic_3052.py +0 -0
  640. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_client_resource_migration_1946.py +0 -0
  641. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_commands_common.py +0 -0
  642. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_comment_cruft.py +0 -0
  643. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_comments.py +0 -0
  644. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_completion_summary.py +0 -0
  645. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_config.py +0 -0
  646. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_config_acceptance.py +0 -0
  647. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_config_audit.py +0 -0
  648. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_config_drift_check.py +0 -0
  649. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_config_effective.py +0 -0
  650. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_config_prereview_gate.py +0 -0
  651. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_config_pricing.py +0 -0
  652. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  653. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_config_usage_gate.py +0 -0
  654. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_confirm_test.py +0 -0
  655. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_conflict_fix.py +0 -0
  656. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_conflict_fix_semantic.py +0 -0
  657. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  658. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_coord_test.py +0 -0
  659. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  660. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_coord_test_runner_baseline.py +0 -0
  661. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_coord_test_runner_populated_home.py +0 -0
  662. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_coord_test_runner_routing.py +0 -0
  663. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_coord_test_runner_toolchain.py +0 -0
  664. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_coord_uat.py +0 -0
  665. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_coord_web_sse_restart_live.py +0 -0
  666. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_coordinator_machine.py +0 -0
  667. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_cross_platform_imports.py +0 -0
  668. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dao.py +0 -0
  669. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dashboard.py +0 -0
  670. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dashboard_api.py +0 -0
  671. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dashboard_fixture.py +0 -0
  672. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dashboard_reports.py +0 -0
  673. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dashboard_server.py +0 -0
  674. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dashboard_terminal.py +0 -0
  675. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dashboard_terminal_live.py +0 -0
  676. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_db.py +0 -0
  677. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dead_end.py +0 -0
  678. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_decomposition_chat.py +0 -0
  679. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_deploy_coord_db_backup.py +0 -0
  680. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_deploy_coord_web_dist.py +0 -0
  681. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_deploy_coord_web_rollback.py +0 -0
  682. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_deploy_db_backup_unit.py +0 -0
  683. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_deploy_drive_queue_unit.py +0 -0
  684. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_deploy_failure_notify_unit.py +0 -0
  685. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_deploy_manifest.py +0 -0
  686. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_deploy_notify_unit.py +0 -0
  687. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_deploy_units_lane.py +0 -0
  688. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_deploy_web_unit.py +0 -0
  689. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_deprecation_telemetry.py +0 -0
  690. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_deps.py +0 -0
  691. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_diagnose.py +0 -0
  692. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dirlink.py +0 -0
  693. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dispatch.py +0 -0
  694. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dispatch_liveness.py +0 -0
  695. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dispatch_target_validation.py +0 -0
  696. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dispatch_workers.py +0 -0
  697. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dist_name.py +0 -0
  698. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_done_housekeeping.py +0 -0
  699. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dr_azure_scripts.py +0 -0
  700. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dr_promote.py +0 -0
  701. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_dr_verify.py +0 -0
  702. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_drive.py +0 -0
  703. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_drive_machine_fault.py +0 -0
  704. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_drive_queue.py +0 -0
  705. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_drive_queue_blocked_rendering.py +0 -0
  706. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_drive_queue_launch_argv.py +0 -0
  707. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_drive_queue_max_parallel_config.py +0 -0
  708. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  709. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_drive_queue_roll_pending.py +0 -0
  710. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  711. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_drive_sessions_snapshot.py +0 -0
  712. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_drive_state.py +0 -0
  713. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_drive_tmux.py +0 -0
  714. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_epic_up_capability_detection.py +0 -0
  715. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  716. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_epic_up_image_provenance.py +0 -0
  717. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_errors.py +0 -0
  718. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_events.py +0 -0
  719. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_failure_class.py +0 -0
  720. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_failure_classifier.py +0 -0
  721. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_filelock.py +0 -0
  722. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  723. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_fix_escalation_classifier.py +0 -0
  724. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_fix_of_force_override.py +0 -0
  725. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_fleet_config_health.py +0 -0
  726. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_fleet_health_probes.py +0 -0
  727. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_fleet_health_snapshot.py +0 -0
  728. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_fleet_watchdog.py +0 -0
  729. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_forge_availability.py +0 -0
  730. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_freshness.py +0 -0
  731. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_gate_a.py +0 -0
  732. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_gate_b.py +0 -0
  733. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_gate_snapshot_staleness.py +0 -0
  734. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_gates.py +0 -0
  735. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  736. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_gen_mock_index.py +0 -0
  737. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_generated_rust_fixture.py +0 -0
  738. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_generated_rust_requests.py +0 -0
  739. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_generated_types_fixture.py +0 -0
  740. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_github_ops.py +0 -0
  741. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_github_throttle.py +0 -0
  742. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_goal.py +0 -0
  743. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_graph_health.py +0 -0
  744. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_graph_selfheal_absent_2237.py +0 -0
  745. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_gtk_native_driver.py +0 -0
  746. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_handoff.py +0 -0
  747. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_checks.py +0 -0
  748. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_cli.py +0 -0
  749. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_cli_graph.py +0 -0
  750. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_config.py +0 -0
  751. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_context.py +0 -0
  752. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_coord_tui_ci_pin.py +0 -0
  753. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_coord_web_ci_pin.py +0 -0
  754. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_deploy_lane_facts.py +0 -0
  755. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_fix.py +0 -0
  756. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_incident_regression.py +0 -0
  757. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_issues_sync_staleness.py +0 -0
  758. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_pr_churn.py +0 -0
  759. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_pypi.py +0 -0
  760. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_registry.py +0 -0
  761. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_release_cordon_probe.py +0 -0
  762. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_timer_active.py +0 -0
  763. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_toolchain.py +0 -0
  764. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_unit_drift.py +0 -0
  765. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_unit_enablement.py +0 -0
  766. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_health_wedged_drive_queue.py +0 -0
  767. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_hooks.py +0 -0
  768. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_housekeeping.py +0 -0
  769. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_human_attended_437.py +0 -0
  770. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_init.py +0 -0
  771. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_install_agent_capabilities_3515.py +0 -0
  772. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_install_agent_venv_2911.py +0 -0
  773. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_install_agent_wsl_bridge_3515.py +0 -0
  774. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_integration.py +0 -0
  775. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_interactive.py +0 -0
  776. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_interactive_briefing_echo.py +0 -0
  777. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_interactive_pane_log_2541.py +0 -0
  778. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_interactive_prefill_state.py +0 -0
  779. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_interactive_session_relaunch.py +0 -0
  780. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_interactive_test_verdict_backstop.py +0 -0
  781. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_interactive_token_attribution.py +0 -0
  782. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_interactive_worktree.py +0 -0
  783. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_invariant_alarms.py +0 -0
  784. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_issue_store_seam.py +0 -0
  785. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_issues_sync_status.py +0 -0
  786. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_key_spec.py +0 -0
  787. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_liveness_auditor.py +0 -0
  788. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_liveness_notify.py +0 -0
  789. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_lock_contention_ratchet.py +0 -0
  790. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_mac_native_driver.py +0 -0
  791. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_machine_fault.py +0 -0
  792. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_machine_metrics.py +0 -0
  793. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_machine_onboard.py +0 -0
  794. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_machine_pause.py +0 -0
  795. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_machine_stats.py +0 -0
  796. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_merge_queue.py +0 -0
  797. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_merge_verification.py +0 -0
  798. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_merge_verify.py +0 -0
  799. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_milestone_chat.py +0 -0
  800. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_milestone_dispatch.py +0 -0
  801. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_milestone_gate.py +0 -0
  802. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_milestone_order.py +0 -0
  803. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_milestone_seam.py +0 -0
  804. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_mock_author.py +0 -0
  805. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_model_tiering.py +0 -0
  806. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_models.py +0 -0
  807. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_models_config_labels.py +0 -0
  808. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_models_pinned_1650.py +0 -0
  809. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_native_fs_wait.py +0 -0
  810. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_native_pixels.py +0 -0
  811. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_needs_attention.py +0 -0
  812. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_network.py +0 -0
  813. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_new_issue_chat.py +0 -0
  814. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_next_release_tag.py +0 -0
  815. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_nightly_runner.py +0 -0
  816. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_nightly_smoke.py +0 -0
  817. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_nightly_status.py +0 -0
  818. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_nightly_store.py +0 -0
  819. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_no_eligible_host_3600.py +0 -0
  820. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_node_shim.py +0 -0
  821. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_notifier_baseline.py +0 -0
  822. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_notifier_cli.py +0 -0
  823. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_notifier_collect.py +0 -0
  824. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_notifier_config.py +0 -0
  825. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_notifier_drive_seam.py +0 -0
  826. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_notifier_isolation.py +0 -0
  827. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_notifier_predicate.py +0 -0
  828. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_notifier_quiet_hours.py +0 -0
  829. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_notifier_service.py +0 -0
  830. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_notify.py +0 -0
  831. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_notify_drain.py +0 -0
  832. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_openapi.py +0 -0
  833. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_operational_defaults.py +0 -0
  834. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_overlap_fence.py +0 -0
  835. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_overlap_predict.py +0 -0
  836. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_packaged_deploy_units.py +0 -0
  837. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_parentage.py +0 -0
  838. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_paste_landed.py +0 -0
  839. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  840. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_pipeline.py +0 -0
  841. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_plan_followup_approve_plan_command.py +0 -0
  842. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_plan_followup_pr_command.py +0 -0
  843. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_plan_followup_review_command.py +0 -0
  844. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_plan_only.py +0 -0
  845. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_plan_parser.py +0 -0
  846. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_platform_paths.py +0 -0
  847. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_portal_bridge.py +0 -0
  848. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_portal_config.py +0 -0
  849. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_portal_store.py +0 -0
  850. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_portal_sync.py +0 -0
  851. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_pr_body_lint.py +0 -0
  852. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_prereqs.py +0 -0
  853. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_prereview_gate.py +0 -0
  854. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_production_db_guard.py +0 -0
  855. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_progress.py +0 -0
  856. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_provider_seam.py +0 -0
  857. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_providers.py +0 -0
  858. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_providers_config_labels.py +0 -0
  859. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_providers_pty.py +0 -0
  860. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_provision_core.py +0 -0
  861. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_provision_machine.py +0 -0
  862. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_py_rust_mirror_inventory.py +0 -0
  863. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_quiet_hours.py +0 -0
  864. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_quiet_hours_store_2146.py +0 -0
  865. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_reap_merged_sessions.py +0 -0
  866. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_reap_stale_interactive_tick.py +0 -0
  867. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_reconcile.py +0 -0
  868. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_reconcile_branch.py +0 -0
  869. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_reconcile_completions.py +0 -0
  870. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  871. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_reconcile_merges.py +0 -0
  872. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_reconcile_no_agent_record.py +0 -0
  873. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_reconcile_tick.py +0 -0
  874. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_reconcile_usage_limit_done.py +0 -0
  875. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_refine_chat.py +0 -0
  876. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_release_cordon_2101.py +0 -0
  877. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  878. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_release_cordon_deadlock_2240.py +0 -0
  879. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  880. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_release_cordon_stuck_2490.py +0 -0
  881. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_release_gate.py +0 -0
  882. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_release_propagate.py +0 -0
  883. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_release_propagate_threshold.py +0 -0
  884. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_release_roll_between_legs_2854.py +0 -0
  885. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_release_roll_window_handoff.py +0 -0
  886. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_release_unified_1242.py +0 -0
  887. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_release_verify.py +0 -0
  888. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_release_window.py +0 -0
  889. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_remote_auto_prune.py +0 -0
  890. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_remote_interactive_reaper.py +0 -0
  891. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_repo_add.py +0 -0
  892. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_repo_dormancy.py +0 -0
  893. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_repo_edit_2220.py +0 -0
  894. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_repo_graph_fleet_2237.py +0 -0
  895. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_repo_max_parallel_3423.py +0 -0
  896. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_repo_onboard_2220.py +0 -0
  897. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_report_public_export.py +0 -0
  898. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_report_result_push.py +0 -0
  899. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_reports.py +0 -0
  900. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_restart_cmd.py +0 -0
  901. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_retry.py +0 -0
  902. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_retry_advisory_1606.py +0 -0
  903. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_retry_escalation_classify_3360.py +0 -0
  904. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_retry_type_1636.py +0 -0
  905. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_revalidate.py +0 -0
  906. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_review.py +0 -0
  907. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_review_end_review_without_verdict.py +0 -0
  908. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_review_parse_failure_diagnostic.py +0 -0
  909. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_review_reaffirm.py +0 -0
  910. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_review_state.py +0 -0
  911. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_review_verdict_backstop.py +0 -0
  912. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_review_verdict_override_audit.py +0 -0
  913. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_review_verdict_relay.py +0 -0
  914. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_review_zero_commits.py +0 -0
  915. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_scoped_review_wiring.py +0 -0
  916. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_scorecard.py +0 -0
  917. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_self_health.py +0 -0
  918. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_serve.py +0 -0
  919. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_serve_app.py +0 -0
  920. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_serve_app_board_trim.py +0 -0
  921. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_serve_rest_routes.py +0 -0
  922. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_session.py +0 -0
  923. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_slice_issue_attribution.py +0 -0
  924. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_smoke.py +0 -0
  925. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  926. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_smoke_live_checkout_restore.py +0 -0
  927. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_smoke_plain_runner_3673.py +0 -0
  928. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_smoke_workflow.py +0 -0
  929. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_spend_ceiling.py +0 -0
  930. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_spend_ceiling_coordinator.py +0 -0
  931. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_split.py +0 -0
  932. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_split_work.py +0 -0
  933. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_sql_dialect.py +0 -0
  934. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_sqlite_connect_ratchet.py +0 -0
  935. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_stage_projection.py +0 -0
  936. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_stale_busy_reviewer_697.py +0 -0
  937. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_stalled_pipeline.py +0 -0
  938. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_state.py +0 -0
  939. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_state_review_findings_daemon.py +0 -0
  940. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_status_fleet_footer.py +0 -0
  941. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_stop_1567.py +0 -0
  942. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_store_contract.py +0 -0
  943. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_store_migrate.py +0 -0
  944. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_stuck.py +0 -0
  945. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  946. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_terminal_command.py +0 -0
  947. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_test_author.py +0 -0
  948. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_test_chat.py +0 -0
  949. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_test_orchestrator.py +0 -0
  950. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_test_report.py +0 -0
  951. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_test_verdict_parsing.py +0 -0
  952. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_test_verdict_transcript_floor.py +0 -0
  953. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_text_io_encoding_audit.py +0 -0
  954. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_thin_client_board_audit.py +0 -0
  955. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_thin_client_config_load_1080.py +0 -0
  956. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_thin_client_daemon_routing_906.py +0 -0
  957. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_throwaway_vm.py +0 -0
  958. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_tmux_host.py +0 -0
  959. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_tmux_session.py +0 -0
  960. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_transcript_floor.py +0 -0
  961. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_tui_pty_driver.py +0 -0
  962. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_uat_checks.py +0 -0
  963. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_upstream_gaps.py +0 -0
  964. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_usage.py +0 -0
  965. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_usage_limits.py +0 -0
  966. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_usage_rollup.py +0 -0
  967. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_venv_live_install_2121.py +0 -0
  968. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_version_single_source.py +0 -0
  969. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_watch.py +0 -0
  970. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_win_native_bridge.py +0 -0
  971. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_win_native_driver.py +0 -0
  972. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  973. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_worker_env_venv_isolation.py +0 -0
  974. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_worker_events.py +0 -0
  975. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_worker_image_pin_sync.py +0 -0
  976. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_worker_safety.py +0 -0
  977. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_worker_test_scoping.py +0 -0
  978. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_worktree.py +0 -0
  979. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  980. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/tests/test_write_parity.py +0 -0
  981. {code_coordinator-0.5.654 → code_coordinator-0.5.656}/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.654
3
+ Version: 0.5.656
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.654
3
+ Version: 0.5.656
4
4
  Summary: Coordinate Claude Code workers across multiple machines and repos.
5
5
  Author-email: John Donaghy <johnfdonaghy@gmail.com>
6
6
  License-Expression: LicenseRef-FSL-1.1-MIT
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.654",
2
+ "tag": "0.5.656",
3
3
  "distance": 0,
4
- "node": "gfb5fe0770972418d5fdcaf022adb307f60f81c3c",
4
+ "node": "g72b15fe10d71e986356a7c392a6093c1783e3546",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-10-19"
@@ -1165,11 +1165,11 @@ class AssignmentSpec:
1165
1165
  # agent reason (docs/EPHEMERAL_WORKERS.md).
1166
1166
  runtime_ceiling_s: float | None = None
1167
1167
  # #3673: "make the Test stage a plain runner by default" — when True AND
1168
- # ``type == "smoke"`` AND ``smoke_needs_judgement`` is False AND
1169
- # ``smoke_command`` is set, ``_spawn`` runs ``smoke_command`` directly as
1170
- # a subprocess (:func:`run_plain_runner_command`) instead of spawning a
1171
- # ``claude -p`` session, and derives the Test-stage verdict from its exit
1172
- # code alone — an LLM session is spawned only to SUMMARISE a failure
1168
+ # ``type == "smoke"`` AND ``smoke_command`` is set, ``_spawn`` runs
1169
+ # ``smoke_command`` directly as a subprocess
1170
+ # (:func:`run_plain_runner_command`) instead of spawning a ``claude -p``
1171
+ # session, and derives the Test-stage verdict from its exit code alone —
1172
+ # an LLM session is spawned only to SUMMARISE a failure
1173
1173
  # (:func:`AgentServer._spawn_plain_runner_failure_summary`), never to
1174
1174
  # decide pass/fail. Defaults to ``False`` — the same "unrecognized kwarg
1175
1175
  # 400s a config-free/older agent" discipline every other optional field
@@ -1178,6 +1178,10 @@ class AssignmentSpec:
1178
1178
  # actual default-on policy) opts a leg into this path; every other
1179
1179
  # assignment type, and any caller that predates this field, is
1180
1180
  # completely unaffected.
1181
+ #
1182
+ # #3736: ``smoke_needs_judgement`` is no longer a second gate on this —
1183
+ # see that field's own docstring below for why every plain-runner leg,
1184
+ # judgement-needing or not, now takes this subprocess path.
1181
1185
  plain_runner: bool = False
1182
1186
  # #3673: the resolved shell command a plain-runner leg executes
1183
1187
  # (``coord.smoke.resolve_smoke_command``'s result, carried structurally
@@ -1199,10 +1203,17 @@ class AssignmentSpec:
1199
1203
  smoke_timeout_s: float | None = None
1200
1204
  # #3673: True when this leg's required capabilities need genuine
1201
1205
  # judgement rather than a bare exit code (GUI/real-host drivers — see
1202
- # ``coord.smoke.smoke_needs_judgement``). ``_spawn`` falls through to
1203
- # the ordinary ``claude -p`` chat path whenever this is True, even if
1204
- # ``plain_runner`` is also True — the opt-out, not a second on/off
1205
- # switch of its own.
1206
+ # ``coord.smoke.smoke_needs_judgement``). Still carried on the wire and
1207
+ # still read by ``coord.smoke``'s own dispatch bookkeeping, but #3736
1208
+ # removed its use as a SECOND gate in ``_spawn``: it no longer routes a
1209
+ # leg to the ordinary ``claude -p`` chat path on its own.
1210
+ # ``SMOKE_SYSTEM_PROMPT`` (``coord.smoke``) has no actual GUI/real-host
1211
+ # judgement logic beyond polling the same command and reading its exit
1212
+ # code, so a judgement-needing leg gains nothing from that path that the
1213
+ # plain-runner subprocess doesn't already do — while losing the Bash
1214
+ # tool's 600s ceiling, which a long judgement-needing build (e.g. a cold
1215
+ # Windows cross-compile) can exceed and get backgrounded-and-abandoned
1216
+ # into a #2244 no-verdict park (see ``_spawn``'s own comment for detail).
1206
1217
  smoke_needs_judgement: bool = False
1207
1218
  # #3681: opts a ``type="work"`` leg into running as a Claude Code
1208
1219
  # *workflow* — multiple agents (implement → adversarial review → fix)
@@ -5886,6 +5897,27 @@ def _workflow_leg_system_prompt_suffix() -> str:
5886
5897
  hands a dispatched Review leg (see the ``elif spec.type == "review"``
5887
5898
  branch above) — never a second, hand-copied description of what a
5888
5899
  reviewer checks (#2096: one question, one answer).
5900
+
5901
+ #3730 adds three more guardrails on top of #3681's Workflow/Task
5902
+ un-denial, each a system-prompt-level mitigation rather than a new CLI
5903
+ flag (no documented, stable way to express any of the three as
5904
+ ``--settings``/``--allowedTools`` was found):
5905
+
5906
+ * isolation — the leg already runs inside its own dedicated worktree;
5907
+ a workflow subagent that additionally requests ``isolation:
5908
+ "worktree"``/``"remote"`` would nest a second worktree inside it,
5909
+ risking collision with the leg's own base-checkout guard and the
5910
+ graphify symlink. Subagents must stay in the leg's own working
5911
+ directory instead.
5912
+ * fail-fast — a Workflow invocation that still gets denied (e.g. the
5913
+ confirmation dialog auto-denies despite the --allowedTools grant)
5914
+ must not be retried; retrying was observed to thrash into the
5915
+ fleet's rapid-refill cost breaker. The leg must fall back to
5916
+ performing the assignment directly, as a normal non-workflow leg
5917
+ would.
5918
+ * size — a small, bounded workflow (few agents/phases) keeps cost and
5919
+ token usage predictable; ``WORK_AUTOCOMPACT_TOKENS`` is still the
5920
+ hard backstop regardless.
5889
5921
  """
5890
5922
  from coord.review import REVIEWER_SYSTEM_PROMPT # noqa: PLC0415
5891
5923
 
@@ -5906,7 +5938,24 @@ def _workflow_leg_system_prompt_suffix() -> str:
5906
5938
  "exactly the following as that review step's system prompt/lens "
5907
5939
  "(this is the identical text coord's own dispatched Review leg "
5908
5940
  "receives for this repo, byte for byte):\n\n"
5909
- "-----\n" + REVIEWER_SYSTEM_PROMPT + "\n-----\n"
5941
+ "-----\n" + REVIEWER_SYSTEM_PROMPT + "\n-----\n\n"
5942
+ "Three more rules for this workflow specifically (#3730):\n\n"
5943
+ "1. Isolation: this leg already runs inside its own dedicated git "
5944
+ "worktree. Do NOT give any agent in your workflow script "
5945
+ "`isolation: \"worktree\"` or `isolation: \"remote\"` — that would "
5946
+ "nest a second worktree inside the one you're already in, which is "
5947
+ "unsupported here and risks colliding with this leg's own "
5948
+ "base-checkout guard. Leave isolation unset (or `\"none\"`) so every "
5949
+ "subagent shares this leg's own working directory.\n"
5950
+ "2. Fail fast: if starting the workflow (or the Workflow tool call "
5951
+ "itself) is ever denied, do NOT retry it — retrying has thrashed "
5952
+ "other legs into the fleet's cost circuit breaker. Immediately fall "
5953
+ "back to completing this assignment directly yourself, exactly as a "
5954
+ "non-workflow leg would, and say so in your final message.\n"
5955
+ "3. Keep it small: use the fewest agents/phases that can do the "
5956
+ "job (e.g. implement, review, fix — not a long chain). This leg "
5957
+ "still has its own hard context/cost caps regardless, but a small "
5958
+ "workflow keeps you well inside them.\n"
5910
5959
  )
5911
5960
 
5912
5961
 
@@ -6272,6 +6321,16 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
6272
6321
  # the dedicated `elif spec.type == "smoke"` branch above, which
6273
6322
  # deliberately withholds it instead.
6274
6323
  allowed_tools = "Read,Edit,Write,Bash,Monitor"
6324
+ # #3730: being absent from --disallowedTools (worker_disallowed_tools
6325
+ # above) is not sufficient for Workflow/Task — the Workflow tool's
6326
+ # own confirmation dialog still fires per invocation, and a headless
6327
+ # `-p` leg has no TTY to answer it, so without an explicit
6328
+ # --allowedTools grant it is auto-denied exactly like any other
6329
+ # unconfirmed permission prompt. Granting it here is the same
6330
+ # pre-approval mechanism `Bash` already relies on in this list to
6331
+ # skip its own per-command confirmations.
6332
+ if spec.workflow:
6333
+ allowed_tools += ",Workflow,Task"
6275
6334
  # #3672: force earlier auto-compaction for work-shaped legs — see
6276
6335
  # `WORK_AUTOCOMPACT_TOKENS`'s docstring. These are exactly the legs
6277
6336
  # the cost analysis found running 200-450 turns with zero
@@ -6414,8 +6473,10 @@ def _user_message_line(text: str) -> bytes:
6414
6473
  # session) and derives the verdict from the exit code alone. An LLM session
6415
6474
  # is spawned only to SUMMARISE a failure for a human-readable report — never
6416
6475
  # to decide pass/fail — via `AgentServer._spawn_plain_runner_failure_summary`.
6417
- # `coord.smoke.smoke_needs_judgement` is the opt-out for GUI/real-host-driver
6418
- # specs that genuinely need more than an exit code.
6476
+ # #3736: every `plain_runner` leg takes this path, including one
6477
+ # `coord.smoke.smoke_needs_judgement` flags as GUI/real-host-driver — see
6478
+ # `AgentServer._spawn`'s routing comment for why that stopped being a
6479
+ # second gate.
6419
6480
 
6420
6481
  #: How much of a plain-runner command's combined stdout+stderr survives into
6421
6482
  #: the leg's log (and, on failure, the summary request) — generous enough to
@@ -10391,6 +10452,25 @@ class AgentServer:
10391
10452
  _log.exception(
10392
10453
  "plain-runner smoke %s: execute_plain_runner_smoke raised", assignment.id,
10393
10454
  )
10455
+ # #3736: write the SAME `SMOKE:` marker vocabulary the normal
10456
+ # path writes, even on this crash branch — `_fail` alone sets
10457
+ # the assignment FAILED but writes nothing to the log, which
10458
+ # left `coord.progress.parse_smoke_verdict_from_log` (read via
10459
+ # `coord.notify._smoke_worker_verdict`) with no marker to find
10460
+ # and the leg parked as a #2244 no-verdict rather than recorded
10461
+ # as a failure a human can act on. `_SMOKE_VERDICT_RE` is a
10462
+ # line-anchored `^SMOKE:\s*(pass|fail|baseline-red)\b\s*(.*)$`
10463
+ # match, so the free-text reason after `fail` here is read back
10464
+ # as the verdict's `reason` exactly like a `claude -p` worker's
10465
+ # own `SMOKE: fail <reason>` line.
10466
+ try:
10467
+ with open(assignment.log_path, "a", encoding="utf-8") as fh:
10468
+ fh.write(f"\nSMOKE: fail plain-runner smoke crashed: {exc}\n")
10469
+ except OSError:
10470
+ _log.exception(
10471
+ "plain-runner smoke %s: failed to write crash marker to log %s",
10472
+ assignment.id, assignment.log_path,
10473
+ )
10394
10474
  self._fail(assignment, f"plain-runner smoke crashed: {exc}")
10395
10475
  return
10396
10476
 
@@ -10496,16 +10576,35 @@ class AgentServer:
10496
10576
  # `_spawn` is ever reached.
10497
10577
  spec = assignment.spec
10498
10578
 
10499
- # #3673: the plain-runner path — a smoke leg this policy applies to
10500
- # never spawns `claude -p` for its verdict at all, so it must be
10501
- # checked before any provider resolution/argv-building below, which
10502
- # exists purely to build THAT spawn.
10503
- if (
10504
- spec.type == "smoke"
10505
- and spec.plain_runner
10506
- and not spec.smoke_needs_judgement
10507
- and spec.smoke_command
10508
- ):
10579
+ # #3673/#3736: the plain-runner path — a smoke leg this policy
10580
+ # applies to never spawns `claude -p` for its verdict at all, so it
10581
+ # must be checked before any provider resolution/argv-building below,
10582
+ # which exists purely to build THAT spawn.
10583
+ #
10584
+ # #3736: `smoke_needs_judgement` no longer excludes a leg from this
10585
+ # path. It used to (the `and not spec.smoke_needs_judgement` clause
10586
+ # that lived here routed a "judgement-needing" leg — in practice,
10587
+ # every default-config `windows` capability leg, e.g. quadraui's
10588
+ # win-msvc cross-compile smoke — through the ordinary `claude -p`
10589
+ # chat session instead). That session runs `SMOKE_SYSTEM_PROMPT`
10590
+ # (coord/smoke.py), which has no visual/interactive judgement logic
10591
+ # of its own: it polls the SAME command this subprocess path runs and
10592
+ # derives the SAME pass/fail from its exit code, just inside a
10593
+ # `claude -p` turn bounded by the Bash tool's 600s ceiling — long
10594
+ # enough for a cold cross-build that a worker then backgrounds and
10595
+ # abandons when it ends its (one-shot, non-resumable) turn to "wait
10596
+ # for a notification" that never arrives. The result was a #2244
10597
+ # no-verdict park with no `SMOKE:` marker ever written (quadraui#1616)
10598
+ # — exactly the failure mode `run_plain_runner_command`'s own
10599
+ # `subprocess.run(..., timeout=...)` call cannot have, since it never
10600
+ # runs inside a Claude Code tool call at all. This also closes the
10601
+ # #2085 split-brain with `coord.notify._is_plain_runner_leg`, which
10602
+ # already classified every leg here as plain-runner (`plain_runner`
10603
+ # rides the wire unconditionally True, per `coord.smoke.
10604
+ # _walk_candidates_and_dispatch`'s docstring) — that classification
10605
+ # now matches how the leg actually executes, for every leg, with no
10606
+ # change needed on the `coord.notify` side.
10607
+ if spec.type == "smoke" and spec.plain_runner and spec.smoke_command:
10509
10608
  self._run_plain_runner_smoke(assignment, repo_path)
10510
10609
  return
10511
10610
 
@@ -263,6 +263,14 @@ class ClaudeProvider(Provider):
263
263
  # backgrounded long-running command. #2301: this grant is for
264
264
  # work-shaped legs only — smoke has its own branch above.
265
265
  _at = "Read,Edit,Write,Bash,Monitor"
266
+ # #3730: keep in sync with default_worker_command's identical
267
+ # `if spec.workflow:` branch — being absent from
268
+ # --disallowedTools is not enough to actually use Workflow/
269
+ # Task; its per-invocation confirmation dialog auto-denies
270
+ # with no TTY unless pre-approved via --allowedTools, the
271
+ # same mechanism `Bash` already relies on above.
272
+ if spec.workflow:
273
+ _at += ",Workflow,Task"
266
274
  # #3672: keep in sync with default_worker_command's identical
267
275
  # branch — force earlier auto-compaction for work-shaped legs.
268
276
  # #3697: fix/conflict-fix legs carry the review findings as
@@ -2775,8 +2775,13 @@ def _walk_candidates_and_dispatch(
2775
2775
  session) instead of the briefing-driven chat the SMOKE_SYSTEM_PROMPT
2776
2776
  above describes. `plain_runner` is unconditionally `True` on every
2777
2777
  dispatch this function makes — #3673's "make the Test stage a plain
2778
- runner by default" policy — with `smoke_needs_judgement` as the one
2779
- opt-out (GUI/real-host-driver specs, :func:`smoke_needs_judgement`); the
2778
+ runner by default" policy. `smoke_needs_judgement` still rides along
2779
+ (GUI/real-host-driver specs, :func:`smoke_needs_judgement`) and is still
2780
+ read by this module's own dispatch bookkeeping, but #3736 removed its
2781
+ use in `_spawn` as a second gate: every `plain_runner` leg takes the
2782
+ subprocess path regardless, since `SMOKE_SYSTEM_PROMPT`'s chat path has
2783
+ no judgement logic of its own beyond polling the same command's exit
2784
+ code, and loses the Bash tool's 600s ceiling for nothing in return. The
2780
2785
  briefing text is sent either way so a plain-runner-ineligible agent (one
2781
2786
  whose `default_worker_command` predates #3673, or any OTHER assignment
2782
2787
  type reusing this wire shape) still gets a fully-formed `claude -p`
@@ -29,6 +29,7 @@ from coord.agent import (
29
29
  _workflow_leg_system_prompt_suffix,
30
30
  _PTY_RESULT_LINE_MARKER,
31
31
  _RESULT_LINE_MARKER,
32
+ default_worker_command,
32
33
  format_host_sleep_reason,
33
34
  format_runtime_ceiling_reason,
34
35
  is_host_sleep_reason,
@@ -561,6 +562,29 @@ def test_disallowed_tools_un_disallows_workflow_and_task_only_for_opted_in_leg()
561
562
  assert pattern in not_opted_in
562
563
 
563
564
 
565
+ # ── workflow opt-in: --allowedTools (#3730) ──────────────────────────────────
566
+
567
+
568
+ def test_allowed_tools_grants_workflow_and_task_only_for_opted_in_leg() -> None:
569
+ """#3730 item 2: merely absent from --disallowedTools is not enough to
570
+ actually use Workflow — its own per-invocation confirmation dialog
571
+ auto-denies with no TTY unless pre-approved via --allowedTools (the same
572
+ mechanism `Bash` already relies on in this list). A workflow leg's argv
573
+ must explicitly grant `Workflow`/`Task`; a non-opted-in leg must not."""
574
+ opted_in = default_worker_command(_make_spec(workflow=True))
575
+ not_opted_in = default_worker_command(_make_spec(workflow=False))
576
+
577
+ opted_in_allowed = opted_in[opted_in.index("--allowedTools") + 1].split(",")
578
+ not_opted_in_allowed = not_opted_in[
579
+ not_opted_in.index("--allowedTools") + 1
580
+ ].split(",")
581
+
582
+ assert "Workflow" in opted_in_allowed
583
+ assert "Task" in opted_in_allowed
584
+ assert "Workflow" not in not_opted_in_allowed
585
+ assert "Task" not in not_opted_in_allowed
586
+
587
+
564
588
  # ── in-workflow review system prompt (#3681 item 5) ──────────────────────────
565
589
 
566
590
  def test_workflow_system_prompt_suffix_embeds_the_real_reviewer_prompt_verbatim() -> None:
@@ -579,6 +603,32 @@ def test_workflow_system_prompt_suffix_embeds_the_real_reviewer_prompt_verbatim(
579
603
  assert suffix[start : start + len(REVIEWER_SYSTEM_PROMPT)] == REVIEWER_SYSTEM_PROMPT
580
604
 
581
605
 
606
+ def test_workflow_system_prompt_suffix_tells_worker_not_to_nest_worktree_isolation() -> None:
607
+ """#3730 item 3: the leg already runs inside its own dedicated worktree;
608
+ a workflow subagent must not additionally request `isolation:
609
+ "worktree"`/`"remote"`, which would nest a second worktree inside it."""
610
+ suffix = _workflow_leg_system_prompt_suffix()
611
+ assert 'isolation: "worktree"' in suffix
612
+ assert 'isolation: "remote"' in suffix
613
+
614
+
615
+ def test_workflow_system_prompt_suffix_tells_worker_to_fail_fast_on_denial() -> None:
616
+ """#3730 item 4: a denied Workflow invocation must not be retried — a
617
+ real leg thrashed into the fleet's rapid-refill cost breaker doing
618
+ exactly that — the worker must fall back to a direct, non-workflow
619
+ completion of the assignment instead."""
620
+ suffix = _workflow_leg_system_prompt_suffix()
621
+ assert "do NOT retry it" in suffix
622
+ assert "fall back to completing this assignment directly" in suffix
623
+
624
+
625
+ def test_workflow_system_prompt_suffix_tells_worker_to_keep_workflow_small() -> None:
626
+ """#3730 item 5: guide the worker toward a small/bounded workflow rather
627
+ than shipping an unverified workflow-size settings flag."""
628
+ suffix = _workflow_leg_system_prompt_suffix()
629
+ assert "Keep it small" in suffix
630
+
631
+
582
632
  # ── _log_has_output ──────────────────────────────────────────────────────────
583
633
 
584
634
  def test_log_has_output_false_for_header_only(tmp_path: Path) -> None:
@@ -10,8 +10,9 @@ no real `claude -p`. The end-to-end tests drive the real
10
10
  :class:`coord.agent.AgentServer` (reusing the ``_server``/``_spec``/
11
11
  ``_init_repo`` fixtures from :mod:`tests.test_agent`) through
12
12
  ``server.assign(...)`` and confirm no `claude` binary is ever invoked for a
13
- plain-runner leg's verdict, while a judgement-needing leg still gets the
14
- ordinary `claude -p` path unchanged.
13
+ plain-runner leg's verdict — including a judgement-needing leg (#3736:
14
+ `smoke_needs_judgement` no longer routes a `plain_runner` leg to the
15
+ ordinary `claude -p` chat path; see `coord.agent.AgentServer._spawn`).
15
16
  """
16
17
 
17
18
  from __future__ import annotations
@@ -20,8 +21,10 @@ import subprocess
20
21
  import sys
21
22
  from pathlib import Path
22
23
 
24
+ import coord.agent as agent_mod
23
25
  from coord.agent import (
24
26
  DONE,
27
+ FAILED,
25
28
  AssignmentSpec,
26
29
  PlainRunnerVerdict,
27
30
  execute_plain_runner_smoke,
@@ -290,12 +293,15 @@ def test_agent_plain_runner_leg_failure_spawns_a_claude_summariser(
290
293
  server.shutdown()
291
294
 
292
295
 
293
- def test_agent_smoke_needing_judgement_falls_through_to_the_claude_path(
296
+ def test_agent_smoke_needing_judgement_also_takes_the_plain_runner_path(
294
297
  tmp_path: Path,
295
298
  ) -> None:
296
- """``smoke_needs_judgement=True`` is the opt-out — even with
297
- ``plain_runner=True``, this leg must get the ordinary `claude -p`
298
- chat session, not the plain-runner subprocess path (#3673)."""
299
+ """#3736: ``smoke_needs_judgement=True`` no longer opts a ``plain_runner``
300
+ leg out of the subprocess path — the ordinary `claude -p` chat session
301
+ (`SMOKE_SYSTEM_PROMPT`) has no judgement logic beyond polling the same
302
+ command's exit code, and is bounded by the Bash tool's 600s ceiling that
303
+ this fix exists to route around. The leg must get a `SMOKE:` verdict
304
+ from the subprocess, with no `claude` binary ever invoked."""
299
305
  repo = _init_repo(tmp_path / "repo")
300
306
  server = _server(
301
307
  tmp_path, repo_path=repo,
@@ -308,7 +314,75 @@ def test_agent_smoke_needing_judgement_falls_through_to_the_claude_path(
308
314
  a = server.assign(spec)
309
315
  final = server.wait_for(a.id, timeout=10)
310
316
 
317
+ assert final.status == DONE
318
+ assert final.exit_code == 0
311
319
  log = Path(final.log_path).read_text()
312
- assert "claude-path-ran" in log
313
- assert "plain-runner (#3673)" not in log
320
+ assert "SMOKE: pass" in log
321
+ assert "plain-runner (#3673)" in log
322
+ assert "claude-path-ran" not in log
323
+ server.shutdown()
324
+
325
+
326
+ def test_agent_plain_runner_smoke_exceeding_the_bash_tool_ceiling_still_verdicts(
327
+ tmp_path: Path,
328
+ ) -> None:
329
+ """#3736: a smoke command that would run well past the Bash tool's 600s
330
+ ceiling still yields a recorded ``SMOKE:`` verdict — because it never
331
+ runs inside a `claude -p` turn that could background-and-abandon it. A
332
+ short ``smoke_timeout_s`` stands in for "exceeds the ceiling" so the
333
+ test itself stays fast; what matters is that the command runs to
334
+ completion (or is reaped by ITS OWN timeout) as a bare subprocess, with
335
+ no `claude` binary ever invoked and no #2244 no-verdict park."""
336
+ repo = _init_repo(tmp_path / "repo")
337
+ server = _server(
338
+ tmp_path, repo_path=repo,
339
+ argv=[sys.executable, "-c", "print('claude-path-ran')"],
340
+ )
341
+ spec = _spec(
342
+ repo, type="smoke", plain_runner=True, smoke_needs_judgement=True,
343
+ smoke_command=f"{sys.executable} -c \"import time; time.sleep(0.3)\"",
344
+ smoke_timeout_s=30,
345
+ )
346
+ a = server.assign(spec)
347
+ final = server.wait_for(a.id, timeout=10)
348
+
349
+ assert final.status == DONE
350
+ assert final.exit_code == 0
351
+ log = Path(final.log_path).read_text()
352
+ assert "SMOKE: pass" in log
353
+ assert "claude-path-ran" not in log
354
+ server.shutdown()
355
+
356
+
357
+ def test_agent_plain_runner_smoke_crash_still_writes_a_smoke_marker(
358
+ tmp_path: Path, monkeypatch,
359
+ ) -> None:
360
+ """#3736: if :func:`execute_plain_runner_smoke` itself raises (not a
361
+ smoke-command failure — an infra crash in the executor), the leg must
362
+ still get a parseable ``SMOKE: fail`` line in its log, not just a FAILED
363
+ status with nothing for `coord.progress.parse_smoke_verdict_from_log` to
364
+ find — the same #2244 no-verdict park this whole fix targets, reachable
365
+ from a second angle."""
366
+ repo = _init_repo(tmp_path / "repo")
367
+ server = _server(
368
+ tmp_path, repo_path=repo,
369
+ argv=[sys.executable, "-c", "print('claude-path-ran')"],
370
+ )
371
+
372
+ def fake_execute(*args, **kwargs):
373
+ raise RuntimeError("boom")
374
+
375
+ monkeypatch.setattr(agent_mod, "execute_plain_runner_smoke", fake_execute)
376
+
377
+ spec = _spec(
378
+ repo, type="smoke", plain_runner=True, smoke_command="exit 0",
379
+ )
380
+ a = server.assign(spec)
381
+ final = server.wait_for(a.id, timeout=10)
382
+
383
+ assert final.status == FAILED
384
+ log = Path(final.log_path).read_text()
385
+ assert "SMOKE: fail" in log
386
+ assert "boom" in log
387
+ assert "claude-path-ran" not in log
314
388
  server.shutdown()