code-coordinator 0.5.643__tar.gz → 0.5.644__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 (980) hide show
  1. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. code_coordinator-0.5.644/code_coordinator.egg-info/scm_version.json +8 -0
  4. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/diagnose.py +10 -1
  5. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/failure_class.py +39 -0
  6. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/notify.py +9 -0
  7. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/reconcile.py +73 -0
  8. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/state.py +45 -0
  9. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_diagnose.py +66 -4
  10. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_failure_class.py +20 -0
  11. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_notify.py +124 -16
  12. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_smoke.py +75 -0
  13. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_state.py +29 -0
  14. code_coordinator-0.5.643/code_coordinator.egg-info/scm_version.json +0 -8
  15. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/.claude/commands/board.md +0 -0
  16. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/.claude/commands/complete-session.md +0 -0
  17. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/.claude/commands/coordinator.md +0 -0
  18. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/.githooks/_lib.sh +0 -0
  19. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/.githooks/post-checkout +0 -0
  20. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/.githooks/post-commit +0 -0
  21. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/.githooks/post-merge +0 -0
  22. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  23. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/.github/coord-ci-acceptance.yml +0 -0
  24. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/.github/workflows/auto-release.yml +0 -0
  25. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/.github/workflows/publish.yml +0 -0
  26. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/.github/workflows/test.yml +0 -0
  27. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/.gitignore +0 -0
  28. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/CLAUDE.md +0 -0
  29. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/GOAL.md +0 -0
  30. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/LICENSE +0 -0
  31. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/MANIFEST.in +0 -0
  32. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/README.md +0 -0
  33. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/code_coordinator.egg-info/SOURCES.txt +0 -0
  34. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/code_coordinator.egg-info/dependency_links.txt +0 -0
  35. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/code_coordinator.egg-info/entry_points.txt +0 -0
  36. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/code_coordinator.egg-info/requires.txt +0 -0
  37. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/code_coordinator.egg-info/scm_file_list.json +0 -0
  38. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/code_coordinator.egg-info/top_level.txt +0 -0
  39. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/__init__.py +0 -0
  40. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/_board_mapping.py +0 -0
  41. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/acceptance.py +0 -0
  42. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/acceptance_drivers.py +0 -0
  43. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/agent.py +0 -0
  44. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/agent_app.py +0 -0
  45. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/agent_update.py +0 -0
  46. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/agents/opencode/.gitignore +0 -0
  47. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/agents/opencode/agents/work.md +0 -0
  48. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/agents/opencode/routing.jsonc +0 -0
  49. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/app_drive.py +0 -0
  50. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/app_drive_daemon.py +0 -0
  51. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/approved_work.py +0 -0
  52. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/audit.py +0 -0
  53. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/auto_loop.py +0 -0
  54. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/backup.py +0 -0
  55. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/block_log.py +0 -0
  56. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/board_schema.py +0 -0
  57. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/board_service.py +0 -0
  58. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/board_wire.py +0 -0
  59. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/brain.py +0 -0
  60. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/branch_model.py +0 -0
  61. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/briefing_lessons.py +0 -0
  62. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/bug_intake.py +0 -0
  63. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/bugbash.py +0 -0
  64. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/cargo_cache.py +0 -0
  65. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/ci_fix.py +0 -0
  66. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/ci_github.py +0 -0
  67. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/ci_gitlab.py +0 -0
  68. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/ci_store.py +0 -0
  69. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/claim.py +0 -0
  70. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/claude_setup_token.py +0 -0
  71. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/cli.py +0 -0
  72. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/client.py +0 -0
  73. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/codegen.py +0 -0
  74. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/__init__.py +0 -0
  75. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/_common.py +0 -0
  76. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/acceptance.py +0 -0
  77. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/agent_ops.py +0 -0
  78. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/app_drive.py +0 -0
  79. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/audit.py +0 -0
  80. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/backup.py +0 -0
  81. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/bugbash.py +0 -0
  82. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/chat.py +0 -0
  83. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/ci.py +0 -0
  84. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/codegen.py +0 -0
  85. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/dispatch.py +0 -0
  86. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/dispatch_workers.py +0 -0
  87. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/dr.py +0 -0
  88. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/drive.py +0 -0
  89. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/drive_queue.py +0 -0
  90. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/gate_a.py +0 -0
  91. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/gates.py +0 -0
  92. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/issues.py +0 -0
  93. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/lifecycle.py +0 -0
  94. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/machine.py +0 -0
  95. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/merge.py +0 -0
  96. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/milestone.py +0 -0
  97. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/plan_followup.py +0 -0
  98. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/plans.py +0 -0
  99. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/portal.py +0 -0
  100. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/pr.py +0 -0
  101. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/release.py +0 -0
  102. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/repo.py +0 -0
  103. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/report.py +0 -0
  104. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/review.py +0 -0
  105. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/scorecard.py +0 -0
  106. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/sessions.py +0 -0
  107. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/setup.py +0 -0
  108. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/smoke.py +0 -0
  109. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/status.py +0 -0
  110. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/store_migrate.py +0 -0
  111. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/terminal.py +0 -0
  112. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/test_gate.py +0 -0
  113. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/commands/tui.py +0 -0
  114. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/comments.py +0 -0
  115. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/config.py +0 -0
  116. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/config_reload.py +0 -0
  117. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/confirm_test.py +0 -0
  118. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/conflict_fix.py +0 -0
  119. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/dao.py +0 -0
  120. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/dashboard/__init__.py +0 -0
  121. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/dashboard/fixture.py +0 -0
  122. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/dashboard/index.html +0 -0
  123. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/dashboard/reports.html +0 -0
  124. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/dashboard/server.py +0 -0
  125. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/dashboard/terminal.py +0 -0
  126. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/db.py +0 -0
  127. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/dead_end.py +0 -0
  128. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/decomposition_chat.py +0 -0
  129. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/README.md +0 -0
  130. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-agent.service +0 -0
  131. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-backup.service +0 -0
  132. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-backup.timer +0 -0
  133. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-db-backup.service +0 -0
  134. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-db-backup.sh +0 -0
  135. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-db-backup.timer +0 -0
  136. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-dr-verify.service +0 -0
  137. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-dr-verify.timer +0 -0
  138. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-drive-queue.service +0 -0
  139. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-drive-queue.timer +0 -0
  140. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-failure-notify.service +0 -0
  141. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-fleet-watchdog.service +0 -0
  142. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  143. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-nightly-smoke.service +0 -0
  144. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-nightly-smoke.timer +0 -0
  145. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-notify.service +0 -0
  146. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-notify.timer +0 -0
  147. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-release-propagate.service +0 -0
  148. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-release-propagate.timer +0 -0
  149. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-release-window.service +0 -0
  150. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-release-window.timer +0 -0
  151. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-serve.service +0 -0
  152. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-web-dist-build.service +0 -0
  153. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-web-dist-build.timer +0 -0
  154. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy/coord-web.service +0 -0
  155. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy_manifest.py +0 -0
  156. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deploy_units.py +0 -0
  157. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deprecation_telemetry.py +0 -0
  158. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/deps.py +0 -0
  159. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/dirlink.py +0 -0
  160. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/dispatch.py +0 -0
  161. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/dispatch_liveness.py +0 -0
  162. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/dist_name.py +0 -0
  163. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/dr_promote.py +0 -0
  164. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/dr_verify.py +0 -0
  165. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/drive.py +0 -0
  166. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/drive_queue.py +0 -0
  167. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/drive_sessions_snapshot.py +0 -0
  168. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/drive_state.py +0 -0
  169. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/events.py +0 -0
  170. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/failure_classifier.py +0 -0
  171. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/filelock.py +0 -0
  172. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/fleet_config_health.py +0 -0
  173. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/forge_availability.py +0 -0
  174. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/freshness.py +0 -0
  175. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/gate_a.py +0 -0
  176. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/gate_b.py +0 -0
  177. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/gate_snapshot.py +0 -0
  178. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/gates.py +0 -0
  179. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/gen_board_fixture.py +0 -0
  180. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/github_ops.py +0 -0
  181. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/github_throttle.py +0 -0
  182. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/goal.py +0 -0
  183. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/graph_health.py +0 -0
  184. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/gtk_native_driver.py +0 -0
  185. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/__init__.py +0 -0
  186. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/aggregate.py +0 -0
  187. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/__init__.py +0 -0
  188. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/_ci_pin.py +0 -0
  189. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/agent_install.py +0 -0
  190. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/cargo_targets.py +0 -0
  191. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/claude_binary.py +0 -0
  192. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/config_drift.py +0 -0
  193. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  194. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/coord_web_ci_pin.py +0 -0
  195. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/deploy_lane_facts.py +0 -0
  196. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/disk.py +0 -0
  197. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/fleet_board.py +0 -0
  198. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  199. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/fleet_phantom.py +0 -0
  200. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/fleet_unit_drift.py +0 -0
  201. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/graph.py +0 -0
  202. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/graphify_cli.py +0 -0
  203. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/gui_lane_preflight.py +0 -0
  204. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/index_lock.py +0 -0
  205. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/issues_sync_staleness.py +0 -0
  206. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/local_machine_identity.py +0 -0
  207. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/plan_usage.py +0 -0
  208. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/pr_churn.py +0 -0
  209. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/release_cordon.py +0 -0
  210. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/repo_state.py +0 -0
  211. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/spawned_coord.py +0 -0
  212. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/stalled_pipeline.py +0 -0
  213. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/timer_active.py +0 -0
  214. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/toolchain.py +0 -0
  215. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/unit_drift.py +0 -0
  216. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/unit_enablement.py +0 -0
  217. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/wedged_drive_queue.py +0 -0
  218. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/checks/worktrees.py +0 -0
  219. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/cli.py +0 -0
  220. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/context.py +0 -0
  221. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/fleet_snapshot.py +0 -0
  222. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/models.py +0 -0
  223. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/pypi.py +0 -0
  224. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/registry.py +0 -0
  225. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/render.py +0 -0
  226. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/health/units.py +0 -0
  227. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/hooks.py +0 -0
  228. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/housekeeping.py +0 -0
  229. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/interactive.py +0 -0
  230. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/invariant_alarms.py +0 -0
  231. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/issue_store.py +0 -0
  232. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/issues_sync_status.py +0 -0
  233. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/key_spec.py +0 -0
  234. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/liveness_auditor.py +0 -0
  235. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/mac_native_driver.py +0 -0
  236. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/machine_fault.py +0 -0
  237. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/machine_metrics.py +0 -0
  238. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/machine_onboard.py +0 -0
  239. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/machine_pause.py +0 -0
  240. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/machine_stats.py +0 -0
  241. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/merge_queue.py +0 -0
  242. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/milestone_chat.py +0 -0
  243. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/milestone_dispatch.py +0 -0
  244. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/milestone_gate.py +0 -0
  245. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/milestone_order.py +0 -0
  246. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/mock_author.py +0 -0
  247. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/models.py +0 -0
  248. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/native_fs_wait.py +0 -0
  249. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/native_pixels.py +0 -0
  250. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/network.py +0 -0
  251. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/new_issue_chat.py +0 -0
  252. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/nightly_runner.py +0 -0
  253. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/nightly_smoke.py +0 -0
  254. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/nightly_status.py +0 -0
  255. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/nightly_store.py +0 -0
  256. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/notifier/__init__.py +0 -0
  257. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/notifier/baseline.py +0 -0
  258. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/notifier/cli.py +0 -0
  259. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/notifier/collect.py +0 -0
  260. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/notifier/digest.py +0 -0
  261. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/notifier/models.py +0 -0
  262. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/notifier/predicate.py +0 -0
  263. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/notifier/service.py +0 -0
  264. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/notifier/store.py +0 -0
  265. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/notifier/transport.py +0 -0
  266. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/openapi.py +0 -0
  267. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/overlap_fence.py +0 -0
  268. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/overlap_predict.py +0 -0
  269. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/parentage.py +0 -0
  270. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/parentage_github.py +0 -0
  271. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/pipeline.py +0 -0
  272. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/plan_parser.py +0 -0
  273. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/plans.py +0 -0
  274. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/platform_paths.py +0 -0
  275. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/portal_bridge.py +0 -0
  276. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/portal_store.py +0 -0
  277. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/portal_sync.py +0 -0
  278. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/pr_body_lint.py +0 -0
  279. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/prereqs.py +0 -0
  280. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/prereview_gate.py +0 -0
  281. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/progress.py +0 -0
  282. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/providers/__init__.py +0 -0
  283. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/providers/base.py +0 -0
  284. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/providers/claude.py +0 -0
  285. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/providers/claude_pty.py +0 -0
  286. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/providers/opencode.py +0 -0
  287. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/queue_diagnose.py +0 -0
  288. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/reconcile_tick.py +0 -0
  289. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/refine_chat.py +0 -0
  290. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/release_cordon.py +0 -0
  291. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/release_gate.py +0 -0
  292. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/release_propagate.py +0 -0
  293. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/release_verify.py +0 -0
  294. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/release_window.py +0 -0
  295. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/repo_dormancy.py +0 -0
  296. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/repo_edit.py +0 -0
  297. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/repo_onboard.py +0 -0
  298. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/reports.py +0 -0
  299. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/rest_schema.py +0 -0
  300. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/restart_cmd.py +0 -0
  301. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/revalidate.py +0 -0
  302. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/review.py +0 -0
  303. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/scorecard.py +0 -0
  304. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/self_health.py +0 -0
  305. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/serve_app.py +0 -0
  306. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/shell_exec_wrap.py +0 -0
  307. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  308. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  309. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  310. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  311. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  312. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/skills/portal-followup/SKILL.md +0 -0
  313. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/skills/release-now/SKILL.md +0 -0
  314. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  315. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  316. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/skills/update-issue/SKILL.md +0 -0
  317. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/smoke.py +0 -0
  318. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/smoke_tags.py +0 -0
  319. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/spend_ceiling.py +0 -0
  320. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/split_work.py +0 -0
  321. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/sql.py +0 -0
  322. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/stage_projection.py +0 -0
  323. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/store_migrate.py +0 -0
  324. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/store_parity.py +0 -0
  325. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/templates/deploy-cloudflare.node.yml +0 -0
  326. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/test_author.py +0 -0
  327. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/test_chat.py +0 -0
  328. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/test_orchestrator.py +0 -0
  329. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/test_report.py +0 -0
  330. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/tui_pty_driver.py +0 -0
  331. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/tui_release.py +0 -0
  332. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/uat_checks.py +0 -0
  333. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/upstream_gaps.py +0 -0
  334. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/usage.py +0 -0
  335. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/usage_limits.py +0 -0
  336. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/usage_rollup.py +0 -0
  337. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/win_native_bridge.py +0 -0
  338. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/win_native_driver.py +0 -0
  339. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coord/worker_events.py +0 -0
  340. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/coordinator.example.yml +0 -0
  341. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-agent.service +0 -0
  342. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-backup.service +0 -0
  343. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-backup.timer +0 -0
  344. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-db-backup.service +0 -0
  345. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-db-backup.sh +0 -0
  346. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-db-backup.timer +0 -0
  347. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-dr-verify.service +0 -0
  348. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-dr-verify.timer +0 -0
  349. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-drive-queue.service +0 -0
  350. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-drive-queue.timer +0 -0
  351. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-failure-notify.service +0 -0
  352. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-failure-notify.sh +0 -0
  353. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-fleet-watchdog.service +0 -0
  354. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-fleet-watchdog.timer +0 -0
  355. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-nightly-smoke.service +0 -0
  356. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-nightly-smoke.timer +0 -0
  357. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-notify.service +0 -0
  358. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-notify.timer +0 -0
  359. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-release-propagate.service +0 -0
  360. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-release-propagate.timer +0 -0
  361. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-release-window.service +0 -0
  362. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-release-window.timer +0 -0
  363. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-serve.service +0 -0
  364. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-web-dist-build.service +0 -0
  365. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-web-dist-build.sh +0 -0
  366. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-web-dist-build.timer +0 -0
  367. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-web-rollback.sh +0 -0
  368. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/coord-web.service +0 -0
  369. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/deploy/node-shim.sh +0 -0
  370. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/ADR_COORD_TUI_CI.md +0 -0
  371. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  372. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/ADR_COORD_WEB_CI.md +0 -0
  373. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/ADR_COORD_WEB_DIST.md +0 -0
  374. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  375. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/AGENT_OPERATIONS.md +0 -0
  376. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/ARCHITECTURE.md +0 -0
  377. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/ARCH_SECURITY_GATES.md +0 -0
  378. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/COCKPIT.md +0 -0
  379. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/CONTROL_CENTER.md +0 -0
  380. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/COST_DISCIPLINE.md +0 -0
  381. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/CROSS_PLATFORM.md +0 -0
  382. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/CUSTOMER_FACING_APPS.md +0 -0
  383. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/CUSTOMER_PORTAL.md +0 -0
  384. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/DATA_STORE_SELECTION.md +0 -0
  385. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/DISASTER_RECOVERY.md +0 -0
  386. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/DRIVE_QUEUE.md +0 -0
  387. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/EPHEMERAL_WORKERS.md +0 -0
  388. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/FORGE_MIGRATION.md +0 -0
  389. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/GRAPHIFY_SETUP.md +0 -0
  390. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/ISSUE_GUIDANCE.md +0 -0
  391. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/MAC_MINI.md +0 -0
  392. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  393. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/NOTIFIER.md +0 -0
  394. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/OPENCODE_VERIFICATION.md +0 -0
  395. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/OPERATING_GOTCHAS.md +0 -0
  396. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/OPERATOR_GUIDES.md +0 -0
  397. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/ORACLE_LOOP.md +0 -0
  398. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/PHONE_WEBAPP.md +0 -0
  399. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/PIPELINE_V2.md +0 -0
  400. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/PLATFORM_EVOLUTION.md +0 -0
  401. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/SECOND_BACKEND.md +0 -0
  402. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/STORE_SERVICE.md +0 -0
  403. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  404. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/WEB_CONTROL_CENTER.md +0 -0
  405. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/WSL_WINDOWS_WORKER.md +0 -0
  406. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/mocks/web/README.md +0 -0
  407. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/mocks/web/_tokens.css +0 -0
  408. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/mocks/web/issue-detail.html +0 -0
  409. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/mocks/web/pipeline-narrow.html +0 -0
  410. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/docs/mocks/web/pipeline-wide.html +0 -0
  411. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/graphify-out/.gitignore +0 -0
  412. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/install-agent.sh +0 -0
  413. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/pyproject.toml +0 -0
  414. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/audit_review_verdict_overrides.py +0 -0
  415. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  416. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/azure-workers/build-worker-image.sh +0 -0
  417. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/azure-workers/coordinator-machine.py +0 -0
  418. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/azure-workers/dr-down.sh +0 -0
  419. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/azure-workers/dr-up.sh +0 -0
  420. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/azure-workers/epic-down.sh +0 -0
  421. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/azure-workers/epic-up.sh +0 -0
  422. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/azure-workers/preflight.sh +0 -0
  423. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/azure-workers/provision-server.sh +0 -0
  424. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/azure-workers/provision-worker.sh +0 -0
  425. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  426. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  427. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/azure-workers/throwaway-vm.sh +0 -0
  428. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/azure-workers/verify-github-token.sh +0 -0
  429. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/check_gh_argv_containment.py +0 -0
  430. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/codegen.py +0 -0
  431. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/comment_cruft.py +0 -0
  432. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/coord-test-runner.sh +0 -0
  433. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  434. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  435. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  436. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  437. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/coord-venv-rollback.sh +0 -0
  438. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/drive-batch.sh +0 -0
  439. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/extract-coord-tui.sh +0 -0
  440. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/fleet_watchdog.py +0 -0
  441. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/gen_board_fixture.py +0 -0
  442. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/gen_mock_index.py +0 -0
  443. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/lib/provision-core.sh +0 -0
  444. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/next_release_tag.py +0 -0
  445. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/provision-machine.sh +0 -0
  446. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/run_tests_in_populated_home.sh +0 -0
  447. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/run_tests_without_gh.sh +0 -0
  448. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/setup-macmini.sh +0 -0
  449. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/smoke_437_interactive.py +0 -0
  450. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/verify-provision-noble.sh +0 -0
  451. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/verify_878_review_capture.py +0 -0
  452. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/verify_release_published.py +0 -0
  453. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/scripts/verify_release_wheel.py +0 -0
  454. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/setup.cfg +0 -0
  455. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/SMOKE_SET.md +0 -0
  456. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/__init__.py +0 -0
  457. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/acceptance/ms-37/conftest.py +0 -0
  458. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/acceptance/ms-37/contract.md +0 -0
  459. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/acceptance/ms-37/manifest.yml +0 -0
  460. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  461. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  462. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/acceptance/ms-51/contract.md +0 -0
  463. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  464. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  465. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/acceptance/ms-51/manifest.yml +0 -0
  466. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  467. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/acceptance/ms-51/tsconfig.json +0 -0
  468. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  469. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/backends.py +0 -0
  470. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/conftest.py +0 -0
  471. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/board-pipeline-basic.json +0 -0
  472. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  473. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  474. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  475. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  476. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/playwright/all_pass.json +0 -0
  477. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  478. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/playwright/mixed_fail.json +0 -0
  479. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  480. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  481. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/playwright/skip.json +0 -0
  482. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/playwright/truncated.json +0 -0
  483. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  484. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  485. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  486. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  487. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
  488. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  489. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  490. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  491. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  492. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_acceptance.py +0 -0
  493. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_acceptance_drivers.py +0 -0
  494. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent.py +0 -0
  495. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_api_error.py +0 -0
  496. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_app.py +0 -0
  497. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_branch_base.py +0 -0
  498. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_branch_capture.py +0 -0
  499. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_config_free_1712.py +0 -0
  500. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_deploy_units_endpoint.py +0 -0
  501. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_dirty_worktree.py +0 -0
  502. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  503. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_graph_refresh.py +0 -0
  504. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_graph_self_heal.py +0 -0
  505. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_health_h3.py +0 -0
  506. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_idle_restart.py +0 -0
  507. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_push_failure.py +0 -0
  508. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_reap.py +0 -0
  509. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_repos_and_pull.py +0 -0
  510. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_restart_services_endpoint.py +0 -0
  511. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_skills_self_heal.py +0 -0
  512. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_startup_diagnostics.py +0 -0
  513. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_update.py +0 -0
  514. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_update_bluegreen.py +0 -0
  515. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_usage_limit.py +0 -0
  516. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_agent_zero_commit.py +0 -0
  517. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_ambient_home_isolation.py +0 -0
  518. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_app_drive.py +0 -0
  519. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_approve_capability_reroute_3241.py +0 -0
  520. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_approve_dependency_busy_2804.py +0 -0
  521. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_approve_reject_plan.py +0 -0
  522. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_approve_usage_gate.py +0 -0
  523. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_approved_work_2532.py +0 -0
  524. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_approved_work_2996.py +0 -0
  525. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_assignment_already_recorded_daemon.py +0 -0
  526. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_audit_log.py +0 -0
  527. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_audit_outcome.py +0 -0
  528. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_audit_query.py +0 -0
  529. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_auto_loop.py +0 -0
  530. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_auto_release_publish_2035.py +0 -0
  531. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_backend_selection.py +0 -0
  532. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_backup.py +0 -0
  533. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_base_checkout_restore.py +0 -0
  534. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_block_log.py +0 -0
  535. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_board_cap_762.py +0 -0
  536. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_board_fixture.py +0 -0
  537. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_board_nightly_status.py +0 -0
  538. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_board_read_path.py +0 -0
  539. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_board_schema.py +0 -0
  540. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_board_service.py +0 -0
  541. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_board_state.py +0 -0
  542. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_board_wire.py +0 -0
  543. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_brain.py +0 -0
  544. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_branch_model.py +0 -0
  545. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_briefing_lessons.py +0 -0
  546. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_bug_intake.py +0 -0
  547. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_bugbash.py +0 -0
  548. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_build_worker_image_env_update.py +0 -0
  549. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cargo_cache.py +0 -0
  550. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_check_gh_argv_containment.py +0 -0
  551. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_ci_acceptance_gate_1950.py +0 -0
  552. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_ci_fix.py +0 -0
  553. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_ci_github.py +0 -0
  554. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_ci_gitlab.py +0 -0
  555. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_ci_parity_2091.py +0 -0
  556. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_ci_store.py +0 -0
  557. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_claim.py +0 -0
  558. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_claude_md_budget.py +0 -0
  559. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_claude_setup_token.py +0 -0
  560. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_acceptance.py +0 -0
  561. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_assign.py +0 -0
  562. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  563. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_assign_interactive_remote.py +0 -0
  564. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_assign_provider.py +0 -0
  565. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  566. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_audit.py +0 -0
  567. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_chat_continue.py +0 -0
  568. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_ci.py +0 -0
  569. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_codegen.py +0 -0
  570. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_decide.py +0 -0
  571. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_diagnose_capability_rules.py +0 -0
  572. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_diagnose_config_provenance.py +0 -0
  573. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_diagnose_forge_availability.py +0 -0
  574. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_diagnose_graph.py +0 -0
  575. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_diagnose_self.py +0 -0
  576. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_diagnose_test_coverage.py +0 -0
  577. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_doctor.py +0 -0
  578. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_doctor_config_free_1801.py +0 -0
  579. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  580. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  581. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_drive.py +0 -0
  582. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_drive_queue.py +0 -0
  583. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_escalate.py +0 -0
  584. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_fix_headless_review.py +0 -0
  585. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_gate_a.py +0 -0
  586. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_inject_board_less.py +0 -0
  587. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_install_drift.py +0 -0
  588. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_install_skills.py +0 -0
  589. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_issue_comment.py +0 -0
  590. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_issue_create_label.py +0 -0
  591. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_issue_reopen.py +0 -0
  592. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_issue_view_list.py +0 -0
  593. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_issues.py +0 -0
  594. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_merge.py +0 -0
  595. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_milestone_assign.py +0 -0
  596. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_milestone_capture.py +0 -0
  597. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_milestone_chat_add_child.py +0 -0
  598. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_milestone_dispatch.py +0 -0
  599. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_milestone_gate_b.py +0 -0
  600. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_milestone_gate_c.py +0 -0
  601. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_milestone_order.py +0 -0
  602. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  603. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_milestone_ship.py +0 -0
  604. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_network.py +0 -0
  605. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_new_issue_chat.py +0 -0
  606. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_plans.py +0 -0
  607. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_portal.py +0 -0
  608. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_pr.py +0 -0
  609. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_pull_artifact.py +0 -0
  610. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_queue.py +0 -0
  611. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_reattach_sessions.py +0 -0
  612. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_refine_board.py +0 -0
  613. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_release_preflight.py +0 -0
  614. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_release_propagate.py +0 -0
  615. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_release_window.py +0 -0
  616. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_repo_2220.py +0 -0
  617. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  618. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_scorecard.py +0 -0
  619. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_serve_store_backend_3084.py +0 -0
  620. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_set_review_findings.py +0 -0
  621. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_smoke_nightly.py +0 -0
  622. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_smoke_nightly_sweep.py +0 -0
  623. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_status_advisory_terminal.py +0 -0
  624. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_status_contested_tag.py +0 -0
  625. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_status_invariant_alarms.py +0 -0
  626. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_status_machine_fault.py +0 -0
  627. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_status_merge_queue.py +0 -0
  628. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_status_nightly.py +0 -0
  629. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_status_provider.py +0 -0
  630. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_status_retried_3340.py +0 -0
  631. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_status_review_finalizing.py +0 -0
  632. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_status_supervisor_3366.py +0 -0
  633. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_status_test_failed_tag.py +0 -0
  634. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_status_usage_limit.py +0 -0
  635. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_sync_comments_873.py +0 -0
  636. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_test_plan.py +0 -0
  637. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_track.py +0 -0
  638. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_tui_update.py +0 -0
  639. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cli_wait.py +0 -0
  640. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_client.py +0 -0
  641. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_client_base_install.py +0 -0
  642. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_client_config_cache_atomic_3052.py +0 -0
  643. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_client_resource_migration_1946.py +0 -0
  644. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_commands_common.py +0 -0
  645. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_comment_cruft.py +0 -0
  646. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_comments.py +0 -0
  647. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_completion_summary.py +0 -0
  648. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_config.py +0 -0
  649. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_config_acceptance.py +0 -0
  650. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_config_audit.py +0 -0
  651. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_config_drift_check.py +0 -0
  652. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_config_effective.py +0 -0
  653. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_config_prereview_gate.py +0 -0
  654. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_config_pricing.py +0 -0
  655. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  656. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_config_usage_gate.py +0 -0
  657. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_confirm_test.py +0 -0
  658. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_conflict_fix.py +0 -0
  659. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_conflict_fix_semantic.py +0 -0
  660. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  661. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_coord_test.py +0 -0
  662. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  663. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_coord_test_runner_baseline.py +0 -0
  664. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_coord_test_runner_populated_home.py +0 -0
  665. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_coord_test_runner_routing.py +0 -0
  666. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_coord_test_runner_toolchain.py +0 -0
  667. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_coord_uat.py +0 -0
  668. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_coord_web_sse_restart_live.py +0 -0
  669. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_coordinator_machine.py +0 -0
  670. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_cross_platform_imports.py +0 -0
  671. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dao.py +0 -0
  672. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dashboard.py +0 -0
  673. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dashboard_api.py +0 -0
  674. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dashboard_fixture.py +0 -0
  675. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dashboard_reports.py +0 -0
  676. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dashboard_server.py +0 -0
  677. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dashboard_terminal.py +0 -0
  678. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dashboard_terminal_live.py +0 -0
  679. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_db.py +0 -0
  680. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dead_end.py +0 -0
  681. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_decomposition_chat.py +0 -0
  682. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_deploy_coord_db_backup.py +0 -0
  683. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_deploy_coord_web_dist.py +0 -0
  684. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_deploy_coord_web_rollback.py +0 -0
  685. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_deploy_db_backup_unit.py +0 -0
  686. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_deploy_drive_queue_unit.py +0 -0
  687. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_deploy_failure_notify_unit.py +0 -0
  688. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_deploy_manifest.py +0 -0
  689. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_deploy_notify_unit.py +0 -0
  690. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_deploy_units_lane.py +0 -0
  691. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_deploy_web_unit.py +0 -0
  692. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_deprecation_telemetry.py +0 -0
  693. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_deps.py +0 -0
  694. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dirlink.py +0 -0
  695. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dispatch.py +0 -0
  696. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dispatch_liveness.py +0 -0
  697. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dispatch_target_validation.py +0 -0
  698. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dispatch_workers.py +0 -0
  699. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dist_name.py +0 -0
  700. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_done_housekeeping.py +0 -0
  701. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dr_azure_scripts.py +0 -0
  702. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dr_promote.py +0 -0
  703. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_dr_verify.py +0 -0
  704. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_drive.py +0 -0
  705. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_drive_machine_fault.py +0 -0
  706. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_drive_queue.py +0 -0
  707. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_drive_queue_blocked_rendering.py +0 -0
  708. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_drive_queue_launch_argv.py +0 -0
  709. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_drive_queue_max_parallel_config.py +0 -0
  710. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  711. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_drive_queue_roll_pending.py +0 -0
  712. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  713. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_drive_sessions_snapshot.py +0 -0
  714. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_drive_state.py +0 -0
  715. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_drive_tmux.py +0 -0
  716. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_epic_up_capability_detection.py +0 -0
  717. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  718. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_epic_up_image_provenance.py +0 -0
  719. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_errors.py +0 -0
  720. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_events.py +0 -0
  721. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_failure_classifier.py +0 -0
  722. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_filelock.py +0 -0
  723. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  724. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_fix_escalation_classifier.py +0 -0
  725. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_fix_of_force_override.py +0 -0
  726. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_fleet_config_health.py +0 -0
  727. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_fleet_health_probes.py +0 -0
  728. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_fleet_health_snapshot.py +0 -0
  729. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_fleet_watchdog.py +0 -0
  730. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_forge_availability.py +0 -0
  731. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_freshness.py +0 -0
  732. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_gate_a.py +0 -0
  733. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_gate_b.py +0 -0
  734. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_gate_snapshot_staleness.py +0 -0
  735. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_gates.py +0 -0
  736. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  737. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_gen_mock_index.py +0 -0
  738. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_generated_rust_fixture.py +0 -0
  739. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_generated_rust_requests.py +0 -0
  740. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_generated_types_fixture.py +0 -0
  741. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_github_ops.py +0 -0
  742. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_github_throttle.py +0 -0
  743. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_goal.py +0 -0
  744. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_graph_health.py +0 -0
  745. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_graph_selfheal_absent_2237.py +0 -0
  746. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_gtk_native_driver.py +0 -0
  747. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_handoff.py +0 -0
  748. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_checks.py +0 -0
  749. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_cli.py +0 -0
  750. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_cli_graph.py +0 -0
  751. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_config.py +0 -0
  752. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_context.py +0 -0
  753. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_coord_tui_ci_pin.py +0 -0
  754. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_coord_web_ci_pin.py +0 -0
  755. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_deploy_lane_facts.py +0 -0
  756. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_fix.py +0 -0
  757. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_incident_regression.py +0 -0
  758. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_issues_sync_staleness.py +0 -0
  759. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_pr_churn.py +0 -0
  760. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_pypi.py +0 -0
  761. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_registry.py +0 -0
  762. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_release_cordon_probe.py +0 -0
  763. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_timer_active.py +0 -0
  764. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_toolchain.py +0 -0
  765. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_unit_drift.py +0 -0
  766. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_unit_enablement.py +0 -0
  767. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_health_wedged_drive_queue.py +0 -0
  768. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_hooks.py +0 -0
  769. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_housekeeping.py +0 -0
  770. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_human_attended_437.py +0 -0
  771. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_init.py +0 -0
  772. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_install_agent_capabilities_3515.py +0 -0
  773. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_install_agent_venv_2911.py +0 -0
  774. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_install_agent_wsl_bridge_3515.py +0 -0
  775. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_integration.py +0 -0
  776. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_interactive.py +0 -0
  777. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_interactive_briefing_echo.py +0 -0
  778. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_interactive_pane_log_2541.py +0 -0
  779. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_interactive_prefill_state.py +0 -0
  780. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_interactive_session_relaunch.py +0 -0
  781. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_interactive_test_verdict_backstop.py +0 -0
  782. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_interactive_token_attribution.py +0 -0
  783. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_interactive_worktree.py +0 -0
  784. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_invariant_alarms.py +0 -0
  785. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_issue_store_seam.py +0 -0
  786. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_issues_sync_status.py +0 -0
  787. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_key_spec.py +0 -0
  788. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_liveness_auditor.py +0 -0
  789. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_liveness_notify.py +0 -0
  790. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_lock_contention_ratchet.py +0 -0
  791. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_mac_native_driver.py +0 -0
  792. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_machine_fault.py +0 -0
  793. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_machine_metrics.py +0 -0
  794. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_machine_onboard.py +0 -0
  795. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_machine_pause.py +0 -0
  796. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_machine_stats.py +0 -0
  797. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_merge_queue.py +0 -0
  798. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_merge_verification.py +0 -0
  799. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_merge_verify.py +0 -0
  800. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_milestone_chat.py +0 -0
  801. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_milestone_dispatch.py +0 -0
  802. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_milestone_gate.py +0 -0
  803. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_milestone_order.py +0 -0
  804. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_milestone_seam.py +0 -0
  805. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_mock_author.py +0 -0
  806. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_model_tiering.py +0 -0
  807. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_models.py +0 -0
  808. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_models_config_labels.py +0 -0
  809. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_models_pinned_1650.py +0 -0
  810. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_native_fs_wait.py +0 -0
  811. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_native_pixels.py +0 -0
  812. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_needs_attention.py +0 -0
  813. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_network.py +0 -0
  814. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_new_issue_chat.py +0 -0
  815. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_next_release_tag.py +0 -0
  816. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_nightly_runner.py +0 -0
  817. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_nightly_smoke.py +0 -0
  818. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_nightly_status.py +0 -0
  819. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_nightly_store.py +0 -0
  820. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_no_eligible_host_3600.py +0 -0
  821. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_node_shim.py +0 -0
  822. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_notifier_baseline.py +0 -0
  823. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_notifier_cli.py +0 -0
  824. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_notifier_collect.py +0 -0
  825. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_notifier_config.py +0 -0
  826. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_notifier_drive_seam.py +0 -0
  827. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_notifier_isolation.py +0 -0
  828. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_notifier_predicate.py +0 -0
  829. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_notifier_quiet_hours.py +0 -0
  830. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_notifier_service.py +0 -0
  831. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_notify_drain.py +0 -0
  832. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_openapi.py +0 -0
  833. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_operational_defaults.py +0 -0
  834. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_overlap_fence.py +0 -0
  835. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_overlap_predict.py +0 -0
  836. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_packaged_deploy_units.py +0 -0
  837. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_parentage.py +0 -0
  838. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_paste_landed.py +0 -0
  839. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  840. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_pipeline.py +0 -0
  841. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_plain_runner_smoke_3673.py +0 -0
  842. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_plan_followup_approve_plan_command.py +0 -0
  843. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_plan_followup_pr_command.py +0 -0
  844. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_plan_followup_review_command.py +0 -0
  845. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_plan_only.py +0 -0
  846. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_plan_parser.py +0 -0
  847. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_platform_paths.py +0 -0
  848. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_portal_bridge.py +0 -0
  849. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_portal_config.py +0 -0
  850. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_portal_store.py +0 -0
  851. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_portal_sync.py +0 -0
  852. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_pr_body_lint.py +0 -0
  853. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_prereqs.py +0 -0
  854. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_prereview_gate.py +0 -0
  855. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_production_db_guard.py +0 -0
  856. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_progress.py +0 -0
  857. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_provider_seam.py +0 -0
  858. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_providers.py +0 -0
  859. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_providers_config_labels.py +0 -0
  860. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_providers_pty.py +0 -0
  861. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_provision_core.py +0 -0
  862. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_provision_machine.py +0 -0
  863. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_py_rust_mirror_inventory.py +0 -0
  864. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_quiet_hours.py +0 -0
  865. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_quiet_hours_store_2146.py +0 -0
  866. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_reap_merged_sessions.py +0 -0
  867. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_reap_stale_interactive_tick.py +0 -0
  868. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_reconcile.py +0 -0
  869. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_reconcile_branch.py +0 -0
  870. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_reconcile_completions.py +0 -0
  871. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  872. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_reconcile_merges.py +0 -0
  873. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_reconcile_no_agent_record.py +0 -0
  874. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_reconcile_tick.py +0 -0
  875. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_reconcile_usage_limit_done.py +0 -0
  876. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_refine_chat.py +0 -0
  877. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_release_cordon_2101.py +0 -0
  878. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  879. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_release_cordon_deadlock_2240.py +0 -0
  880. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  881. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_release_cordon_stuck_2490.py +0 -0
  882. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_release_gate.py +0 -0
  883. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_release_propagate.py +0 -0
  884. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_release_propagate_threshold.py +0 -0
  885. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_release_roll_between_legs_2854.py +0 -0
  886. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_release_roll_window_handoff.py +0 -0
  887. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_release_unified_1242.py +0 -0
  888. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_release_verify.py +0 -0
  889. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_release_window.py +0 -0
  890. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_remote_auto_prune.py +0 -0
  891. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_remote_interactive_reaper.py +0 -0
  892. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_repo_add.py +0 -0
  893. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_repo_dormancy.py +0 -0
  894. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_repo_edit_2220.py +0 -0
  895. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_repo_graph_fleet_2237.py +0 -0
  896. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_repo_max_parallel_3423.py +0 -0
  897. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_repo_onboard_2220.py +0 -0
  898. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_report_public_export.py +0 -0
  899. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_report_result_push.py +0 -0
  900. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_reports.py +0 -0
  901. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_restart_cmd.py +0 -0
  902. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_retry.py +0 -0
  903. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_retry_advisory_1606.py +0 -0
  904. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_retry_escalation_classify_3360.py +0 -0
  905. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_retry_type_1636.py +0 -0
  906. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_revalidate.py +0 -0
  907. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_review.py +0 -0
  908. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_review_end_review_without_verdict.py +0 -0
  909. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_review_parse_failure_diagnostic.py +0 -0
  910. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_review_reaffirm.py +0 -0
  911. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_review_state.py +0 -0
  912. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_review_verdict_backstop.py +0 -0
  913. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_review_verdict_override_audit.py +0 -0
  914. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_review_verdict_relay.py +0 -0
  915. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_review_zero_commits.py +0 -0
  916. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_scoped_review_wiring.py +0 -0
  917. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_scorecard.py +0 -0
  918. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_self_health.py +0 -0
  919. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_serve.py +0 -0
  920. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_serve_app.py +0 -0
  921. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_serve_app_board_trim.py +0 -0
  922. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_serve_rest_routes.py +0 -0
  923. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_session.py +0 -0
  924. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_slice_issue_attribution.py +0 -0
  925. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  926. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_smoke_live_checkout_restore.py +0 -0
  927. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_smoke_plain_runner_3673.py +0 -0
  928. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_smoke_workflow.py +0 -0
  929. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_spend_ceiling.py +0 -0
  930. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_spend_ceiling_coordinator.py +0 -0
  931. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_split.py +0 -0
  932. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_split_work.py +0 -0
  933. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_sql_dialect.py +0 -0
  934. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_sqlite_connect_ratchet.py +0 -0
  935. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_stage_projection.py +0 -0
  936. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_stale_busy_reviewer_697.py +0 -0
  937. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_stalled_pipeline.py +0 -0
  938. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_state_review_findings_daemon.py +0 -0
  939. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_status_fleet_footer.py +0 -0
  940. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_stop_1567.py +0 -0
  941. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_store_contract.py +0 -0
  942. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_store_migrate.py +0 -0
  943. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_stuck.py +0 -0
  944. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  945. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_terminal_command.py +0 -0
  946. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_test_author.py +0 -0
  947. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_test_chat.py +0 -0
  948. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_test_orchestrator.py +0 -0
  949. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_test_report.py +0 -0
  950. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_test_verdict_parsing.py +0 -0
  951. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_test_verdict_transcript_floor.py +0 -0
  952. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_text_io_encoding_audit.py +0 -0
  953. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_thin_client_board_audit.py +0 -0
  954. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_thin_client_config_load_1080.py +0 -0
  955. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_thin_client_daemon_routing_906.py +0 -0
  956. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_throwaway_vm.py +0 -0
  957. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_tmux_host.py +0 -0
  958. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_tmux_session.py +0 -0
  959. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_transcript_floor.py +0 -0
  960. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_tui_pty_driver.py +0 -0
  961. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_uat_checks.py +0 -0
  962. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_upstream_gaps.py +0 -0
  963. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_usage.py +0 -0
  964. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_usage_limits.py +0 -0
  965. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_usage_rollup.py +0 -0
  966. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_venv_live_install_2121.py +0 -0
  967. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_version_single_source.py +0 -0
  968. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_watch.py +0 -0
  969. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_win_native_bridge.py +0 -0
  970. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_win_native_driver.py +0 -0
  971. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  972. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_worker_env_venv_isolation.py +0 -0
  973. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_worker_events.py +0 -0
  974. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_worker_image_pin_sync.py +0 -0
  975. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_worker_safety.py +0 -0
  976. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_worker_test_scoping.py +0 -0
  977. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_worktree.py +0 -0
  978. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  979. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/tests/test_write_parity.py +0 -0
  980. {code_coordinator-0.5.643 → code_coordinator-0.5.644}/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.643
3
+ Version: 0.5.644
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.643
3
+ Version: 0.5.644
4
4
  Summary: Coordinate Claude Code workers across multiple machines and repos.
5
5
  Author-email: John Donaghy <johnfdonaghy@gmail.com>
6
6
  License-Expression: LicenseRef-FSL-1.1-MIT
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.5.644",
3
+ "distance": 0,
4
+ "node": "g634dd923ef760cbdf3bb66239d0470e25f7af742",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-10-16"
8
+ }
@@ -1441,10 +1441,19 @@ def _recover_test(
1441
1441
  from coord.reconcile import ( # noqa: PLC0415
1442
1442
  propagate_smoke_terminal_failure,
1443
1443
  )
1444
-
1444
+ from coord.state import load_assignment_exit_code # noqa: PLC0415
1445
+
1446
+ # #3705: the board projection carries no `exit_code`, so read the
1447
+ # smoke child's recorded exit status directly — without it every
1448
+ # reason-less failure would reclassify as a silent #1605 death and
1449
+ # earn a bounded retry instead of a work failure. A `cancelled`
1450
+ # row is the operator's own `coord stop`, whose exit status is the
1451
+ # kill signal rather than a verdict on the code under test.
1445
1452
  propagate_smoke_terminal_failure(
1446
1453
  parent_assignment_id=latest.assignment_id,
1447
1454
  failure_reason=smoke.failure_reason,
1455
+ operator_cancelled=(smoke.status or "") == "cancelled",
1456
+ exit_code=load_assignment_exit_code(smoke.assignment_id),
1448
1457
  )
1449
1458
  res.actions_taken.append(
1450
1459
  f"resolved stuck test_state='running' from smoke child "
@@ -98,6 +98,11 @@ KIND_NETWORK = "network"
98
98
  #: diagnosis of a lost Test-stage leg, never a verdict about the code
99
99
  #: under test.
100
100
  KIND_INFRA = "infra"
101
+ #: #3705: a Test-stage worker died with literally no `failure_reason` to
102
+ #: classify — not "classified as work because the text didn't match any
103
+ #: environmental pattern" (that case has real diagnostic text and stays
104
+ #: `KIND_WORK`), but zero evidence at all. See :func:`silent_test_death`.
105
+ KIND_SILENT = "silent"
101
106
  KIND_WORK = "work"
102
107
 
103
108
  #: HTTP statuses from the Claude API that mean "the provider, not the work".
@@ -353,6 +358,40 @@ def _usage_limit(reset_at_raw: str | None, signal: str) -> FailureClassification
353
358
  )
354
359
 
355
360
 
361
+ def silent_test_death() -> FailureClassification:
362
+ """#3705: classification for a Test-stage worker that died reporting
363
+ literally nothing — no usage-limit/API/network/infra signal and no
364
+ ``failure_reason`` text at all for :func:`classify_failure` to have
365
+ scanned in the first place (a dead agent, a killed process group, a
366
+ terminal API error with the summary itself lost — the #1605 class).
367
+
368
+ Deliberately **not** a branch inside :func:`classify_failure`: that
369
+ function's "everything else is WORK, including no evidence" rule is
370
+ correct for a failure that has *some* terminal text which simply didn't
371
+ match an environmental pattern (that IS a real, if unrecognized, work
372
+ failure with diagnostic content worth handing a fix worker). This is
373
+ the narrower case of *zero* content — nothing to classify, let alone
374
+ hand to a fix worker — which only
375
+ :func:`coord.reconcile.propagate_smoke_terminal_failure` can tell apart
376
+ from the ordinary case (it alone sees whether ``failure_reason`` itself
377
+ was ever populated). Classified ``ENVIRONMENTAL`` so it gets the same
378
+ bounded clear-and-retry-then-park treatment as a usage limit or network
379
+ drop — a silent death is no more evidence of a code defect than either
380
+ of those, and parking (never a blind ``coord fix``) is the correct
381
+ escalation once the shared retry budget is exhausted.
382
+ """
383
+ return FailureClassification(
384
+ failure_class=ENVIRONMENTAL,
385
+ kind=KIND_SILENT,
386
+ reason=(
387
+ "environmental (silent #1605 death): the Test-stage worker "
388
+ "died without recording any reason — no usage-limit, API, "
389
+ "network, or infra signal, and no terminal output at all"
390
+ ),
391
+ signal=None,
392
+ )
393
+
394
+
356
395
  def _reset_at_from_reason(reason: str | None) -> str | None:
357
396
  """Pull the raw reset string back out of a stamped ``failure_reason``."""
358
397
  if not is_usage_limit_reason(reason):
@@ -4623,17 +4623,26 @@ def post_transition(transition: Transition, record: dict, entry: dict) -> None:
4623
4623
  # can protect a still-live/already-passed sibling partition
4624
4624
  # from a false aggregate failure instead of folding this
4625
4625
  # leg's cancellation straight into the parent's verdict.
4626
+ # #3705: `exit_code` is the deciding evidence for the
4627
+ # silent-death branch — a leg that actually ran and exited
4628
+ # non-zero is a genuine work failure even with no classified
4629
+ # reason text, while a leg whose process left no exit status
4630
+ # at all is the #1605 class that gets a bounded retry. Same
4631
+ # forwarding as `coord.reconcile`'s own call site, so both
4632
+ # surfaces answer "silent or genuine?" identically.
4626
4633
  propagate_smoke_terminal_failure(
4627
4634
  parent_assignment_id=transition.assignment_id,
4628
4635
  failure_reason=_failure_reason,
4629
4636
  fanout_parent_id=parent_id,
4630
4637
  operator_cancelled=entry.get("status") == "cancelled",
4638
+ exit_code=transition.exit_code,
4631
4639
  )
4632
4640
  finalize_smoke_fanout(parent_id)
4633
4641
  else:
4634
4642
  propagate_smoke_terminal_failure(
4635
4643
  parent_assignment_id=parent_id,
4636
4644
  failure_reason=_failure_reason,
4645
+ exit_code=transition.exit_code,
4637
4646
  )
4638
4647
  elif transition.event == EVENT_COMPLETION:
4639
4648
  # #2188: a `deliverable:analysis` issue that legitimately ended with
@@ -590,6 +590,7 @@ def reconcile_completed_assignments(
590
590
  propagate_smoke_terminal_failure(
591
591
  parent_assignment_id=a.review_of_assignment_id,
592
592
  failure_reason=_failure_reason,
593
+ exit_code=entry.get("exit_code"),
593
594
  )
594
595
 
595
596
  # #666 Gap A: best-effort cost/token capture from the agent completed
@@ -940,9 +941,14 @@ def _environmental_cause_phrase(classification: "FailureClassification") -> str:
940
941
  KIND_API_ERROR,
941
942
  KIND_INFRA,
942
943
  KIND_NETWORK,
944
+ KIND_SILENT,
943
945
  KIND_USAGE_LIMIT,
944
946
  )
945
947
 
948
+ if classification.kind == KIND_SILENT:
949
+ # #3705: a Test-stage worker that died reporting nothing at all —
950
+ # not a provider signal, just no diagnostic to hand anyone.
951
+ return "a Test-stage worker repeatedly dying with no reason recorded (#1605)"
946
952
  if classification.kind == KIND_USAGE_LIMIT:
947
953
  return "an exhausted account usage limit"
948
954
  if classification.kind == KIND_API_ERROR:
@@ -969,6 +975,7 @@ def propagate_smoke_terminal_failure(
969
975
  environmental: bool | None = None,
970
976
  fanout_parent_id: str | None = None,
971
977
  operator_cancelled: bool = False,
978
+ exit_code: int | None = None,
972
979
  ) -> None:
973
980
  """#1605: resolve a work row's ``test_state`` when its Test-stage
974
981
  (``type="smoke"``) child dies without ever reporting pass/fail.
@@ -1036,6 +1043,30 @@ def propagate_smoke_terminal_failure(
1036
1043
  ``test_state="failed"`` exactly like a normal non-zero-exit smoke
1037
1044
  completion already does (`coord/notify.py`'s completion handler), so
1038
1045
  the existing bounded `coord fix` loop picks it up from there.
1046
+ * **silent** (#3705: *failure_reason* itself is empty — no usage-limit,
1047
+ API, network, or infra token to classify, because there is no text at
1048
+ all) — this is the #1605 class the module docstring above describes,
1049
+ and it is treated like **environmental**, not **work**: there is
1050
+ nothing for a `coord fix` worker to act on, so dispatching one only
1051
+ adds a full Work→Test→Review cycle onto a row whose original Work may
1052
+ already be approved, for zero actionable content. Reclassified via
1053
+ :func:`coord.failure_class.silent_test_death` and folded into the same
1054
+ bounded clear-and-retry-then-park machinery as a genuine environmental
1055
+ death, sharing its budget and tally. Deliberately distinct from
1056
+ **work**'s "no RECOGNIZED signal" case, which still has real
1057
+ diagnostic text worth a fix worker's time and keeps its current
1058
+ ``test_state="failed"`` handling unchanged.
1059
+
1060
+ *exit_code* (#3705) is the deciding evidence for that **silent** branch,
1061
+ and every automatic caller must forward it: the dying worker's own
1062
+ process exit status, when the agent recorded one. A non-zero exit means
1063
+ the worker ran and returned an error — real evidence of a work failure,
1064
+ even with no reason text — so only ``exit_code in {0, None}`` reclassifies
1065
+ as silent. *operator_cancelled* overrides this, since a `coord stop`
1066
+ kills the process group and its exit status reflects the operator's
1067
+ signal rather than the code under test. Leaving *exit_code* unset means
1068
+ "no exit status is known", which is itself the #1605 shape, so a caller
1069
+ that CAN see one and omits it would reclassify genuine failures as silent.
1039
1070
 
1040
1071
  *environmental* (#2275) overrides that classification when the CALLER
1041
1072
  already knows the answer. Default ``None`` means "classify from
@@ -1134,6 +1165,48 @@ def propagate_smoke_terminal_failure(
1134
1165
  if environmental is None:
1135
1166
  is_environmental = classification.is_environmental
1136
1167
  cause = classification.reason
1168
+ if (
1169
+ not is_environmental
1170
+ and not (failure_reason or "").strip()
1171
+ and (operator_cancelled or exit_code in (0, None))
1172
+ ):
1173
+ # #3705: `classify_failure` correctly calls this WORK — its own
1174
+ # "no evidence at all defaults to WORK" rule — but that rule is
1175
+ # about an UNRECOGNIZED signal, not an ABSENT one. There is a
1176
+ # real difference between "the worker's own terminal text didn't
1177
+ # match any environmental pattern" (real diagnostic content, a
1178
+ # genuine work failure worth a fix worker's time) and "there is
1179
+ # no `failure_reason` text at all" (a dead agent, a killed
1180
+ # process group — the #1605 class this function exists for,
1181
+ # with nothing for a fix worker to act on). Only this caller can
1182
+ # tell the two apart, since only it sees whether
1183
+ # *failure_reason* itself was ever populated.
1184
+ #
1185
+ # The additional *exit_code* guard keeps a non-zero exit code
1186
+ # (e.g. exit_code=1: the `claude -p` process actually ran and
1187
+ # returned an error) as a genuine WORK failure even when the
1188
+ # agent captured no classified reason text — a non-zero exit IS
1189
+ # a signal, just one without a human-readable reason string.
1190
+ # Only `exit_code in {0, None}` qualifies as truly silent.
1191
+ #
1192
+ # *operator_cancelled* overrides that guard: a `coord stop` kills
1193
+ # the worker's process group, so its exit status reports the
1194
+ # OPERATOR'S signal, not a verdict on the code under test. Every
1195
+ # cancellation is therefore silent by construction, whatever exit
1196
+ # code the kill happened to leave behind — the same reasoning as
1197
+ # the sibling-protection branch above, applied to a solo leg that
1198
+ # has no live sibling left to protect.
1199
+ # Treat all of the above like an environmental death: bounded
1200
+ # clear-and-retry of the Test stage, parking (never a blind
1201
+ # `coord fix`) once the shared #3315 budget is exhausted —
1202
+ # instead of ever recording a `test_state="failed"` work verdict
1203
+ # with a synthetic placeholder reason and no actual failure
1204
+ # behind it.
1205
+ from coord.failure_class import silent_test_death # noqa: PLC0415
1206
+
1207
+ classification = silent_test_death()
1208
+ is_environmental = True
1209
+ cause = classification.reason
1137
1210
  else:
1138
1211
  is_environmental = bool(environmental)
1139
1212
  cause = failure_reason or classification.reason
@@ -4587,6 +4587,51 @@ def load_assignment_test_reason(assignment_id: str) -> str | None:
4587
4587
  return row["test_reason"] if hasattr(row, "keys") else row[0]
4588
4588
 
4589
4589
 
4590
+ def load_assignment_exit_code(assignment_id: str) -> int | None:
4591
+ """#3705: the recorded process ``exit_code`` for one assignment.
4592
+
4593
+ The single-row read that lets a caller holding only an
4594
+ :class:`coord.models.Assignment` (whose projection carries no
4595
+ ``exit_code``) answer "did this worker actually run and return an error?"
4596
+ — the deciding evidence
4597
+ :func:`coord.reconcile.propagate_smoke_terminal_failure` needs to tell a
4598
+ genuine work failure from a silent #1605 death.
4599
+
4600
+ Same daemon-first, local-fallback routing as
4601
+ :func:`load_assignment_test_reason`. Returns ``None`` when the row is
4602
+ absent, the column is NULL (the agent recorded no exit status), or a
4603
+ remote read failed — all three mean "no exit status I can see", which is
4604
+ itself the silent shape, so callers must treat it as absence of evidence
4605
+ rather than as a successful exit.
4606
+ """
4607
+ if not assignment_id:
4608
+ return None
4609
+ svc = _board_service()
4610
+ if svc is not None:
4611
+ try:
4612
+ from coord.client import fetch_assignment # noqa: PLC0415
4613
+
4614
+ row = fetch_assignment(svc, assignment_id)
4615
+ if row is not None:
4616
+ code = row.get("exit_code")
4617
+ return int(code) if code is not None else None
4618
+ return None
4619
+ except Exception: # noqa: BLE001 — degraded fallback, never blocking
4620
+ return None
4621
+ try:
4622
+ conn = get_connection()
4623
+ row = sql.execute(conn,
4624
+ "SELECT exit_code FROM assignments WHERE assignment_id=?",
4625
+ (assignment_id,),
4626
+ ).fetchone()
4627
+ except Exception: # noqa: BLE001
4628
+ return None
4629
+ if row is None:
4630
+ return None
4631
+ code = row["exit_code"] if hasattr(row, "keys") else row[0]
4632
+ return int(code) if code is not None else None
4633
+
4634
+
4590
4635
  def load_assignment_test_state(assignment_id: str) -> str | None:
4591
4636
  """#2244: the current ``test_state`` for one assignment.
4592
4637
 
@@ -1712,10 +1712,9 @@ def test_stuck_test_state_with_terminal_smoke_child_is_recovered(monkeypatch, co
1712
1712
  calls: list[dict] = []
1713
1713
  monkeypatch.setattr(
1714
1714
  "coord.reconcile.propagate_smoke_terminal_failure",
1715
- lambda *, parent_assignment_id, failure_reason: calls.append(
1716
- {"parent_assignment_id": parent_assignment_id, "failure_reason": failure_reason}
1717
- ),
1715
+ lambda **kw: calls.append(kw),
1718
1716
  )
1717
+ monkeypatch.setattr("coord.state.load_assignment_exit_code", lambda aid: None)
1719
1718
  work = _assign(aid="w1", typ="work", status="done")
1720
1719
  work.test_state = "running"
1721
1720
  smoke = _assign(
@@ -1728,12 +1727,75 @@ def test_stuck_test_state_with_terminal_smoke_child_is_recovered(monkeypatch, co
1728
1727
 
1729
1728
  assert any("test_state='running'" in f and "s1" in f for f in res.findings)
1730
1729
  assert calls == [
1731
- {"parent_assignment_id": "w1", "failure_reason": "api_error: aborted_streaming"}
1730
+ {
1731
+ "parent_assignment_id": "w1",
1732
+ "failure_reason": "api_error: aborted_streaming",
1733
+ "operator_cancelled": False,
1734
+ "exit_code": None,
1735
+ }
1732
1736
  ]
1733
1737
  assert any("resolved stuck test_state" in a for a in res.actions_taken)
1734
1738
  assert res.recovered is True
1735
1739
 
1736
1740
 
1741
+ def test_stuck_test_state_forwards_the_smoke_child_exit_code(monkeypatch, config) -> None:
1742
+ """#3705: a smoke child that ran and exited non-zero is a genuine work
1743
+ failure even with no reason text recorded, so the repair must forward the
1744
+ child's own exit status — the board projection does not carry it, and
1745
+ omitting it would reclassify the failure as a silent #1605 death and earn
1746
+ it a bounded Test-stage retry instead."""
1747
+ _stub(monkeypatch, session="dead")
1748
+ calls: list[dict] = []
1749
+ monkeypatch.setattr(
1750
+ "coord.reconcile.propagate_smoke_terminal_failure",
1751
+ lambda **kw: calls.append(kw),
1752
+ )
1753
+ monkeypatch.setattr(
1754
+ "coord.state.load_assignment_exit_code",
1755
+ lambda aid: 1 if aid == "s1" else None,
1756
+ )
1757
+ work = _assign(aid="w1", typ="work", status="done")
1758
+ work.test_state = "running"
1759
+ smoke = _assign(aid="s1", typ="smoke", status="failed", review_of="w1")
1760
+ board = Board(completed=[work, smoke])
1761
+
1762
+ diagnose.diagnose_stage(board, config, "api", 42, "test")
1763
+
1764
+ assert calls and calls[0]["exit_code"] == 1, (
1765
+ "the smoke child's recorded exit status must reach "
1766
+ f"propagate_smoke_terminal_failure — got {calls!r}"
1767
+ )
1768
+ assert calls[0]["operator_cancelled"] is False
1769
+
1770
+
1771
+ def test_stuck_test_state_marks_a_cancelled_smoke_child_operator_cancelled(
1772
+ monkeypatch, config
1773
+ ) -> None:
1774
+ """#3705/#3333: an operator `coord stop` leaves the smoke row `cancelled`
1775
+ and its exit status is the kill signal, not a verdict on the code under
1776
+ test — so the repair must flag the cancellation and keep the clear-and-retry
1777
+ treatment rather than letting the signal's exit code read as a work
1778
+ failure."""
1779
+ _stub(monkeypatch, session="dead")
1780
+ calls: list[dict] = []
1781
+ monkeypatch.setattr(
1782
+ "coord.reconcile.propagate_smoke_terminal_failure",
1783
+ lambda **kw: calls.append(kw),
1784
+ )
1785
+ monkeypatch.setattr("coord.state.load_assignment_exit_code", lambda aid: -15)
1786
+ work = _assign(aid="w1", typ="work", status="done")
1787
+ work.test_state = "running"
1788
+ smoke = _assign(aid="s1", typ="smoke", status="cancelled", review_of="w1")
1789
+ board = Board(completed=[work, smoke])
1790
+
1791
+ diagnose.diagnose_stage(board, config, "api", 42, "test")
1792
+
1793
+ assert calls and calls[0]["operator_cancelled"] is True, (
1794
+ f"a cancelled smoke child must be reported as operator-cancelled — got {calls!r}"
1795
+ )
1796
+ assert calls[0]["exit_code"] == -15
1797
+
1798
+
1737
1799
  def test_stuck_test_state_dry_run_reports_without_writing(monkeypatch, config) -> None:
1738
1800
  _stub(monkeypatch, session="dead")
1739
1801
 
@@ -32,6 +32,7 @@ from coord.failure_class import (
32
32
  KIND_API_ERROR,
33
33
  KIND_INFRA,
34
34
  KIND_NETWORK,
35
+ KIND_SILENT,
35
36
  KIND_USAGE_LIMIT,
36
37
  KIND_WORK,
37
38
  WORK,
@@ -45,6 +46,7 @@ from coord.failure_class import (
45
46
  parse_reset_at,
46
47
  plan_usage_limit_resume,
47
48
  probe_environment_liveness,
49
+ silent_test_death,
48
50
  )
49
51
  from coord.worker_events import UsageLimitKill, format_usage_limit_reason
50
52
 
@@ -822,3 +824,21 @@ def test_classification_is_frozen() -> None:
822
824
  with pytest.raises(Exception):
823
825
  c.failure_class = WORK # type: ignore[misc]
824
826
  assert isinstance(c, FailureClassification)
827
+
828
+
829
+ def test_silent_test_death_is_environmental_and_distinct_from_plain_work() -> None:
830
+ """#3705: a Test-stage worker that died reporting literally nothing (no
831
+ `failure_reason` at all) classifies ENVIRONMENTAL via
832
+ :func:`silent_test_death`, with its own `KIND_SILENT` — distinct from
833
+ the ordinary `classify_failure(failure_reason=None)` WORK default, which
834
+ stays unchanged for every other caller (notably the WORK-stage retry
835
+ logic in `coord/drive.py`, out of scope for this Test-stage-only fix)."""
836
+ c = silent_test_death()
837
+ assert c.failure_class == ENVIRONMENTAL
838
+ assert c.kind == KIND_SILENT
839
+ assert c.is_environmental
840
+ assert "1605" in c.reason
841
+
842
+ # The ordinary classifier is untouched: no evidence still defaults WORK.
843
+ assert classify_failure(failure_reason=None).failure_class == WORK
844
+ assert classify_failure(failure_reason=None).kind == KIND_WORK
@@ -2849,13 +2849,15 @@ class TestSmokeCompletionVerdict:
2849
2849
  ) -> None:
2850
2850
  """#3182 review (non-blocking): the `EVENT_FAILURE` branch in
2851
2851
  `post_transition` mirrors the `EVENT_COMPLETION` one above — a
2852
- capability-partition leg whose WORKER died (#1605: killed process,
2853
- terminal API error, anything short of the worker printing its own
2854
- `SMOKE:` verdict) resolves onto its OWN row via
2855
- `propagate_smoke_terminal_failure`, never straight onto the shared
2856
- parent, then folds through `finalize_smoke_fanout` exactly like a
2857
- leg that reports a real `SMOKE: fail`. Before this test, only the
2858
- EVENT_COMPLETION half of that symmetry had coverage."""
2852
+ capability-partition leg whose WORKER died resolves onto its OWN row
2853
+ via `propagate_smoke_terminal_failure`, never straight onto the
2854
+ shared parent, then folds through `finalize_smoke_fanout` exactly
2855
+ like a leg that reports a real `SMOKE: fail`.
2856
+
2857
+ This leg exited NON-ZERO (#3705): it actually ran and returned an
2858
+ error, so it is a genuine work failure and must fold into the
2859
+ aggregate as `failed` — the silent #1605 retry path is only for a leg
2860
+ that left no exit status at all (covered by the next test)."""
2859
2861
  from coord.notify import ( # noqa: PLC0415
2860
2862
  EVENT_COMPLETION,
2861
2863
  EVENT_FAILURE,
@@ -2938,7 +2940,11 @@ class TestSmokeCompletionVerdict:
2938
2940
 
2939
2941
  # The leg's OWN row carries the terminal verdict — never a straight
2940
2942
  # write onto the shared parent (#1797's shape).
2941
- assert load_assignment_test_state("leg-win2") == "failed"
2943
+ assert load_assignment_test_state("leg-win2") == "failed", (
2944
+ "a leg that ran and exited non-zero is a genuine work failure "
2945
+ "even with no classified reason text — got "
2946
+ f"{load_assignment_test_state('leg-win2')!r}"
2947
+ )
2942
2948
 
2943
2949
  conn = get_connection()
2944
2950
  row = conn.execute(
@@ -2954,6 +2960,93 @@ class TestSmokeCompletionVerdict:
2954
2960
  f"{row['test_reason']!r}"
2955
2961
  )
2956
2962
 
2963
+ def test_silent_fanout_leg_death_clears_the_leg_for_a_bounded_retry(
2964
+ self, coord_db, tmp_path,
2965
+ ) -> None:
2966
+ """#3705 on the live, event-driven path: a fan-out leg whose worker
2967
+ died leaving NO exit status and NO classifiable reason (a reaped
2968
+ agent, a lost process group — the #1605 class) must be cleared for a
2969
+ bounded automatic retry of its partition, never recorded as a work
2970
+ failure with a synthetic placeholder reason behind it. That synthetic
2971
+ verdict is what used to dispatch a full blind Work→Test→Review
2972
+ smoke-fix cycle for zero actionable content.
2973
+
2974
+ `coord.notify`'s `_failure_reason` is built only from a fixed set of
2975
+ coordinator-authored structured fields (usage-limit, API error, …) —
2976
+ a worker's own free-text `entry["error"]` never feeds it, by design
2977
+ (`classify_failure`'s vocabulary is restricted to named wire tokens,
2978
+ never arbitrary worker prose) — so this shape reaches
2979
+ `propagate_smoke_terminal_failure` with an empty `failure_reason`."""
2980
+ from coord.notify import EVENT_FAILURE, Transition, post_transition # noqa: PLC0415
2981
+ from coord.state import ( # noqa: PLC0415
2982
+ get_connection,
2983
+ load_assignment_test_reason,
2984
+ load_assignment_test_state,
2985
+ record_test_verdict,
2986
+ )
2987
+
2988
+ self._record_work("work-silent")
2989
+ self._record_fanout_leg(
2990
+ "leg-gtk-silent", parent_id="work-silent", capabilities=("gtk",),
2991
+ )
2992
+ self._record_fanout_leg(
2993
+ "leg-win-silent", parent_id="work-silent", capabilities=("windows",),
2994
+ )
2995
+ record_test_verdict(
2996
+ assignment_id="work-silent", test_state="running",
2997
+ test_reason=(
2998
+ "[[smoke-fanout:leg-gtk-silent=gtk,leg-win-silent=windows]]\n"
2999
+ "Test stage running across 2 capability-partition leg(s) "
3000
+ "(#3182): [gtk]; [windows]."
3001
+ ),
3002
+ )
3003
+
3004
+ failure = Transition(
3005
+ assignment_id="leg-win-silent", machine_name="dell64",
3006
+ repo_name="api", issue_number=42, event=EVENT_FAILURE,
3007
+ exit_code=None,
3008
+ )
3009
+ failure_record = {
3010
+ "repo_github": "acme/api", "type": "smoke",
3011
+ "review_of_assignment_id": "work-silent",
3012
+ "issue_title": "[smoke:windows] Fix thing",
3013
+ }
3014
+ failure_entry = {
3015
+ "started_at": 1000.0, "finished_at": 1010.0,
3016
+ "branch": "issue-42-fix-thing", "log_path": None,
3017
+ }
3018
+ with (
3019
+ patch("coord.notify.post_completion"),
3020
+ patch("coord.notify.post_failure"),
3021
+ patch("coord.notify.mark_notified"),
3022
+ patch("coord.notify._capture_cost"),
3023
+ patch("coord.notify._capture_smoke_tests"),
3024
+ patch("coord.notify._capture_completion_summary"),
3025
+ patch("coord.notify._capture_claude_session_id"),
3026
+ ):
3027
+ post_transition(failure, failure_record, failure_entry)
3028
+
3029
+ assert load_assignment_test_state("leg-win-silent") is None, (
3030
+ "a leg that died with no exit status and no reason must clear "
3031
+ "for automatic retry, never fail the leg outright — got "
3032
+ f"{load_assignment_test_state('leg-win-silent')!r}"
3033
+ )
3034
+ assert "#1605" in (load_assignment_test_reason("leg-win-silent") or "")
3035
+
3036
+ conn = get_connection()
3037
+ row = conn.execute(
3038
+ "SELECT test_state, test_reason FROM assignments WHERE assignment_id=?",
3039
+ ("work-silent",),
3040
+ ).fetchone()
3041
+ assert row["test_state"] == "running", (
3042
+ "a silent #1605 leg death must hold the fan-out's aggregate at "
3043
+ "'running' — not everyone has reported in yet — rather than "
3044
+ f"fold a synthetic failure into it — got {row['test_state']!r}"
3045
+ )
3046
+ assert "environmental" in (row["test_reason"] or "").lower(), (
3047
+ f"expected the #3315 environmental tally — got {row['test_reason']!r}"
3048
+ )
3049
+
2957
3050
  def test_operator_cancelled_leg_does_not_fail_the_parent_while_sibling_runs(
2958
3051
  self, coord_db,
2959
3052
  ) -> None:
@@ -3045,13 +3138,19 @@ class TestSmokeCompletionVerdict:
3045
3138
  f"folded in as a verdict; got {row['test_state']!r}"
3046
3139
  )
3047
3140
 
3048
- def test_operator_cancelled_leg_fails_the_parent_when_no_sibling_survives(
3141
+ def test_operator_cancelled_leg_clears_for_retry_when_no_sibling_survives(
3049
3142
  self, coord_db,
3050
3143
  ) -> None:
3051
- """The guard only protects a LIVE/passed sibling. When every other
3052
- leg is already a non-verdict terminal row too (nothing left to
3144
+ """The sibling guard only protects a LIVE/passed sibling. When every
3145
+ other leg is already a non-verdict terminal row too (nothing left to
3053
3146
  protect), an operator cancellation falls through to the ordinary
3054
- classification unchanged."""
3147
+ classification — where #3705 still treats it as silent: a `coord
3148
+ stop` leaves no `failure_reason` text for `classify_failure` to scan,
3149
+ and the non-zero exit status it leaves behind is the OPERATOR'S kill
3150
+ signal (a SIGTERM'd process group), never a verdict on the code under
3151
+ test. So the partition is cleared for a bounded automatic retry
3152
+ exactly like the sibling-protection branch does, rather than recorded
3153
+ as a work failure with nothing actionable behind it."""
3055
3154
  from coord.notify import EVENT_FAILURE, Transition, post_transition # noqa: PLC0415
3056
3155
  from coord.state import ( # noqa: PLC0415
3057
3156
  get_connection,
@@ -3074,7 +3173,7 @@ class TestSmokeCompletionVerdict:
3074
3173
 
3075
3174
  cancel = Transition(
3076
3175
  assignment_id="leg-macos-solo", machine_name="macmini", repo_name="api",
3077
- issue_number=42, event=EVENT_FAILURE, exit_code=None,
3176
+ issue_number=42, event=EVENT_FAILURE, exit_code=-15,
3078
3177
  )
3079
3178
  cancel_record = {
3080
3179
  "repo_github": "acme/api", "type": "smoke",
@@ -3097,13 +3196,22 @@ class TestSmokeCompletionVerdict:
3097
3196
  ):
3098
3197
  post_transition(cancel, cancel_record, cancel_entry)
3099
3198
 
3100
- assert load_assignment_test_state("leg-macos-solo") == "failed"
3199
+ # No structured or free-text reason survives a `coord stop` cancel,
3200
+ # and its SIGTERM exit status says nothing about the code, so the
3201
+ # fall-through classification treats this exactly like any other
3202
+ # silent #1605 death: clear the leg for a bounded automatic retry
3203
+ # rather than fail it outright with nothing actionable.
3204
+ assert load_assignment_test_state("leg-macos-solo") is None
3101
3205
  conn = get_connection()
3102
3206
  row = conn.execute(
3103
- "SELECT test_state FROM assignments WHERE assignment_id=?",
3207
+ "SELECT test_state, test_reason FROM assignments WHERE assignment_id=?",
3104
3208
  ("work-cancel-solo",),
3105
3209
  ).fetchone()
3106
- assert row["test_state"] == "failed"
3210
+ assert row["test_state"] == "running", (
3211
+ "the fan-out aggregate must stay 'running' while the solo leg "
3212
+ f"is retried — got {row['test_state']!r}"
3213
+ )
3214
+ assert "environmental" in (row["test_reason"] or "").lower()
3107
3215
 
3108
3216
  def test_interactive_smoke_mode_not_auto_certified(
3109
3217
  self, coord_db