code-coordinator 0.5.661__tar.gz → 0.5.663__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (981) hide show
  1. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/confirm_test.py +38 -19
  5. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/db.py +22 -2
  6. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/merge_queue.py +49 -2
  7. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/notify.py +29 -5
  8. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/progress.py +24 -3
  9. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_fix_headless_review.py +40 -0
  10. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_db.py +5 -1
  11. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_merge_queue.py +103 -0
  12. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_notify.py +54 -0
  13. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_progress.py +54 -0
  14. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/.claude/commands/board.md +0 -0
  15. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/.claude/commands/complete-session.md +0 -0
  16. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/.claude/commands/coordinator.md +0 -0
  17. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/.githooks/_lib.sh +0 -0
  18. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/.githooks/post-checkout +0 -0
  19. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/.githooks/post-commit +0 -0
  20. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/.githooks/post-merge +0 -0
  21. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  22. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/.github/coord-ci-acceptance.yml +0 -0
  23. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/.github/workflows/auto-release.yml +0 -0
  24. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/.github/workflows/publish.yml +0 -0
  25. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/.github/workflows/test.yml +0 -0
  26. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/.gitignore +0 -0
  27. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/CLAUDE.md +0 -0
  28. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/GOAL.md +0 -0
  29. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/LICENSE +0 -0
  30. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/MANIFEST.in +0 -0
  31. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/README.md +0 -0
  32. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/code_coordinator.egg-info/SOURCES.txt +0 -0
  33. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/code_coordinator.egg-info/dependency_links.txt +0 -0
  34. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/code_coordinator.egg-info/entry_points.txt +0 -0
  35. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/code_coordinator.egg-info/requires.txt +0 -0
  36. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/code_coordinator.egg-info/scm_file_list.json +0 -0
  37. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/code_coordinator.egg-info/top_level.txt +0 -0
  38. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/__init__.py +0 -0
  39. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/_board_mapping.py +0 -0
  40. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/acceptance.py +0 -0
  41. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/acceptance_drivers.py +0 -0
  42. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/agent.py +0 -0
  43. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/agent_app.py +0 -0
  44. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/agent_update.py +0 -0
  45. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/agents/opencode/.gitignore +0 -0
  46. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/agents/opencode/agents/work.md +0 -0
  47. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/agents/opencode/routing.jsonc +0 -0
  48. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/app_drive.py +0 -0
  49. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/app_drive_daemon.py +0 -0
  50. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/approved_work.py +0 -0
  51. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/audit.py +0 -0
  52. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/auto_loop.py +0 -0
  53. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/backup.py +0 -0
  54. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/block_log.py +0 -0
  55. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/board_schema.py +0 -0
  56. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/board_service.py +0 -0
  57. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/board_wire.py +0 -0
  58. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/brain.py +0 -0
  59. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/branch_model.py +0 -0
  60. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/briefing_lessons.py +0 -0
  61. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/bug_intake.py +0 -0
  62. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/bugbash.py +0 -0
  63. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/cargo_cache.py +0 -0
  64. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/ci_fix.py +0 -0
  65. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/ci_github.py +0 -0
  66. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/ci_gitlab.py +0 -0
  67. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/ci_store.py +0 -0
  68. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/claim.py +0 -0
  69. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/claude_setup_token.py +0 -0
  70. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/cli.py +0 -0
  71. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/client.py +0 -0
  72. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/codegen.py +0 -0
  73. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/__init__.py +0 -0
  74. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/_common.py +0 -0
  75. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/acceptance.py +0 -0
  76. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/agent_ops.py +0 -0
  77. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/app_drive.py +0 -0
  78. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/audit.py +0 -0
  79. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/backup.py +0 -0
  80. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/bugbash.py +0 -0
  81. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/chat.py +0 -0
  82. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/ci.py +0 -0
  83. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/codegen.py +0 -0
  84. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/dispatch.py +0 -0
  85. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/dispatch_workers.py +0 -0
  86. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/dr.py +0 -0
  87. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/drive.py +0 -0
  88. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/drive_queue.py +0 -0
  89. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/gate_a.py +0 -0
  90. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/gates.py +0 -0
  91. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/issues.py +0 -0
  92. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/lifecycle.py +0 -0
  93. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/machine.py +0 -0
  94. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/merge.py +0 -0
  95. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/milestone.py +0 -0
  96. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/plan_followup.py +0 -0
  97. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/plans.py +0 -0
  98. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/portal.py +0 -0
  99. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/pr.py +0 -0
  100. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/release.py +0 -0
  101. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/repo.py +0 -0
  102. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/report.py +0 -0
  103. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/review.py +0 -0
  104. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/scorecard.py +0 -0
  105. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/sessions.py +0 -0
  106. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/setup.py +0 -0
  107. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/smoke.py +0 -0
  108. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/status.py +0 -0
  109. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/store_migrate.py +0 -0
  110. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/terminal.py +0 -0
  111. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/test_gate.py +0 -0
  112. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/commands/tui.py +0 -0
  113. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/comments.py +0 -0
  114. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/config.py +0 -0
  115. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/config_reload.py +0 -0
  116. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/conflict_fix.py +0 -0
  117. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/dao.py +0 -0
  118. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/dashboard/__init__.py +0 -0
  119. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/dashboard/fixture.py +0 -0
  120. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/dashboard/index.html +0 -0
  121. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/dashboard/reports.html +0 -0
  122. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/dashboard/server.py +0 -0
  123. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/dashboard/terminal.py +0 -0
  124. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/dead_end.py +0 -0
  125. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/decomposition_chat.py +0 -0
  126. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/README.md +0 -0
  127. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-agent.service +0 -0
  128. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-backup.service +0 -0
  129. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-backup.timer +0 -0
  130. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-db-backup.service +0 -0
  131. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-db-backup.sh +0 -0
  132. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-db-backup.timer +0 -0
  133. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-dr-verify.service +0 -0
  134. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-dr-verify.timer +0 -0
  135. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-drive-queue.service +0 -0
  136. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-drive-queue.timer +0 -0
  137. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-failure-notify.service +0 -0
  138. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-fleet-watchdog.service +0 -0
  139. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  140. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-nightly-smoke.service +0 -0
  141. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-nightly-smoke.timer +0 -0
  142. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-notify.service +0 -0
  143. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-notify.timer +0 -0
  144. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-release-propagate.service +0 -0
  145. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-release-propagate.timer +0 -0
  146. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-release-window.service +0 -0
  147. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-release-window.timer +0 -0
  148. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-serve.service +0 -0
  149. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-web-dist-build.service +0 -0
  150. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-web-dist-build.timer +0 -0
  151. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy/coord-web.service +0 -0
  152. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy_manifest.py +0 -0
  153. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deploy_units.py +0 -0
  154. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deprecation_telemetry.py +0 -0
  155. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/deps.py +0 -0
  156. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/diagnose.py +0 -0
  157. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/dirlink.py +0 -0
  158. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/dispatch.py +0 -0
  159. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/dispatch_liveness.py +0 -0
  160. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/dist_name.py +0 -0
  161. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/dr_promote.py +0 -0
  162. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/dr_verify.py +0 -0
  163. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/drive.py +0 -0
  164. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/drive_queue.py +0 -0
  165. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/drive_sessions_snapshot.py +0 -0
  166. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/drive_state.py +0 -0
  167. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/events.py +0 -0
  168. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/failure_class.py +0 -0
  169. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/failure_classifier.py +0 -0
  170. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/filelock.py +0 -0
  171. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/fleet_config_health.py +0 -0
  172. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/forge_availability.py +0 -0
  173. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/freshness.py +0 -0
  174. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/gate_a.py +0 -0
  175. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/gate_b.py +0 -0
  176. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/gate_snapshot.py +0 -0
  177. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/gates.py +0 -0
  178. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/gen_board_fixture.py +0 -0
  179. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/github_ops.py +0 -0
  180. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/github_throttle.py +0 -0
  181. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/goal.py +0 -0
  182. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/graph_health.py +0 -0
  183. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/gtk_native_driver.py +0 -0
  184. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/__init__.py +0 -0
  185. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/aggregate.py +0 -0
  186. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/__init__.py +0 -0
  187. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/_ci_pin.py +0 -0
  188. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/agent_install.py +0 -0
  189. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/cargo_targets.py +0 -0
  190. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/claude_binary.py +0 -0
  191. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/config_drift.py +0 -0
  192. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  193. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/coord_web_ci_pin.py +0 -0
  194. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/deploy_lane_facts.py +0 -0
  195. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/disk.py +0 -0
  196. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/fleet_board.py +0 -0
  197. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  198. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/fleet_phantom.py +0 -0
  199. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/fleet_unit_drift.py +0 -0
  200. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/graph.py +0 -0
  201. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/graphify_cli.py +0 -0
  202. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/gui_lane_preflight.py +0 -0
  203. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/index_lock.py +0 -0
  204. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/issues_sync_staleness.py +0 -0
  205. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/local_machine_identity.py +0 -0
  206. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/plan_usage.py +0 -0
  207. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/pr_churn.py +0 -0
  208. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/release_cordon.py +0 -0
  209. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/repo_state.py +0 -0
  210. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/spawned_coord.py +0 -0
  211. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/stalled_pipeline.py +0 -0
  212. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/timer_active.py +0 -0
  213. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/toolchain.py +0 -0
  214. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/unit_drift.py +0 -0
  215. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/unit_enablement.py +0 -0
  216. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/wedged_drive_queue.py +0 -0
  217. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/checks/worktrees.py +0 -0
  218. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/cli.py +0 -0
  219. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/context.py +0 -0
  220. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/fleet_snapshot.py +0 -0
  221. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/models.py +0 -0
  222. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/pypi.py +0 -0
  223. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/registry.py +0 -0
  224. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/render.py +0 -0
  225. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/health/units.py +0 -0
  226. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/hooks.py +0 -0
  227. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/housekeeping.py +0 -0
  228. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/interactive.py +0 -0
  229. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/invariant_alarms.py +0 -0
  230. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/issue_store.py +0 -0
  231. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/issues_sync_status.py +0 -0
  232. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/key_spec.py +0 -0
  233. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/liveness_auditor.py +0 -0
  234. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/mac_native_driver.py +0 -0
  235. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/machine_fault.py +0 -0
  236. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/machine_metrics.py +0 -0
  237. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/machine_onboard.py +0 -0
  238. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/machine_pause.py +0 -0
  239. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/machine_stats.py +0 -0
  240. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/milestone_chat.py +0 -0
  241. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/milestone_dispatch.py +0 -0
  242. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/milestone_gate.py +0 -0
  243. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/milestone_order.py +0 -0
  244. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/mock_author.py +0 -0
  245. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/models.py +0 -0
  246. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/native_fs_wait.py +0 -0
  247. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/native_pixels.py +0 -0
  248. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/network.py +0 -0
  249. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/new_issue_chat.py +0 -0
  250. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/nightly_runner.py +0 -0
  251. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/nightly_smoke.py +0 -0
  252. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/nightly_status.py +0 -0
  253. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/nightly_store.py +0 -0
  254. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/notifier/__init__.py +0 -0
  255. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/notifier/baseline.py +0 -0
  256. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/notifier/cli.py +0 -0
  257. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/notifier/collect.py +0 -0
  258. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/notifier/digest.py +0 -0
  259. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/notifier/models.py +0 -0
  260. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/notifier/predicate.py +0 -0
  261. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/notifier/service.py +0 -0
  262. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/notifier/store.py +0 -0
  263. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/notifier/transport.py +0 -0
  264. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/openapi.py +0 -0
  265. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/overlap_fence.py +0 -0
  266. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/overlap_predict.py +0 -0
  267. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/parentage.py +0 -0
  268. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/parentage_github.py +0 -0
  269. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/pipeline.py +0 -0
  270. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/plan_parser.py +0 -0
  271. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/plans.py +0 -0
  272. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/platform_paths.py +0 -0
  273. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/portal_bridge.py +0 -0
  274. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/portal_store.py +0 -0
  275. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/portal_sync.py +0 -0
  276. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/pr_body_lint.py +0 -0
  277. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/prereqs.py +0 -0
  278. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/prereview_gate.py +0 -0
  279. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/providers/__init__.py +0 -0
  280. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/providers/base.py +0 -0
  281. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/providers/claude.py +0 -0
  282. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/providers/claude_pty.py +0 -0
  283. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/providers/opencode.py +0 -0
  284. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/queue_diagnose.py +0 -0
  285. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/reconcile.py +0 -0
  286. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/reconcile_tick.py +0 -0
  287. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/refine_chat.py +0 -0
  288. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/release_cordon.py +0 -0
  289. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/release_gate.py +0 -0
  290. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/release_propagate.py +0 -0
  291. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/release_verify.py +0 -0
  292. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/release_window.py +0 -0
  293. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/repo_dormancy.py +0 -0
  294. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/repo_edit.py +0 -0
  295. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/repo_onboard.py +0 -0
  296. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/reports.py +0 -0
  297. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/rest_schema.py +0 -0
  298. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/restart_cmd.py +0 -0
  299. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/revalidate.py +0 -0
  300. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/review.py +0 -0
  301. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/scorecard.py +0 -0
  302. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/self_health.py +0 -0
  303. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/serve_app.py +0 -0
  304. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/shell_exec_wrap.py +0 -0
  305. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  306. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  307. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  308. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  309. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  310. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/skills/portal-followup/SKILL.md +0 -0
  311. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/skills/release-now/SKILL.md +0 -0
  312. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  313. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  314. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/skills/update-issue/SKILL.md +0 -0
  315. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/smoke.py +0 -0
  316. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/smoke_tags.py +0 -0
  317. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/spend_ceiling.py +0 -0
  318. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/split_work.py +0 -0
  319. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/sql.py +0 -0
  320. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/stage_projection.py +0 -0
  321. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/state.py +0 -0
  322. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/store_migrate.py +0 -0
  323. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/store_parity.py +0 -0
  324. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/templates/deploy-cloudflare.node.yml +0 -0
  325. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/test_author.py +0 -0
  326. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/test_chat.py +0 -0
  327. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/test_orchestrator.py +0 -0
  328. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/test_report.py +0 -0
  329. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/tui_pty_driver.py +0 -0
  330. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/tui_release.py +0 -0
  331. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/uat_checks.py +0 -0
  332. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/upstream_gaps.py +0 -0
  333. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/usage.py +0 -0
  334. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/usage_limits.py +0 -0
  335. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/usage_rollup.py +0 -0
  336. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/win_native_bridge.py +0 -0
  337. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/win_native_driver.py +0 -0
  338. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coord/worker_events.py +0 -0
  339. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/coordinator.example.yml +0 -0
  340. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-agent.service +0 -0
  341. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-backup.service +0 -0
  342. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-backup.timer +0 -0
  343. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-db-backup.service +0 -0
  344. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-db-backup.sh +0 -0
  345. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-db-backup.timer +0 -0
  346. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-dr-verify.service +0 -0
  347. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-dr-verify.timer +0 -0
  348. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-drive-queue.service +0 -0
  349. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-drive-queue.timer +0 -0
  350. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-failure-notify.service +0 -0
  351. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-failure-notify.sh +0 -0
  352. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-fleet-watchdog.service +0 -0
  353. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-fleet-watchdog.timer +0 -0
  354. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-nightly-smoke.service +0 -0
  355. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-nightly-smoke.timer +0 -0
  356. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-notify.service +0 -0
  357. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-notify.timer +0 -0
  358. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-release-propagate.service +0 -0
  359. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-release-propagate.timer +0 -0
  360. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-release-window.service +0 -0
  361. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-release-window.timer +0 -0
  362. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-serve.service +0 -0
  363. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-web-dist-build.service +0 -0
  364. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-web-dist-build.sh +0 -0
  365. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-web-dist-build.timer +0 -0
  366. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-web-rollback.sh +0 -0
  367. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/coord-web.service +0 -0
  368. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/deploy/node-shim.sh +0 -0
  369. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/ADR_COORD_TUI_CI.md +0 -0
  370. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  371. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/ADR_COORD_WEB_CI.md +0 -0
  372. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/ADR_COORD_WEB_DIST.md +0 -0
  373. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  374. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/AGENT_OPERATIONS.md +0 -0
  375. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/ARCHITECTURE.md +0 -0
  376. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/ARCH_SECURITY_GATES.md +0 -0
  377. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/COCKPIT.md +0 -0
  378. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/CONTROL_CENTER.md +0 -0
  379. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/COST_DISCIPLINE.md +0 -0
  380. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/CROSS_PLATFORM.md +0 -0
  381. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/CUSTOMER_FACING_APPS.md +0 -0
  382. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/CUSTOMER_PORTAL.md +0 -0
  383. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/DATA_STORE_SELECTION.md +0 -0
  384. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/DISASTER_RECOVERY.md +0 -0
  385. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/DRIVE_QUEUE.md +0 -0
  386. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/EPHEMERAL_WORKERS.md +0 -0
  387. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/FORGE_MIGRATION.md +0 -0
  388. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/GRAPHIFY_SETUP.md +0 -0
  389. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/ISSUE_GUIDANCE.md +0 -0
  390. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/MAC_MINI.md +0 -0
  391. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  392. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/NOTIFIER.md +0 -0
  393. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/OPENCODE_VERIFICATION.md +0 -0
  394. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/OPERATING_GOTCHAS.md +0 -0
  395. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/OPERATOR_GUIDES.md +0 -0
  396. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/ORACLE_LOOP.md +0 -0
  397. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/PHONE_WEBAPP.md +0 -0
  398. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/PIPELINE_V2.md +0 -0
  399. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/PLATFORM_EVOLUTION.md +0 -0
  400. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/SECOND_BACKEND.md +0 -0
  401. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/STORE_SERVICE.md +0 -0
  402. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  403. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/WEB_CONTROL_CENTER.md +0 -0
  404. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/WSL_WINDOWS_WORKER.md +0 -0
  405. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/mocks/web/README.md +0 -0
  406. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/mocks/web/_tokens.css +0 -0
  407. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/mocks/web/issue-detail.html +0 -0
  408. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/mocks/web/pipeline-narrow.html +0 -0
  409. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/docs/mocks/web/pipeline-wide.html +0 -0
  410. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/graphify-out/.gitignore +0 -0
  411. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/install-agent.sh +0 -0
  412. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/pyproject.toml +0 -0
  413. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/audit_review_verdict_overrides.py +0 -0
  414. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  415. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/azure-workers/build-worker-image.sh +0 -0
  416. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/azure-workers/coordinator-machine.py +0 -0
  417. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/azure-workers/dr-down.sh +0 -0
  418. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/azure-workers/dr-up.sh +0 -0
  419. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/azure-workers/epic-down.sh +0 -0
  420. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/azure-workers/epic-up.sh +0 -0
  421. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/azure-workers/preflight.sh +0 -0
  422. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/azure-workers/provision-server.sh +0 -0
  423. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/azure-workers/provision-worker.sh +0 -0
  424. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  425. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  426. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/azure-workers/throwaway-vm.sh +0 -0
  427. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/azure-workers/verify-github-token.sh +0 -0
  428. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/check_gh_argv_containment.py +0 -0
  429. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/codegen.py +0 -0
  430. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/comment_cruft.py +0 -0
  431. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/coord-test-runner.sh +0 -0
  432. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  433. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  434. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  435. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  436. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/coord-venv-rollback.sh +0 -0
  437. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/drive-batch.sh +0 -0
  438. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/extract-coord-tui.sh +0 -0
  439. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/fleet_watchdog.py +0 -0
  440. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/gen_board_fixture.py +0 -0
  441. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/gen_mock_index.py +0 -0
  442. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/lib/provision-core.sh +0 -0
  443. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/next_release_tag.py +0 -0
  444. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/provision-machine.sh +0 -0
  445. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/run_tests_in_populated_home.sh +0 -0
  446. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/run_tests_without_gh.sh +0 -0
  447. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/setup-macmini.sh +0 -0
  448. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/smoke_437_interactive.py +0 -0
  449. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/verify-provision-noble.sh +0 -0
  450. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/verify_878_review_capture.py +0 -0
  451. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/verify_release_published.py +0 -0
  452. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/scripts/verify_release_wheel.py +0 -0
  453. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/setup.cfg +0 -0
  454. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/SMOKE_SET.md +0 -0
  455. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/__init__.py +0 -0
  456. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/acceptance/ms-37/conftest.py +0 -0
  457. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/acceptance/ms-37/contract.md +0 -0
  458. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/acceptance/ms-37/manifest.yml +0 -0
  459. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  460. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  461. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/acceptance/ms-51/contract.md +0 -0
  462. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  463. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  464. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/acceptance/ms-51/manifest.yml +0 -0
  465. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  466. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/acceptance/ms-51/tsconfig.json +0 -0
  467. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  468. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/backends.py +0 -0
  469. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/conftest.py +0 -0
  470. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/board-pipeline-basic.json +0 -0
  471. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  472. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  473. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  474. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  475. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/playwright/all_pass.json +0 -0
  476. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  477. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/playwright/mixed_fail.json +0 -0
  478. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  479. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  480. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/playwright/skip.json +0 -0
  481. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/playwright/truncated.json +0 -0
  482. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  483. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  484. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  485. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  486. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
  487. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  488. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  489. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  490. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  491. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_acceptance.py +0 -0
  492. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_acceptance_drivers.py +0 -0
  493. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent.py +0 -0
  494. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_api_error.py +0 -0
  495. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_app.py +0 -0
  496. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_branch_base.py +0 -0
  497. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_branch_capture.py +0 -0
  498. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_config_free_1712.py +0 -0
  499. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_deploy_units_endpoint.py +0 -0
  500. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_dirty_worktree.py +0 -0
  501. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  502. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_graceful_shutdown_3649.py +0 -0
  503. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_graph_refresh.py +0 -0
  504. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_graph_self_heal.py +0 -0
  505. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_health_h3.py +0 -0
  506. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_idle_restart.py +0 -0
  507. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_push_failure.py +0 -0
  508. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_reap.py +0 -0
  509. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_repos_and_pull.py +0 -0
  510. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_restart_services_endpoint.py +0 -0
  511. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_skills_self_heal.py +0 -0
  512. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_startup_diagnostics.py +0 -0
  513. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_update.py +0 -0
  514. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_update_bluegreen.py +0 -0
  515. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_usage_limit.py +0 -0
  516. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_agent_zero_commit.py +0 -0
  517. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_ambient_home_isolation.py +0 -0
  518. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_app_drive.py +0 -0
  519. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_approve_capability_reroute_3241.py +0 -0
  520. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_approve_dependency_busy_2804.py +0 -0
  521. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_approve_reject_plan.py +0 -0
  522. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_approve_usage_gate.py +0 -0
  523. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_approved_work_2532.py +0 -0
  524. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_approved_work_2996.py +0 -0
  525. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_assignment_already_recorded_daemon.py +0 -0
  526. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_audit_log.py +0 -0
  527. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_audit_outcome.py +0 -0
  528. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_audit_query.py +0 -0
  529. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_auto_loop.py +0 -0
  530. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_auto_release_publish_2035.py +0 -0
  531. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_backend_selection.py +0 -0
  532. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_backup.py +0 -0
  533. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_base_checkout_restore.py +0 -0
  534. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_block_log.py +0 -0
  535. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_board_cap_762.py +0 -0
  536. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_board_fixture.py +0 -0
  537. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_board_nightly_status.py +0 -0
  538. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_board_read_path.py +0 -0
  539. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_board_schema.py +0 -0
  540. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_board_service.py +0 -0
  541. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_board_state.py +0 -0
  542. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_board_wire.py +0 -0
  543. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_brain.py +0 -0
  544. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_branch_model.py +0 -0
  545. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_briefing_lessons.py +0 -0
  546. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_bug_intake.py +0 -0
  547. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_bugbash.py +0 -0
  548. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_build_worker_image_env_update.py +0 -0
  549. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cargo_cache.py +0 -0
  550. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_check_gh_argv_containment.py +0 -0
  551. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_ci_acceptance_gate_1950.py +0 -0
  552. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_ci_fix.py +0 -0
  553. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_ci_github.py +0 -0
  554. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_ci_gitlab.py +0 -0
  555. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_ci_parity_2091.py +0 -0
  556. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_ci_store.py +0 -0
  557. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_claim.py +0 -0
  558. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_claude_md_budget.py +0 -0
  559. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_claude_setup_token.py +0 -0
  560. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_acceptance.py +0 -0
  561. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_assign.py +0 -0
  562. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  563. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_assign_interactive_remote.py +0 -0
  564. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_assign_provider.py +0 -0
  565. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  566. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_audit.py +0 -0
  567. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_chat_continue.py +0 -0
  568. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_ci.py +0 -0
  569. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_codegen.py +0 -0
  570. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_decide.py +0 -0
  571. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_diagnose_capability_rules.py +0 -0
  572. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_diagnose_config_provenance.py +0 -0
  573. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_diagnose_forge_availability.py +0 -0
  574. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_diagnose_graph.py +0 -0
  575. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_diagnose_self.py +0 -0
  576. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_diagnose_test_coverage.py +0 -0
  577. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_doctor.py +0 -0
  578. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_doctor_config_free_1801.py +0 -0
  579. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  580. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  581. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_drive.py +0 -0
  582. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_drive_queue.py +0 -0
  583. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_escalate.py +0 -0
  584. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_gate_a.py +0 -0
  585. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_inject_board_less.py +0 -0
  586. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_install_drift.py +0 -0
  587. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_install_skills.py +0 -0
  588. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_issue_close_wrong_repo.py +0 -0
  589. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_issue_comment.py +0 -0
  590. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_issue_create_label.py +0 -0
  591. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_issue_reopen.py +0 -0
  592. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_issue_view_list.py +0 -0
  593. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_issues.py +0 -0
  594. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_merge.py +0 -0
  595. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_milestone_assign.py +0 -0
  596. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_milestone_capture.py +0 -0
  597. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_milestone_chat_add_child.py +0 -0
  598. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_milestone_dispatch.py +0 -0
  599. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_milestone_gate_b.py +0 -0
  600. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_milestone_gate_c.py +0 -0
  601. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_milestone_order.py +0 -0
  602. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  603. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_milestone_ship.py +0 -0
  604. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_network.py +0 -0
  605. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_new_issue_chat.py +0 -0
  606. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_plans.py +0 -0
  607. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_portal.py +0 -0
  608. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_pr.py +0 -0
  609. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_pull_artifact.py +0 -0
  610. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_queue.py +0 -0
  611. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_reattach_sessions.py +0 -0
  612. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_refine_board.py +0 -0
  613. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_release_preflight.py +0 -0
  614. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_release_propagate.py +0 -0
  615. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_release_window.py +0 -0
  616. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_repo_2220.py +0 -0
  617. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  618. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_scorecard.py +0 -0
  619. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_serve_store_backend_3084.py +0 -0
  620. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_set_review_findings.py +0 -0
  621. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_smoke_nightly.py +0 -0
  622. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_smoke_nightly_sweep.py +0 -0
  623. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_status_advisory_terminal.py +0 -0
  624. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_status_contested_tag.py +0 -0
  625. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_status_invariant_alarms.py +0 -0
  626. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_status_machine_fault.py +0 -0
  627. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_status_merge_queue.py +0 -0
  628. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_status_nightly.py +0 -0
  629. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_status_provider.py +0 -0
  630. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_status_retried_3340.py +0 -0
  631. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_status_review_finalizing.py +0 -0
  632. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_status_supervisor_3366.py +0 -0
  633. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_status_test_failed_tag.py +0 -0
  634. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_status_usage_limit.py +0 -0
  635. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_sync_comments_873.py +0 -0
  636. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_test_plan.py +0 -0
  637. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_track.py +0 -0
  638. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_tui_update.py +0 -0
  639. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cli_wait.py +0 -0
  640. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_client.py +0 -0
  641. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_client_base_install.py +0 -0
  642. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_client_config_cache_atomic_3052.py +0 -0
  643. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_client_resource_migration_1946.py +0 -0
  644. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_commands_common.py +0 -0
  645. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_comment_cruft.py +0 -0
  646. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_comments.py +0 -0
  647. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_completion_summary.py +0 -0
  648. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_config.py +0 -0
  649. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_config_acceptance.py +0 -0
  650. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_config_audit.py +0 -0
  651. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_config_drift_check.py +0 -0
  652. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_config_effective.py +0 -0
  653. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_config_prereview_gate.py +0 -0
  654. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_config_pricing.py +0 -0
  655. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  656. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_config_usage_gate.py +0 -0
  657. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_confirm_test.py +0 -0
  658. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_conflict_fix.py +0 -0
  659. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_conflict_fix_semantic.py +0 -0
  660. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  661. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_coord_test.py +0 -0
  662. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  663. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_coord_test_runner_baseline.py +0 -0
  664. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_coord_test_runner_populated_home.py +0 -0
  665. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_coord_test_runner_routing.py +0 -0
  666. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_coord_test_runner_toolchain.py +0 -0
  667. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_coord_uat.py +0 -0
  668. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_coord_web_sse_restart_live.py +0 -0
  669. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_coordinator_machine.py +0 -0
  670. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_cross_platform_imports.py +0 -0
  671. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dao.py +0 -0
  672. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dashboard.py +0 -0
  673. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dashboard_api.py +0 -0
  674. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dashboard_fixture.py +0 -0
  675. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dashboard_reports.py +0 -0
  676. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dashboard_server.py +0 -0
  677. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dashboard_terminal.py +0 -0
  678. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dashboard_terminal_live.py +0 -0
  679. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dead_end.py +0 -0
  680. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_decomposition_chat.py +0 -0
  681. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_deploy_coord_db_backup.py +0 -0
  682. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_deploy_coord_web_dist.py +0 -0
  683. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_deploy_coord_web_rollback.py +0 -0
  684. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_deploy_db_backup_unit.py +0 -0
  685. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_deploy_drive_queue_unit.py +0 -0
  686. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_deploy_failure_notify_unit.py +0 -0
  687. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_deploy_manifest.py +0 -0
  688. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_deploy_notify_unit.py +0 -0
  689. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_deploy_units_lane.py +0 -0
  690. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_deploy_web_unit.py +0 -0
  691. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_deprecation_telemetry.py +0 -0
  692. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_deps.py +0 -0
  693. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_diagnose.py +0 -0
  694. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dirlink.py +0 -0
  695. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dispatch.py +0 -0
  696. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dispatch_liveness.py +0 -0
  697. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dispatch_target_validation.py +0 -0
  698. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dispatch_workers.py +0 -0
  699. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dist_name.py +0 -0
  700. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_done_housekeeping.py +0 -0
  701. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dr_azure_scripts.py +0 -0
  702. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dr_promote.py +0 -0
  703. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_dr_verify.py +0 -0
  704. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_drive.py +0 -0
  705. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_drive_machine_fault.py +0 -0
  706. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_drive_queue.py +0 -0
  707. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_drive_queue_blocked_rendering.py +0 -0
  708. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_drive_queue_launch_argv.py +0 -0
  709. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_drive_queue_max_parallel_config.py +0 -0
  710. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  711. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_drive_queue_roll_pending.py +0 -0
  712. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  713. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_drive_sessions_snapshot.py +0 -0
  714. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_drive_state.py +0 -0
  715. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_drive_tmux.py +0 -0
  716. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_epic_up_capability_detection.py +0 -0
  717. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  718. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_epic_up_image_provenance.py +0 -0
  719. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_errors.py +0 -0
  720. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_events.py +0 -0
  721. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_failure_class.py +0 -0
  722. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_failure_classifier.py +0 -0
  723. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_filelock.py +0 -0
  724. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  725. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_fix_escalation_classifier.py +0 -0
  726. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_fix_of_force_override.py +0 -0
  727. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_fleet_config_health.py +0 -0
  728. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_fleet_health_probes.py +0 -0
  729. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_fleet_health_snapshot.py +0 -0
  730. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_fleet_watchdog.py +0 -0
  731. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_forge_availability.py +0 -0
  732. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_freshness.py +0 -0
  733. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_gate_a.py +0 -0
  734. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_gate_b.py +0 -0
  735. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_gate_snapshot_staleness.py +0 -0
  736. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_gates.py +0 -0
  737. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  738. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_gen_mock_index.py +0 -0
  739. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_generated_rust_fixture.py +0 -0
  740. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_generated_rust_requests.py +0 -0
  741. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_generated_types_fixture.py +0 -0
  742. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_github_ops.py +0 -0
  743. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_github_throttle.py +0 -0
  744. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_goal.py +0 -0
  745. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_graph_health.py +0 -0
  746. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_graph_selfheal_absent_2237.py +0 -0
  747. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_gtk_native_driver.py +0 -0
  748. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_handoff.py +0 -0
  749. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_checks.py +0 -0
  750. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_cli.py +0 -0
  751. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_cli_graph.py +0 -0
  752. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_config.py +0 -0
  753. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_context.py +0 -0
  754. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_coord_tui_ci_pin.py +0 -0
  755. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_coord_web_ci_pin.py +0 -0
  756. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_deploy_lane_facts.py +0 -0
  757. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_fix.py +0 -0
  758. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_incident_regression.py +0 -0
  759. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_issues_sync_staleness.py +0 -0
  760. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_pr_churn.py +0 -0
  761. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_pypi.py +0 -0
  762. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_registry.py +0 -0
  763. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_release_cordon_probe.py +0 -0
  764. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_timer_active.py +0 -0
  765. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_toolchain.py +0 -0
  766. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_unit_drift.py +0 -0
  767. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_unit_enablement.py +0 -0
  768. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_health_wedged_drive_queue.py +0 -0
  769. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_hooks.py +0 -0
  770. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_housekeeping.py +0 -0
  771. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_human_attended_437.py +0 -0
  772. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_init.py +0 -0
  773. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_install_agent_capabilities_3515.py +0 -0
  774. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_install_agent_venv_2911.py +0 -0
  775. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_install_agent_wsl_bridge_3515.py +0 -0
  776. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_integration.py +0 -0
  777. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_interactive.py +0 -0
  778. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_interactive_briefing_echo.py +0 -0
  779. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_interactive_pane_log_2541.py +0 -0
  780. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_interactive_prefill_state.py +0 -0
  781. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_interactive_session_relaunch.py +0 -0
  782. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_interactive_test_verdict_backstop.py +0 -0
  783. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_interactive_token_attribution.py +0 -0
  784. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_interactive_worktree.py +0 -0
  785. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_invariant_alarms.py +0 -0
  786. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_issue_store_seam.py +0 -0
  787. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_issues_sync_status.py +0 -0
  788. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_key_spec.py +0 -0
  789. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_liveness_auditor.py +0 -0
  790. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_liveness_notify.py +0 -0
  791. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_lock_contention_ratchet.py +0 -0
  792. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_mac_native_driver.py +0 -0
  793. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_machine_fault.py +0 -0
  794. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_machine_metrics.py +0 -0
  795. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_machine_onboard.py +0 -0
  796. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_machine_pause.py +0 -0
  797. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_machine_stats.py +0 -0
  798. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_merge_verification.py +0 -0
  799. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_merge_verify.py +0 -0
  800. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_milestone_chat.py +0 -0
  801. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_milestone_dispatch.py +0 -0
  802. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_milestone_gate.py +0 -0
  803. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_milestone_order.py +0 -0
  804. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_milestone_seam.py +0 -0
  805. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_mock_author.py +0 -0
  806. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_model_tiering.py +0 -0
  807. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_models.py +0 -0
  808. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_models_config_labels.py +0 -0
  809. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_models_pinned_1650.py +0 -0
  810. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_native_fs_wait.py +0 -0
  811. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_native_pixels.py +0 -0
  812. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_needs_attention.py +0 -0
  813. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_network.py +0 -0
  814. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_new_issue_chat.py +0 -0
  815. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_next_release_tag.py +0 -0
  816. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_nightly_runner.py +0 -0
  817. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_nightly_smoke.py +0 -0
  818. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_nightly_status.py +0 -0
  819. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_nightly_store.py +0 -0
  820. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_no_eligible_host_3600.py +0 -0
  821. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_node_shim.py +0 -0
  822. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_notifier_baseline.py +0 -0
  823. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_notifier_cli.py +0 -0
  824. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_notifier_collect.py +0 -0
  825. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_notifier_config.py +0 -0
  826. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_notifier_drive_seam.py +0 -0
  827. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_notifier_isolation.py +0 -0
  828. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_notifier_predicate.py +0 -0
  829. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_notifier_quiet_hours.py +0 -0
  830. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_notifier_service.py +0 -0
  831. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_notify_drain.py +0 -0
  832. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_openapi.py +0 -0
  833. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_operational_defaults.py +0 -0
  834. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_overlap_fence.py +0 -0
  835. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_overlap_predict.py +0 -0
  836. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_packaged_deploy_units.py +0 -0
  837. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_parentage.py +0 -0
  838. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_paste_landed.py +0 -0
  839. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  840. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_pipeline.py +0 -0
  841. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_plain_runner_smoke_3673.py +0 -0
  842. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_plan_followup_approve_plan_command.py +0 -0
  843. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_plan_followup_pr_command.py +0 -0
  844. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_plan_followup_review_command.py +0 -0
  845. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_plan_only.py +0 -0
  846. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_plan_parser.py +0 -0
  847. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_platform_paths.py +0 -0
  848. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_portal_bridge.py +0 -0
  849. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_portal_config.py +0 -0
  850. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_portal_store.py +0 -0
  851. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_portal_sync.py +0 -0
  852. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_pr_body_lint.py +0 -0
  853. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_prereqs.py +0 -0
  854. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_prereview_gate.py +0 -0
  855. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_production_db_guard.py +0 -0
  856. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_provider_seam.py +0 -0
  857. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_providers.py +0 -0
  858. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_providers_config_labels.py +0 -0
  859. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_providers_pty.py +0 -0
  860. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_provision_core.py +0 -0
  861. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_provision_machine.py +0 -0
  862. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_py_rust_mirror_inventory.py +0 -0
  863. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_quiet_hours.py +0 -0
  864. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_quiet_hours_store_2146.py +0 -0
  865. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_reap_merged_sessions.py +0 -0
  866. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_reap_stale_interactive_tick.py +0 -0
  867. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_reconcile.py +0 -0
  868. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_reconcile_branch.py +0 -0
  869. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_reconcile_completions.py +0 -0
  870. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  871. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_reconcile_merges.py +0 -0
  872. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_reconcile_no_agent_record.py +0 -0
  873. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_reconcile_tick.py +0 -0
  874. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_reconcile_usage_limit_done.py +0 -0
  875. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_refine_chat.py +0 -0
  876. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_release_cordon_2101.py +0 -0
  877. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  878. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_release_cordon_deadlock_2240.py +0 -0
  879. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  880. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_release_cordon_stuck_2490.py +0 -0
  881. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_release_gate.py +0 -0
  882. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_release_propagate.py +0 -0
  883. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_release_propagate_threshold.py +0 -0
  884. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_release_roll_between_legs_2854.py +0 -0
  885. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_release_roll_window_handoff.py +0 -0
  886. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_release_unified_1242.py +0 -0
  887. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_release_verify.py +0 -0
  888. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_release_window.py +0 -0
  889. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_remote_auto_prune.py +0 -0
  890. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_remote_interactive_reaper.py +0 -0
  891. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_repo_add.py +0 -0
  892. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_repo_dormancy.py +0 -0
  893. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_repo_edit_2220.py +0 -0
  894. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_repo_graph_fleet_2237.py +0 -0
  895. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_repo_max_parallel_3423.py +0 -0
  896. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_repo_onboard_2220.py +0 -0
  897. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_report_public_export.py +0 -0
  898. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_report_result_push.py +0 -0
  899. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_reports.py +0 -0
  900. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_restart_cmd.py +0 -0
  901. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_retry.py +0 -0
  902. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_retry_advisory_1606.py +0 -0
  903. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_retry_escalation_classify_3360.py +0 -0
  904. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_retry_type_1636.py +0 -0
  905. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_revalidate.py +0 -0
  906. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_review.py +0 -0
  907. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_review_end_review_without_verdict.py +0 -0
  908. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_review_parse_failure_diagnostic.py +0 -0
  909. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_review_reaffirm.py +0 -0
  910. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_review_state.py +0 -0
  911. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_review_verdict_backstop.py +0 -0
  912. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_review_verdict_override_audit.py +0 -0
  913. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_review_verdict_relay.py +0 -0
  914. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_review_zero_commits.py +0 -0
  915. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_scoped_review_wiring.py +0 -0
  916. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_scorecard.py +0 -0
  917. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_self_health.py +0 -0
  918. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_serve.py +0 -0
  919. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_serve_app.py +0 -0
  920. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_serve_app_board_trim.py +0 -0
  921. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_serve_rest_routes.py +0 -0
  922. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_session.py +0 -0
  923. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_slice_issue_attribution.py +0 -0
  924. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_smoke.py +0 -0
  925. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  926. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_smoke_live_checkout_restore.py +0 -0
  927. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_smoke_plain_runner_3673.py +0 -0
  928. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_smoke_workflow.py +0 -0
  929. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_spend_ceiling.py +0 -0
  930. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_spend_ceiling_coordinator.py +0 -0
  931. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_split.py +0 -0
  932. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_split_work.py +0 -0
  933. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_sql_dialect.py +0 -0
  934. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_sqlite_connect_ratchet.py +0 -0
  935. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_stage_projection.py +0 -0
  936. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_stale_busy_reviewer_697.py +0 -0
  937. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_stalled_pipeline.py +0 -0
  938. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_state.py +0 -0
  939. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_state_review_findings_daemon.py +0 -0
  940. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_status_fleet_footer.py +0 -0
  941. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_stop_1567.py +0 -0
  942. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_store_contract.py +0 -0
  943. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_store_migrate.py +0 -0
  944. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_stuck.py +0 -0
  945. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  946. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_terminal_command.py +0 -0
  947. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_test_author.py +0 -0
  948. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_test_chat.py +0 -0
  949. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_test_orchestrator.py +0 -0
  950. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_test_report.py +0 -0
  951. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_test_verdict_parsing.py +0 -0
  952. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_test_verdict_transcript_floor.py +0 -0
  953. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_text_io_encoding_audit.py +0 -0
  954. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_thin_client_board_audit.py +0 -0
  955. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_thin_client_config_load_1080.py +0 -0
  956. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_thin_client_daemon_routing_906.py +0 -0
  957. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_throwaway_vm.py +0 -0
  958. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_tmux_host.py +0 -0
  959. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_tmux_session.py +0 -0
  960. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_transcript_floor.py +0 -0
  961. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_tui_pty_driver.py +0 -0
  962. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_uat_checks.py +0 -0
  963. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_upstream_gaps.py +0 -0
  964. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_usage.py +0 -0
  965. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_usage_limits.py +0 -0
  966. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_usage_rollup.py +0 -0
  967. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_venv_live_install_2121.py +0 -0
  968. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_version_single_source.py +0 -0
  969. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_watch.py +0 -0
  970. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_win_native_bridge.py +0 -0
  971. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_win_native_driver.py +0 -0
  972. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  973. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_worker_env_venv_isolation.py +0 -0
  974. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_worker_events.py +0 -0
  975. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_worker_image_pin_sync.py +0 -0
  976. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_worker_safety.py +0 -0
  977. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_worker_test_scoping.py +0 -0
  978. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_worktree.py +0 -0
  979. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  980. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/tests/test_write_parity.py +0 -0
  981. {code_coordinator-0.5.661 → code_coordinator-0.5.663}/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.661
3
+ Version: 0.5.663
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.661
3
+ Version: 0.5.663
4
4
  Summary: Coordinate Claude Code workers across multiple machines and repos.
5
5
  Author-email: John Donaghy <johnfdonaghy@gmail.com>
6
6
  License-Expression: LicenseRef-FSL-1.1-MIT
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.661",
2
+ "tag": "0.5.663",
3
3
  "distance": 0,
4
- "node": "g1152ba357daaa2b42b64f3ba32ee103d459ff668",
4
+ "node": "g4fa82a0d22ef5481ff797449d2d357cd31981a6d",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-10-22"
@@ -788,6 +788,41 @@ class ConfirmationResult:
788
788
  return self.kind in INCONCLUSIVE_KINDS
789
789
 
790
790
 
791
+ def write_test_output_file(assignment_id: str, output: str) -> Path | None:
792
+ """Best-effort persist of *output* to ``COORD_DIR/test_output/<assignment_id>.txt``.
793
+
794
+ This is the one dedicated channel for quoting raw worker-/suite-authored
795
+ text back to a fix worker: ``coord fix`` (:mod:`coord.commands.plan_followup`)
796
+ prefers reading this file over every other evidence source, and —
797
+ critically — ``test_reason`` does not: that column is scanned by several
798
+ unanchored regex readers (:func:`coord.state.classify_failure` on every
799
+ ``test_state="failed"`` write, the smoke budget tallies in
800
+ :mod:`coord.smoke`) that must never see raw log prose, only the
801
+ coordinator's own one-line summaries. Anything longer than a headline
802
+ belongs here, not in ``test_reason``.
803
+
804
+ *assignment_id* is the parent **work** row's id (the one a fix leg is
805
+ spawned from), not a confirming/smoke transition's id — the same key
806
+ :func:`coord.commands.plan_followup.fix` reads back by.
807
+
808
+ A no-op, returning ``None``, when there is nothing to write or when the
809
+ write itself fails (a read-only ``COORD_DIR``, a full disk, ...); callers
810
+ treat this as best-effort and must never let it break verdict recording.
811
+ """
812
+ if not output:
813
+ return None
814
+ from coord.state import COORD_DIR # noqa: PLC0415
815
+
816
+ try:
817
+ test_output_dir = COORD_DIR / "test_output"
818
+ test_output_dir.mkdir(parents=True, exist_ok=True)
819
+ stored = test_output_dir / f"{assignment_id}.txt"
820
+ stored.write_text(output)
821
+ except OSError:
822
+ return None
823
+ return stored
824
+
825
+
791
826
  def write_confirmation_output(assignment_id: str, result: ConfirmationResult) -> Path | None:
792
827
  """Persist a confirmation run's captured output tail for the fix briefing (#2563).
793
828
 
@@ -802,29 +837,13 @@ def write_confirmation_output(assignment_id: str, result: ConfirmationResult) ->
802
837
  failing test names, no tracebacks, and had to re-derive the diagnosis the
803
838
  daemon already held in memory.
804
839
 
805
- *assignment_id* is the parent **work** row's id (the one the fix leg is
806
- spawned from), not the confirming smoke transition's id — same key
807
- :func:`coord.commands.plan_followup.fix` reads back by.
808
-
809
840
  A no-op, returning ``None``, when there is nothing to write (``KIND_OK``
810
841
  and ``KIND_SETUP`` both carry an empty ``.output`` — the former because
811
842
  nothing failed, the latter because no command ever ran) or when the write
812
- itself fails (a read-only ``COORD_DIR``, a full disk, ...); this must
813
- never break verdict recording, which is why the caller in
814
- :mod:`coord.notify` treats it as best-effort.
843
+ itself fails; see :func:`write_test_output_file`, which does the actual
844
+ work.
815
845
  """
816
- if not result.output:
817
- return None
818
- from coord.state import COORD_DIR # noqa: PLC0415
819
-
820
- try:
821
- test_output_dir = COORD_DIR / "test_output"
822
- test_output_dir.mkdir(parents=True, exist_ok=True)
823
- stored = test_output_dir / f"{assignment_id}.txt"
824
- stored.write_text(result.output)
825
- except OSError:
826
- return None
827
- return stored
846
+ return write_test_output_file(assignment_id, result.output)
828
847
 
829
848
 
830
849
  def confirmation_enabled(config=None) -> bool:
@@ -1155,7 +1155,16 @@ def retry_on_locked(
1155
1155
  # request-changes rates between workflow and single legs over a sample of
1156
1156
  # issues BEFORE anyone considers relaxing Test/Review for workflow legs —
1157
1157
  # a separate, later decision this column only supplies the data for.
1158
- _DB_SCHEMA_VERSION = 24
1158
+ #
1159
+ # #3754: bumped 24 -> 25 for the new `merge_queue.ci_rerun_budget_sha` column
1160
+ # appended to `_MIGRATE_ADD_COLUMNS` below — the `branch_head_sha` that
1161
+ # `ci_infra_reruns`/`ci_flaky_reruns`/`ci_unreadable_reruns`/`ci_flaky_pending`
1162
+ # were last accrued against, same pairing shape as #3263's `ci_seen_checks_
1163
+ # sha`. Lets a new commit landing while CI is still red (a ci-fix leg's own
1164
+ # push, most commonly) re-arm those budgets for its own fair rerun-once
1165
+ # chance instead of inheriting an already-exhausted count from an unrelated
1166
+ # prior commit. See `coord.merge_queue.QueuedMerge.ci_rerun_budget_sha`.
1167
+ _DB_SCHEMA_VERSION = 25
1159
1168
 
1160
1169
 
1161
1170
  def _read_schema_version(conn: sqlite3.Connection) -> int:
@@ -1403,7 +1412,8 @@ _SCHEMA_SQL = """
1403
1412
  ci_fix_detail_sha TEXT NOT NULL DEFAULT '',
1404
1413
  ci_fix_detail_json TEXT,
1405
1414
  ci_seen_checks_sha TEXT NOT NULL DEFAULT '',
1406
- ci_seen_check_names_json TEXT
1415
+ ci_seen_check_names_json TEXT,
1416
+ ci_rerun_budget_sha TEXT NOT NULL DEFAULT ''
1407
1417
  );
1408
1418
 
1409
1419
  CREATE TABLE IF NOT EXISTS plans (
@@ -2640,6 +2650,16 @@ _MIGRATE_ADD_COLUMNS: list[str] = [
2640
2650
  # commit" by `coord.merge_queue._ci_seen_check_names`.
2641
2651
  "ALTER TABLE merge_queue ADD COLUMN ci_seen_checks_sha TEXT NOT NULL DEFAULT ''",
2642
2652
  "ALTER TABLE merge_queue ADD COLUMN ci_seen_check_names_json TEXT",
2653
+ # #3754: the `branch_head_sha` that `ci_infra_reruns`/`ci_flaky_reruns`/
2654
+ # `ci_unreadable_reruns`/`ci_flaky_pending` were last accrued against --
2655
+ # see `coord.merge_queue.QueuedMerge.ci_rerun_budget_sha`'s docstring.
2656
+ # Lets a new commit landing while CI is still red (a ci-fix leg's own
2657
+ # push, most commonly) re-arm those rerun budgets for its own fair
2658
+ # rerun-once chance instead of inheriting an already-exhausted count
2659
+ # from an unrelated prior commit. '' for every row predating this
2660
+ # migration, read identically to "no live CI-failure read yet" by
2661
+ # `coord.merge_queue.MergeQueue.process`.
2662
+ "ALTER TABLE merge_queue ADD COLUMN ci_rerun_budget_sha TEXT NOT NULL DEFAULT ''",
2643
2663
  # #3339: the explicit operator assertion that clears a terminal
2644
2664
  # `refused_premise` row — see `coord.state.mark_premise_rechecked` and
2645
2665
  # `coord drive-queue clear-refusal`. Unlike `refused_policy`, a premise
@@ -4897,6 +4897,23 @@ class QueuedMerge:
4897
4897
  # is nothing to contradict on the very first read of a fresh SHA.
4898
4898
  ci_seen_checks_sha: str = ""
4899
4899
  ci_seen_check_names_json: str | None = None
4900
+ # #3754: `branch_head_sha` (see the field above) that `ci_infra_reruns`/
4901
+ # `ci_flaky_reruns`/`ci_unreadable_reruns`/`ci_flaky_pending` were last
4902
+ # accrued against. Those four durable fields used to be reset ONLY in
4903
+ # the "genuinely resolved" block below (reached only once CI reads
4904
+ # fully green) — so a NEW commit landing while CI is STILL red (most
4905
+ # commonly a ci-fix leg's own push) inherited whatever was left of the
4906
+ # PRIOR commit's budget instead of getting its own fair rerun-once
4907
+ # chance. That silently turned a single flaky required check into two
4908
+ # consecutive `checks_failed` verdicts back to back, burning the
4909
+ # #2972 fix-round ceiling on a PR nothing was actually wrong with.
4910
+ # Compared against `branch_head_sha` at the top of the `if failed:`
4911
+ # block below: a mismatch re-arms all four fields for the new commit
4912
+ # before any of #2347/#1892/#2252's own budget checks run, mirroring
4913
+ # the `ci_seen_checks_sha` pairing immediately above. '' for every
4914
+ # entry that has never had a live CI-failure read, and for rows
4915
+ # predating this column.
4916
+ ci_rerun_budget_sha: str = ""
4900
4917
 
4901
4918
 
4902
4919
  class GhOps(Protocol):
@@ -5308,6 +5325,9 @@ def load_queue() -> list[QueuedMerge]:
5308
5325
  # ci_fix_detail_json above, for rows predating this migration.
5309
5326
  ci_seen_checks_sha=row["ci_seen_checks_sha"] or "",
5310
5327
  ci_seen_check_names_json=row["ci_seen_check_names_json"],
5328
+ # #3754: same NULL-to-'' decoding as ci_seen_checks_sha above,
5329
+ # for rows predating this migration.
5330
+ ci_rerun_budget_sha=row["ci_rerun_budget_sha"] or "",
5311
5331
  )
5312
5332
  for row in rows
5313
5333
  ]
@@ -5332,8 +5352,9 @@ def save_queue(items: list[QueuedMerge]) -> None:
5332
5352
  ci_unreadable_reruns, ci_fix_dispatches,
5333
5353
  ci_fix_head_sha, ci_fix_noop_streak,
5334
5354
  ci_fix_detail_sha, ci_fix_detail_json,
5335
- ci_seen_checks_sha, ci_seen_check_names_json
5336
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""",
5355
+ ci_seen_checks_sha, ci_seen_check_names_json,
5356
+ ci_rerun_budget_sha
5357
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""",
5337
5358
  (
5338
5359
  item.assignment_id, item.repo_name, item.repo_github,
5339
5360
  item.branch, item.target_branch, item.issue_number,
@@ -5346,6 +5367,7 @@ def save_queue(items: list[QueuedMerge]) -> None:
5346
5367
  item.ci_fix_head_sha, item.ci_fix_noop_streak,
5347
5368
  item.ci_fix_detail_sha, item.ci_fix_detail_json,
5348
5369
  item.ci_seen_checks_sha, item.ci_seen_check_names_json,
5370
+ item.ci_rerun_budget_sha,
5349
5371
  ),
5350
5372
  )
5351
5373
 
@@ -9036,6 +9058,25 @@ def process(
9036
9058
  summary = ", ".join(
9037
9059
  f"{c.name} ({c.conclusion})" for c in failed
9038
9060
  )
9061
+ # #3754: a NEW commit landing while CI is still red
9062
+ # (most commonly a ci-fix leg's own push) must get its
9063
+ # own fair rerun-once chance, not inherit whatever is
9064
+ # left of a DIFFERENT, prior commit's budget — the
9065
+ # "genuinely resolved" reset later in this function only
9066
+ # fires once CI reads fully green, which a still-broken
9067
+ # (or still-flaky) new commit never reaches. Guarded on
9068
+ # `branch_head_sha` being known at all: an unknown SHA
9069
+ # carries no information either way, so leave the
9070
+ # existing budget alone rather than reset against "".
9071
+ if (
9072
+ entry.branch_head_sha
9073
+ and entry.branch_head_sha != entry.ci_rerun_budget_sha
9074
+ ):
9075
+ entry.ci_infra_reruns = 0
9076
+ entry.ci_flaky_reruns = 0
9077
+ entry.ci_flaky_pending = ""
9078
+ entry.ci_unreadable_reruns = 0
9079
+ entry.ci_rerun_budget_sha = entry.branch_head_sha
9039
9080
  # #2347: classify a bare check-list FETCH failure
9040
9081
  # BEFORE #1892's infra classifier gets a chance — a
9041
9082
  # synthetic unreadable check always carries `run_id ==
@@ -9320,6 +9361,12 @@ def process(
9320
9361
  # failures the budget was tracking is over. A LATER,
9321
9362
  # unrelated fetch failure starts its own count from zero.
9322
9363
  entry.ci_unreadable_reruns = 0
9364
+ # #3754: keep `ci_rerun_budget_sha` in lockstep with the
9365
+ # three counters above — harmless if it's already current
9366
+ # (the `if failed:` guard above is idempotent), but keeps a
9367
+ # later failure on this SAME sha (a flaky green-then-read)
9368
+ # from being misread as stale tracking.
9369
+ entry.ci_rerun_budget_sha = entry.branch_head_sha or ""
9323
9370
  # #1851: a green CI result can itself be stale relative to the
9324
9371
  # base — see `_ci_checks_are_stale`'s docstring. Named
9325
9372
  # distinctly (`checks_stale`) from checks_failed/
@@ -3280,14 +3280,38 @@ def _record_smoke_verdict(
3280
3280
  # `test_state`, so a headless smoke FAILURE lands as
3281
3281
  # test_state='failed' AND smoke_test='fail' and stays reachable from
3282
3282
  # `coord fix`.
3283
+ #
3284
+ # A plain-runner's marker line (`SMOKE: fail exit=1`) carries nothing
3285
+ # but an exit code — useless to a fix worker who can't tell its own
3286
+ # diff from a red base from that alone. `verdict.context` is the
3287
+ # bounded log tail that preceded the marker, which for the
3288
+ # plain-runner is the captured failing-test output (panic/assertion
3289
+ # lines, the `error: test failed, to rerun pass -p <crate> --test
3290
+ # <name>` hint), and for a `claude -p` smoke worker is usually the
3291
+ # turn where it identified the failure.
3292
+ #
3293
+ # That text is raw worker-/suite-authored prose, so it goes to the
3294
+ # dedicated `test_output` file (`coord.confirm_test.
3295
+ # write_test_output_file`), never into `test_reason` itself —
3296
+ # `test_reason` is scanned unanchored by several readers
3297
+ # (`coord.state.classify_failure` on every failed write,
3298
+ # `coord.smoke`'s budget tallies) that must only ever see the
3299
+ # coordinator's own short summary, not a worker's log output which
3300
+ # could coincidentally contain one of their matched phrases.
3301
+ # `plan_followup.fix()` already prefers this file over `test_reason`
3302
+ # when composing the briefing.
3303
+ from coord.confirm_test import write_test_output_file # noqa: PLC0415
3304
+
3305
+ write_test_output_file(parent_id, verdict.context)
3306
+ headline = (
3307
+ f"headless smoke: {verdict.reason}"
3308
+ if verdict.reason
3309
+ else "headless smoke reported SMOKE: fail"
3310
+ )
3283
3311
  record_test_verdict(
3284
3312
  assignment_id=parent_id,
3285
3313
  test_state="failed",
3286
- test_reason=(
3287
- f"headless smoke: {verdict.reason}"
3288
- if verdict.reason
3289
- else "headless smoke reported SMOKE: fail"
3290
- ),
3314
+ test_reason=headline,
3291
3315
  )
3292
3316
  return
3293
3317
 
@@ -90,11 +90,22 @@ class SmokeVerdict:
90
90
  """#2244: a smoke worker's self-reported verdict line.
91
91
 
92
92
  ``kind`` is normalised to exactly one of ``"pass"``, ``"fail"`` or
93
- ``"baseline-red"``; ``reason`` is the (possibly empty) trailing text.
93
+ ``"baseline-red"``; ``reason`` is the (possibly empty) trailing text on
94
+ the marker's own line.
95
+
96
+ ``context`` is a bounded tail (:func:`coord.revalidate._tail`) of
97
+ whatever text preceded the marker — a plain-runner writes its captured
98
+ test output immediately before `SMOKE: fail exit=N`, and a `claude -p`
99
+ smoke worker usually states the failing test/assertion in the same turn
100
+ it prints the marker. This is raw worker-authored text, not a short
101
+ summary: callers must route it to a channel meant for that (e.g.
102
+ `coord.confirm_test.write_test_output_file`), never append it to a
103
+ structured field like `test_reason`.
94
104
  """
95
105
 
96
106
  kind: str
97
107
  reason: str = ""
108
+ context: str = ""
98
109
 
99
110
 
100
111
  @dataclass
@@ -484,17 +495,27 @@ def _extract_smoke_verdict_from_text(text: str) -> "SmokeVerdict | None":
484
495
  itself — "I said baseline-red, but re-running shows a real failure")
485
496
  means the final line, not the first.
486
497
  """
498
+ from coord.revalidate import _tail # noqa: PLC0415
499
+
487
500
  matches = list(_SMOKE_VERDICT_RE.finditer(text))
488
501
  if not matches:
489
502
  return None
490
- raw_kind = matches[-1].group(1).lower()
503
+ last = matches[-1]
504
+ raw_kind = last.group(1).lower()
491
505
  if raw_kind.startswith("baseline"):
492
506
  kind = "baseline-red"
493
507
  elif raw_kind.startswith("pass"):
494
508
  kind = "pass"
495
509
  else:
496
510
  kind = "fail"
497
- return SmokeVerdict(kind=kind, reason=matches[-1].group(2).strip())
511
+ # Whatever preceded the marker line, bounded the same way
512
+ # `coord.revalidate`'s own failure tails are. `text[:last.start()]` not
513
+ # `.end()` — the marker line itself (e.g. `SMOKE: fail exit=1`) is
514
+ # already captured as `reason` and would just duplicate here.
515
+ preceding = _tail(text[: last.start()])
516
+ return SmokeVerdict(
517
+ kind=kind, reason=last.group(2).strip(), context=preceding,
518
+ )
498
519
 
499
520
 
500
521
  def _smoke_verdict_texts_from_event(event: object) -> list[str]:
@@ -594,6 +594,46 @@ class TestFixFromRedCi:
594
594
 
595
595
  assert result.exit_code == 0, result.output
596
596
 
597
+ def test_test_output_file_content_reaches_the_rendered_briefing(
598
+ self, ci_config: Path, coord_dir: Path, monkeypatch
599
+ ) -> None:
600
+ """`fix()`'s `elif test_output_file.exists()` branch wins over
601
+ `test_reason` — pin that the file's content, not just its
602
+ existence, actually lands in the rendered `## Test failure`
603
+ section a fix worker reads."""
604
+ work = _work(test_state="failed", test_reason="exit=1")
605
+ state_mod.save_board(Board(completed=[work]))
606
+
607
+ def boom(*a, **k):
608
+ raise AssertionError("CI must not be consulted when the test gate failed")
609
+
610
+ monkeypatch.setattr("coord.ci_store.build_ci_store", boom)
611
+
612
+ test_output_dir = coord_dir / "test_output"
613
+ test_output_dir.mkdir(parents=True, exist_ok=True)
614
+ (test_output_dir / "work-abc.txt").write_text(
615
+ "FAILED tests/readme_truth.rs::version_matches\n"
616
+ "error: test failed, to rerun pass -p vimcode --test readme_truth\n"
617
+ "SMOKE: fail exit=1\n"
618
+ )
619
+
620
+ captured = {}
621
+
622
+ def fake_dispatch(proposal, config, **kwargs):
623
+ captured["briefing"] = proposal.briefing
624
+ return {"id": "fix-t"}
625
+
626
+ with patch("coord.dispatch.dispatch", side_effect=fake_dispatch), \
627
+ patch("coord.github_ops.post_issue_comment"):
628
+ result = CliRunner().invoke(
629
+ main, ["fix", "work-abc", "--config", str(ci_config)]
630
+ )
631
+
632
+ assert result.exit_code == 0, result.output
633
+ assert "## Test failure" in captured["briefing"]
634
+ assert "FAILED tests/readme_truth.rs::version_matches" in captured["briefing"]
635
+ assert "to rerun pass -p vimcode --test readme_truth" in captured["briefing"]
636
+
597
637
  def test_dispatch_refused_by_a_pre_dispatch_guard_exits_distinctly(
598
638
  self, ci_config: Path, coord_dir: Path, monkeypatch
599
639
  ) -> None:
@@ -2508,7 +2508,11 @@ class TestUatStateAndReasonColumns:
2508
2508
  # `review_claims` / #3333's `smoke_claims` bumps above. Closes the race where
2509
2509
  # the live review-completion path and the orphan sweep both see
2510
2510
  # `review_posted_at IS NULL` and both post the identical GitHub comment.
2511
- _PINNED_SCHEMA_VERSION_AND_MIGRATION_COUNT = (24, 100)
2511
+ # #3754 bumped this to (25, 101): `merge_queue.ci_rerun_budget_sha` — the
2512
+ # `branch_head_sha` the CI-flaky/infra/unreadable rerun budgets were last
2513
+ # accrued against, so a new commit landing while CI is still red gets its
2514
+ # own fair rerun-once chance instead of inheriting an exhausted budget.
2515
+ _PINNED_SCHEMA_VERSION_AND_MIGRATION_COUNT = (25, 101)
2512
2516
 
2513
2517
 
2514
2518
  class TestMigrateAddColumnsVersionGuard:
@@ -11703,6 +11703,109 @@ class TestProcessCiFlakyAutoRerun:
11703
11703
  assert "ci_flaky_rerun" not in kinds
11704
11704
 
11705
11705
 
11706
+ # ── #3754: rerun budgets are scoped to the commit they were accrued for ─────
11707
+
11708
+ class TestProcessCiRerunBudgetScopedToCommit:
11709
+ """A NEW ``branch_head_sha`` (a ci-fix leg's own push, most commonly)
11710
+ must get its own fair #2252 rerun-once chance rather than inherit
11711
+ whatever is left of a DIFFERENT, prior commit's exhausted budget —
11712
+ the repro in #3754 is exactly a ci-fix leg landing at the fix-round
11713
+ ceiling because its fresh push inherited an already-spent streak."""
11714
+
11715
+ def test_new_commit_after_exhausted_budget_gets_its_own_rerun(self) -> None:
11716
+ items = [_q("w1", pr=99)]
11717
+ entry = items[0]
11718
+ # Commit A: budget already exhausted and confirmed real (mirrors
11719
+ # `test_fails_again_spends_the_attempt_identical_to_today` above).
11720
+ entry.branch_head_sha = "sha_a"
11721
+ entry.ci_rerun_budget_sha = "sha_a"
11722
+ entry.ci_infra_reruns = mq.MAX_CI_INFRA_RERUNS
11723
+ entry.ci_flaky_reruns = mq.MAX_CI_FLAKY_RERUNS
11724
+ entry.ci_unreadable_reruns = mq.MAX_CI_UNREADABLE_RERUNS
11725
+ entry.ci_flaky_pending = ""
11726
+
11727
+ gh = FakeGh()
11728
+ ci = TestProcessCiFlakyAutoRerun._Ci(
11729
+ checks=TestProcessCiFlakyAutoRerun._genuine_failure()
11730
+ )
11731
+
11732
+ # Commit A still red -> budget exhausted, plain checks_failed,
11733
+ # no rerun attempted -- unchanged from today's behaviour.
11734
+ events = process(items, gh, ci_store=ci)
11735
+ kinds = [e.kind for e in events]
11736
+ assert "checks_failed" in kinds
11737
+ assert "ci_flaky_rerun" not in kinds
11738
+ assert ci.rerun_failed_calls == []
11739
+ assert entry.ci_flaky_reruns == mq.MAX_CI_FLAKY_RERUNS
11740
+
11741
+ # A new commit lands (e.g. a ci-fix leg's own push) and ALSO
11742
+ # fails CI -- it must get its own fresh rerun-once chance rather
11743
+ # than being immediately confirmed as broken from A's exhausted
11744
+ # budget.
11745
+ entry.branch_head_sha = "sha_b"
11746
+ events = process(items, gh, ci_store=ci)
11747
+
11748
+ kinds = [e.kind for e in events]
11749
+ assert "ci_flaky_rerun" in kinds
11750
+ assert "checks_failed" not in kinds
11751
+ assert ci.rerun_failed_calls == [("acme/api", 99)]
11752
+ assert entry.ci_infra_reruns == 0
11753
+ assert entry.ci_flaky_reruns == 1
11754
+ assert entry.ci_unreadable_reruns == 0
11755
+ assert entry.ci_flaky_pending
11756
+ assert entry.ci_rerun_budget_sha == "sha_b"
11757
+
11758
+ def test_same_commit_failing_again_keeps_the_exhausted_budget(self) -> None:
11759
+ """Control: without a NEW sha, the existing exhausted-budget
11760
+ behaviour (today's `checks_failed` on a repeat failure) is
11761
+ unchanged — the reset is scoped to a genuinely new commit, not
11762
+ every tick."""
11763
+ items = [_q("w1", pr=99)]
11764
+ entry = items[0]
11765
+ entry.branch_head_sha = "sha_a"
11766
+ entry.ci_rerun_budget_sha = "sha_a"
11767
+ entry.ci_flaky_reruns = mq.MAX_CI_FLAKY_RERUNS
11768
+ entry.ci_flaky_pending = ""
11769
+
11770
+ gh = FakeGh()
11771
+ ci = TestProcessCiFlakyAutoRerun._Ci(
11772
+ checks=TestProcessCiFlakyAutoRerun._genuine_failure()
11773
+ )
11774
+
11775
+ events = process(items, gh, ci_store=ci)
11776
+
11777
+ kinds = [e.kind for e in events]
11778
+ assert "checks_failed" in kinds
11779
+ assert "ci_flaky_rerun" not in kinds
11780
+ assert ci.rerun_failed_calls == []
11781
+ assert entry.ci_flaky_reruns == mq.MAX_CI_FLAKY_RERUNS
11782
+ assert entry.ci_rerun_budget_sha == "sha_a"
11783
+
11784
+ def test_unknown_branch_head_sha_does_not_reset_the_budget(self) -> None:
11785
+ """An unknown sha (``board=None``, the dry-preview path with no
11786
+ live `gh` fetch) carries no information either way -- leave the
11787
+ existing budget alone rather than reset against ``""``."""
11788
+ items = [_q("w1", pr=99)]
11789
+ entry = items[0]
11790
+ entry.branch_head_sha = None
11791
+ entry.ci_rerun_budget_sha = "sha_a"
11792
+ entry.ci_flaky_reruns = mq.MAX_CI_FLAKY_RERUNS
11793
+ entry.ci_flaky_pending = ""
11794
+
11795
+ gh = FakeGh()
11796
+ ci = TestProcessCiFlakyAutoRerun._Ci(
11797
+ checks=TestProcessCiFlakyAutoRerun._genuine_failure()
11798
+ )
11799
+
11800
+ events = process(items, gh, ci_store=ci)
11801
+
11802
+ kinds = [e.kind for e in events]
11803
+ assert "checks_failed" in kinds
11804
+ assert "ci_flaky_rerun" not in kinds
11805
+ assert entry.ci_flaky_reruns == mq.MAX_CI_FLAKY_RERUNS
11806
+ assert entry.ci_rerun_budget_sha == "sha_a"
11807
+
11808
+
11706
11809
  # ── #778: staging_items() ─────────────────────────────────────────────────────
11707
11810
 
11708
11811
  class TestStagingItems:
@@ -3410,6 +3410,14 @@ class TestSmokeVerdictFailsClosed(TestSmokeCompletionVerdict):
3410
3410
  '{"type":"result","subtype":"success","result":"The suite failed."}\n'
3411
3411
  )
3412
3412
 
3413
+ @pytest.fixture(autouse=True)
3414
+ def _isolated_coord_dir(self, tmp_path, monkeypatch):
3415
+ """A `fail` verdict with non-empty preceding context writes it to
3416
+ `COORD_DIR/test_output/<assignment_id>.txt`
3417
+ (`coord.confirm_test.write_test_output_file`) — point `COORD_DIR` at
3418
+ this test's own `tmp_path` rather than a real one."""
3419
+ monkeypatch.setattr("coord.state.COORD_DIR", tmp_path / "coord-dir")
3420
+
3413
3421
  def _reap(self, transition, record, entry) -> None:
3414
3422
  from coord.notify import post_transition # noqa: PLC0415
3415
3423
 
@@ -3473,6 +3481,52 @@ class TestSmokeVerdictFailsClosed(TestSmokeCompletionVerdict):
3473
3481
  assert row["smoke_test"] == "fail"
3474
3482
  assert "5 failed" in (row["test_reason"] or "")
3475
3483
 
3484
+ def test_plain_runner_failure_threads_log_context_into_test_output_file(
3485
+ self, coord_db, tmp_path,
3486
+ ) -> None:
3487
+ """A plain-runner log has NOTHING but `exit=N` on the `SMOKE: fail`
3488
+ line itself — the failing test name and rerun hint are only in the
3489
+ captured output that precedes it. That context must reach a fix
3490
+ worker via `COORD_DIR/test_output/<assignment_id>.txt`
3491
+ (`coord.commands.plan_followup.fix` reads this file ahead of
3492
+ `test_reason`), not via `test_reason` itself — `test_reason` stays a
3493
+ short, coordinator-authored headline because several readers
3494
+ (`coord.state.classify_failure`, `coord.smoke`'s budget tallies)
3495
+ scan it with unanchored regexes that must never see raw log text."""
3496
+ plain_runner_log = (
3497
+ "FAILED tests/readme_truth.rs::version_matches\n"
3498
+ "error: test failed, to rerun pass -p vimcode --test readme_truth\n"
3499
+ "SMOKE: fail exit=1\n"
3500
+ )
3501
+ transition, record, entry = self._setup(
3502
+ "work-3741", "smoke-3741", exit_code=1,
3503
+ log=plain_runner_log, tmp_path=tmp_path,
3504
+ )
3505
+ self._reap(transition, record, entry)
3506
+
3507
+ row = self._row("work-3741")
3508
+ assert row is not None
3509
+ assert row["test_state"] == "failed"
3510
+ reason = row["test_reason"] or ""
3511
+ assert "exit=1" in reason
3512
+ assert "FAILED tests/readme_truth.rs::version_matches" not in reason, (
3513
+ "raw log text must not land in test_reason — it is scanned "
3514
+ f"unanchored by several readers; got {reason!r}"
3515
+ )
3516
+
3517
+ from coord.state import COORD_DIR # noqa: PLC0415
3518
+
3519
+ stored = COORD_DIR / "test_output" / "work-3741.txt"
3520
+ assert stored.exists(), (
3521
+ f"expected the captured context at {stored} for `coord fix` to read"
3522
+ )
3523
+ context = stored.read_text()
3524
+ assert "FAILED tests/readme_truth.rs::version_matches" in context, (
3525
+ "a bare 'headless smoke: exit=1' tells a fix worker nothing — "
3526
+ f"the failing test name must survive into the file; got {context!r}"
3527
+ )
3528
+ assert "to rerun pass -p vimcode --test readme_truth" in context
3529
+
3476
3530
  def test_clean_exit_without_verdict_records_no_verdict(
3477
3531
  self, coord_db, tmp_path
3478
3532
  ) -> None:
@@ -584,6 +584,60 @@ class TestSmokeVerdictParser:
584
584
  assert v is not None and v.kind == "fail"
585
585
  assert v.reason == "5 failed + 3 errors"
586
586
 
587
+ def test_fail_captures_preceding_output_as_context(
588
+ self, tmp_path: Path,
589
+ ) -> None:
590
+ """A plain-runner's captured test output precedes its
591
+ `SMOKE: fail exit=N` marker — that's exactly what a fix briefing
592
+ needs quoted, not just the marker's own trailing text."""
593
+ from coord.progress import parse_smoke_verdict_from_log
594
+ v = parse_smoke_verdict_from_log(
595
+ self._log(
596
+ tmp_path,
597
+ "FAILED tests/readme_truth.rs::version_matches\n"
598
+ "error: test failed, to rerun pass -p vimcode "
599
+ "--test readme_truth\n"
600
+ "SMOKE: fail exit=1\n",
601
+ )
602
+ )
603
+ assert v is not None and v.kind == "fail"
604
+ assert v.reason == "exit=1"
605
+ assert "FAILED tests/readme_truth.rs::version_matches" in v.context
606
+ assert "to rerun pass -p vimcode --test readme_truth" in v.context
607
+ # The marker line itself is `reason`'s job, not duplicated here — for
608
+ # THIS single-marker fixture it also means the marker text itself
609
+ # doesn't appear in `.context`. That is not a general invariant: a
610
+ # stream-json log can carry the `SMOKE:` string multiple times (the
611
+ # tool_use command, the echoed literal, the tool_result), and an
612
+ # earlier copy legitimately ends up inside `.context`.
613
+ assert "SMOKE: fail" not in v.context
614
+
615
+ def test_context_is_truncated_from_the_front_when_oversized(
616
+ self, tmp_path: Path,
617
+ ) -> None:
618
+ """Mirrors `coord.revalidate._tail`'s bias: keep the END of the
619
+ preceding output (closest to the failure) and mark the cut."""
620
+ from coord.progress import parse_smoke_verdict_from_log
621
+ from coord.revalidate import _OUTPUT_TAIL_CHARS
622
+ huge = "x" * 5000 + "TAIL-MARKER-END"
623
+ v = parse_smoke_verdict_from_log(
624
+ self._log(tmp_path, f"{huge}\nSMOKE: fail exit=1\n")
625
+ )
626
+ assert v is not None and v.kind == "fail"
627
+ assert "…(truncated)…" in v.context
628
+ assert "TAIL-MARKER-END" in v.context
629
+ assert len(v.context) < _OUTPUT_TAIL_CHARS + 100
630
+
631
+ def test_pass_has_no_context_requirement(self, tmp_path: Path) -> None:
632
+ """A pass verdict doesn't need preceding output explained; just
633
+ confirm populating `.context` for `pass` doesn't break anything."""
634
+ from coord.progress import parse_smoke_verdict_from_log
635
+ v = parse_smoke_verdict_from_log(
636
+ self._log(tmp_path, "9911 passed in 662s\nSMOKE: pass\n")
637
+ )
638
+ assert v is not None and v.kind == "pass"
639
+ assert v.context == "9911 passed in 662s"
640
+
587
641
  def test_parses_baseline_red(self, tmp_path: Path) -> None:
588
642
  from coord.progress import parse_smoke_verdict_from_log
589
643
  v = parse_smoke_verdict_from_log(