code-coordinator 0.5.256__tar.gz → 0.5.258__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 (868) hide show
  1. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/SOURCES.txt +1 -0
  4. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/scm_file_list.json +1 -0
  5. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/scm_version.json +2 -2
  6. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/drive_queue.py +52 -16
  7. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/release.py +26 -1
  8. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/drive.py +9 -2
  9. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/drive_queue.py +121 -8
  10. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/models.py +25 -0
  11. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/release_propagate.py +181 -33
  12. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_drive_queue.py +97 -0
  13. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_queue.py +173 -0
  14. code_coordinator-0.5.258/tests/test_release_roll_between_legs_2854.py +293 -0
  15. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.claude/commands/board.md +0 -0
  16. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.claude/commands/complete-session.md +0 -0
  17. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.claude/commands/coordinator.md +0 -0
  18. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.githooks/_lib.sh +0 -0
  19. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.githooks/post-checkout +0 -0
  20. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.githooks/post-commit +0 -0
  21. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.githooks/post-merge +0 -0
  22. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  23. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.github/coord-ci-acceptance.yml +0 -0
  24. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.github/workflows/auto-release.yml +0 -0
  25. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.github/workflows/cargo-test.yml +0 -0
  26. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.github/workflows/publish.yml +0 -0
  27. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.github/workflows/release-tui.yml +0 -0
  28. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.github/workflows/test.yml +0 -0
  29. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/.gitignore +0 -0
  30. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/CLAUDE.md +0 -0
  31. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/GOAL.md +0 -0
  32. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/LICENSE +0 -0
  33. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/MANIFEST.in +0 -0
  34. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/README.md +0 -0
  35. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/dependency_links.txt +0 -0
  36. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/entry_points.txt +0 -0
  37. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/requires.txt +0 -0
  38. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/code_coordinator.egg-info/top_level.txt +0 -0
  39. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/__init__.py +0 -0
  40. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/_board_mapping.py +0 -0
  41. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/acceptance.py +0 -0
  42. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/acceptance_drivers.py +0 -0
  43. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/agent.py +0 -0
  44. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/agent_app.py +0 -0
  45. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/agent_update.py +0 -0
  46. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/agents/opencode/.gitignore +0 -0
  47. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/agents/opencode/agents/work.md +0 -0
  48. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/agents/opencode/routing.jsonc +0 -0
  49. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/approved_work.py +0 -0
  50. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/audit.py +0 -0
  51. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/auto_loop.py +0 -0
  52. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/block_log.py +0 -0
  53. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/board_bool_guard.py +0 -0
  54. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/board_schema.py +0 -0
  55. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/board_service.py +0 -0
  56. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/board_wire.py +0 -0
  57. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/brain.py +0 -0
  58. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/branch_model.py +0 -0
  59. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/bug_intake.py +0 -0
  60. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/cargo_cache.py +0 -0
  61. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/ci_fix.py +0 -0
  62. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/ci_github.py +0 -0
  63. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/ci_gitlab.py +0 -0
  64. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/ci_store.py +0 -0
  65. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/claim.py +0 -0
  66. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/cli.py +0 -0
  67. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/client.py +0 -0
  68. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/__init__.py +0 -0
  69. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/_common.py +0 -0
  70. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/acceptance.py +0 -0
  71. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/agent_ops.py +0 -0
  72. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/audit.py +0 -0
  73. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/chat.py +0 -0
  74. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/dispatch.py +0 -0
  75. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/dispatch_workers.py +0 -0
  76. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/drive.py +0 -0
  77. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/gate_a.py +0 -0
  78. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/gates.py +0 -0
  79. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/issues.py +0 -0
  80. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/lifecycle.py +0 -0
  81. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/merge.py +0 -0
  82. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/milestone.py +0 -0
  83. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/plan_followup.py +0 -0
  84. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/plans.py +0 -0
  85. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/portal.py +0 -0
  86. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/pr.py +0 -0
  87. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/repo.py +0 -0
  88. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/report.py +0 -0
  89. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/review.py +0 -0
  90. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/scorecard.py +0 -0
  91. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/sessions.py +0 -0
  92. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/setup.py +0 -0
  93. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/status.py +0 -0
  94. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/terminal.py +0 -0
  95. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/test_gate.py +0 -0
  96. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/commands/tui.py +0 -0
  97. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/comments.py +0 -0
  98. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/config.py +0 -0
  99. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/config_reload.py +0 -0
  100. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/confirm_test.py +0 -0
  101. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/conflict_fix.py +0 -0
  102. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dao.py +0 -0
  103. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dashboard/__init__.py +0 -0
  104. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dashboard/fixture.py +0 -0
  105. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dashboard/index.html +0 -0
  106. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dashboard/server.py +0 -0
  107. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dashboard/terminal.py +0 -0
  108. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/db.py +0 -0
  109. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dead_end.py +0 -0
  110. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/decomposition_chat.py +0 -0
  111. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/README.md +0 -0
  112. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-agent.service +0 -0
  113. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-db-backup.service +0 -0
  114. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-db-backup.sh +0 -0
  115. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-db-backup.timer +0 -0
  116. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-drive-queue.service +0 -0
  117. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-drive-queue.timer +0 -0
  118. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-failure-notify.service +0 -0
  119. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-fleet-watchdog.service +0 -0
  120. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  121. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-notify.service +0 -0
  122. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-notify.timer +0 -0
  123. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-release-propagate.service +0 -0
  124. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-release-propagate.timer +0 -0
  125. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-release-window.service +0 -0
  126. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-release-window.timer +0 -0
  127. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-serve.service +0 -0
  128. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-web-dist-build.service +0 -0
  129. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-web-dist-build.timer +0 -0
  130. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy/coord-web.service +0 -0
  131. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy_manifest.py +0 -0
  132. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deploy_units.py +0 -0
  133. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/deps.py +0 -0
  134. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/diagnose.py +0 -0
  135. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dispatch.py +0 -0
  136. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/dist_name.py +0 -0
  137. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/drive_state.py +0 -0
  138. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/events.py +0 -0
  139. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/failure_class.py +0 -0
  140. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/filelock.py +0 -0
  141. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/fleet_config_health.py +0 -0
  142. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/forge_availability.py +0 -0
  143. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/freshness.py +0 -0
  144. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/gate_a.py +0 -0
  145. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/gate_b.py +0 -0
  146. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/gate_snapshot.py +0 -0
  147. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/gates.py +0 -0
  148. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/github_ops.py +0 -0
  149. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/github_throttle.py +0 -0
  150. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/goal.py +0 -0
  151. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/graph_health.py +0 -0
  152. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/__init__.py +0 -0
  153. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/aggregate.py +0 -0
  154. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/__init__.py +0 -0
  155. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/agent_install.py +0 -0
  156. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/cargo_targets.py +0 -0
  157. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/claude_binary.py +0 -0
  158. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/coord_web_ci_pin.py +0 -0
  159. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/deploy_lane_facts.py +0 -0
  160. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/disk.py +0 -0
  161. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/fleet_board.py +0 -0
  162. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  163. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/fleet_phantom.py +0 -0
  164. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/fleet_unit_drift.py +0 -0
  165. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/graph.py +0 -0
  166. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/graphify_cli.py +0 -0
  167. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/index_lock.py +0 -0
  168. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/plan_usage.py +0 -0
  169. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/release_cordon.py +0 -0
  170. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/repo_state.py +0 -0
  171. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/spawned_coord.py +0 -0
  172. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/stalled_pipeline.py +0 -0
  173. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/timer_active.py +0 -0
  174. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/toolchain.py +0 -0
  175. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/unit_drift.py +0 -0
  176. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/unit_enablement.py +0 -0
  177. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/checks/worktrees.py +0 -0
  178. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/cli.py +0 -0
  179. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/context.py +0 -0
  180. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/fleet_snapshot.py +0 -0
  181. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/models.py +0 -0
  182. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/pypi.py +0 -0
  183. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/registry.py +0 -0
  184. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/render.py +0 -0
  185. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/health/units.py +0 -0
  186. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/hooks.py +0 -0
  187. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/housekeeping.py +0 -0
  188. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/interactive.py +0 -0
  189. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/issue_store.py +0 -0
  190. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/liveness_auditor.py +0 -0
  191. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/machine_pause.py +0 -0
  192. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/merge_queue.py +0 -0
  193. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/milestone_chat.py +0 -0
  194. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/milestone_dispatch.py +0 -0
  195. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/milestone_gate.py +0 -0
  196. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/milestone_order.py +0 -0
  197. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/mock_author.py +0 -0
  198. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/network.py +0 -0
  199. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/new_issue_chat.py +0 -0
  200. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/__init__.py +0 -0
  201. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/baseline.py +0 -0
  202. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/cli.py +0 -0
  203. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/collect.py +0 -0
  204. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/digest.py +0 -0
  205. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/models.py +0 -0
  206. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/predicate.py +0 -0
  207. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/service.py +0 -0
  208. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/store.py +0 -0
  209. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notifier/transport.py +0 -0
  210. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/notify.py +0 -0
  211. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/openapi.py +0 -0
  212. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/overlap_fence.py +0 -0
  213. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/overlap_predict.py +0 -0
  214. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/parentage.py +0 -0
  215. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/parentage_github.py +0 -0
  216. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/pipeline.py +0 -0
  217. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/plan_parser.py +0 -0
  218. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/plans.py +0 -0
  219. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/platform_paths.py +0 -0
  220. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/portal_bridge.py +0 -0
  221. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/portal_store.py +0 -0
  222. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/portal_sync.py +0 -0
  223. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/pr_body_lint.py +0 -0
  224. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/prereqs.py +0 -0
  225. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/progress.py +0 -0
  226. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/providers/__init__.py +0 -0
  227. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/providers/base.py +0 -0
  228. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/providers/claude.py +0 -0
  229. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/providers/claude_pty.py +0 -0
  230. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/providers/opencode.py +0 -0
  231. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/queue_diagnose.py +0 -0
  232. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/reconcile.py +0 -0
  233. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/reconcile_tick.py +0 -0
  234. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/refine_chat.py +0 -0
  235. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/release_cordon.py +0 -0
  236. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/release_verify.py +0 -0
  237. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/release_window.py +0 -0
  238. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/repo_edit.py +0 -0
  239. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/repo_onboard.py +0 -0
  240. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/reports.py +0 -0
  241. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/revalidate.py +0 -0
  242. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/review.py +0 -0
  243. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/scorecard.py +0 -0
  244. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/self_health.py +0 -0
  245. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/serve_app.py +0 -0
  246. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  247. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  248. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  249. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  250. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  251. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/portal-followup/SKILL.md +0 -0
  252. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  253. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  254. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/skills/update-issue/SKILL.md +0 -0
  255. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/smoke.py +0 -0
  256. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/spend_ceiling.py +0 -0
  257. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/split_work.py +0 -0
  258. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/sql.py +0 -0
  259. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/stage_projection.py +0 -0
  260. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/state.py +0 -0
  261. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/test_author.py +0 -0
  262. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/test_chat.py +0 -0
  263. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/test_orchestrator.py +0 -0
  264. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/test_report.py +0 -0
  265. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/tui_release.py +0 -0
  266. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/usage.py +0 -0
  267. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/usage_limits.py +0 -0
  268. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/usage_rollup.py +0 -0
  269. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coord/worker_events.py +0 -0
  270. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/coordinator.example.yml +0 -0
  271. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-agent.service +0 -0
  272. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-db-backup.service +0 -0
  273. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-db-backup.sh +0 -0
  274. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-db-backup.timer +0 -0
  275. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-drive-queue.service +0 -0
  276. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-drive-queue.timer +0 -0
  277. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-failure-notify.service +0 -0
  278. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-failure-notify.sh +0 -0
  279. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-fleet-watchdog.service +0 -0
  280. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-fleet-watchdog.timer +0 -0
  281. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-notify.service +0 -0
  282. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-notify.timer +0 -0
  283. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-release-propagate.service +0 -0
  284. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-release-propagate.timer +0 -0
  285. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-release-window.service +0 -0
  286. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-release-window.timer +0 -0
  287. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-serve.service +0 -0
  288. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-web-dist-build.service +0 -0
  289. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-web-dist-build.sh +0 -0
  290. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-web-dist-build.timer +0 -0
  291. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-web-rollback.sh +0 -0
  292. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/coord-web.service +0 -0
  293. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/deploy/node-shim.sh +0 -0
  294. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  295. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/ADR_COORD_WEB_CI.md +0 -0
  296. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/ADR_COORD_WEB_DIST.md +0 -0
  297. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/AGENT_OPERATIONS.md +0 -0
  298. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/ARCHITECTURE.md +0 -0
  299. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/ARCH_SECURITY_GATES.md +0 -0
  300. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/COCKPIT.md +0 -0
  301. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/CONTROL_CENTER.md +0 -0
  302. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/COST_DISCIPLINE.md +0 -0
  303. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/CROSS_PLATFORM.md +0 -0
  304. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/CUSTOMER_FACING_APPS.md +0 -0
  305. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/CUSTOMER_PORTAL.md +0 -0
  306. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/DRIVE_QUEUE.md +0 -0
  307. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/EPHEMERAL_WORKERS.md +0 -0
  308. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/FORGE_MIGRATION.md +0 -0
  309. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/GRAPHIFY_SETUP.md +0 -0
  310. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/ISSUE_GUIDANCE.md +0 -0
  311. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/MAC_MINI.md +0 -0
  312. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  313. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/NOTIFIER.md +0 -0
  314. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/OPENCODE_VERIFICATION.md +0 -0
  315. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/OPERATING_GOTCHAS.md +0 -0
  316. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/OPERATOR_GUIDES.md +0 -0
  317. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/ORACLE_LOOP.md +0 -0
  318. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/PHONE_WEBAPP.md +0 -0
  319. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/PIPELINE_V2.md +0 -0
  320. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/PLATFORM_EVOLUTION.md +0 -0
  321. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/SECOND_BACKEND.md +0 -0
  322. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/STORE_SERVICE.md +0 -0
  323. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  324. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/WEB_CONTROL_CENTER.md +0 -0
  325. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/WSL_WINDOWS_WORKER.md +0 -0
  326. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/mocks/web/README.md +0 -0
  327. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/mocks/web/_tokens.css +0 -0
  328. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/mocks/web/issue-detail.html +0 -0
  329. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/mocks/web/pipeline-narrow.html +0 -0
  330. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/docs/mocks/web/pipeline-wide.html +0 -0
  331. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/graphify-out/.gitignore +0 -0
  332. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/install-agent.sh +0 -0
  333. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/pyproject.toml +0 -0
  334. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/audit_review_verdict_overrides.py +0 -0
  335. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  336. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/build-worker-image.sh +0 -0
  337. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/coordinator-machine.py +0 -0
  338. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/epic-down.sh +0 -0
  339. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/epic-up.sh +0 -0
  340. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/preflight.sh +0 -0
  341. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/provision-worker.sh +0 -0
  342. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  343. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  344. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/azure-workers/verify-github-token.sh +0 -0
  345. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/check_gh_argv_containment.py +0 -0
  346. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/codegen.py +0 -0
  347. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/coord-test-runner.sh +0 -0
  348. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/coord-venv-rollback.sh +0 -0
  349. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/drive-batch.sh +0 -0
  350. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/fleet_watchdog.py +0 -0
  351. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/gen_board_fixture.py +0 -0
  352. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/gen_mock_index.py +0 -0
  353. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/next_release_tag.py +0 -0
  354. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/run_tests_in_populated_home.sh +0 -0
  355. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/run_tests_without_gh.sh +0 -0
  356. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/smoke_437_interactive.py +0 -0
  357. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/verify_878_review_capture.py +0 -0
  358. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/verify_release_published.py +0 -0
  359. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/scripts/verify_release_wheel.py +0 -0
  360. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/setup.cfg +0 -0
  361. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/SMOKE_SET.md +0 -0
  362. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/__init__.py +0 -0
  363. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  364. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-33/contract.md +0 -0
  365. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-33/manifest.yml +0 -0
  366. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  367. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  368. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  369. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  370. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-37/conftest.py +0 -0
  371. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-37/contract.md +0 -0
  372. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-37/manifest.yml +0 -0
  373. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  374. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  375. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/contract.md +0 -0
  376. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/manifest.yml +0 -0
  377. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  378. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  379. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  380. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  381. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  382. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  383. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  384. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  385. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  386. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  387. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-51/contract.md +0 -0
  388. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  389. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  390. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-51/manifest.yml +0 -0
  391. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  392. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-51/tsconfig.json +0 -0
  393. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  394. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  395. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  396. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/contract.md +0 -0
  397. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  398. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/manifest.yml +0 -0
  399. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  400. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  401. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  402. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  403. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  404. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  405. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  406. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  407. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  408. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  409. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  410. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
  411. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/contract.md +0 -0
  412. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
  413. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/manifest.yml +0 -0
  414. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
  415. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
  416. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
  417. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
  418. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
  419. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
  420. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  421. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/conftest.py +0 -0
  422. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/board-pipeline-basic.json +0 -0
  423. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  424. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  425. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  426. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  427. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/playwright/all_pass.json +0 -0
  428. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  429. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/playwright/mixed_fail.json +0 -0
  430. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  431. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  432. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/playwright/skip.json +0 -0
  433. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/playwright/truncated.json +0 -0
  434. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  435. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  436. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  437. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  438. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  439. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  440. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  441. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  442. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_acceptance.py +0 -0
  443. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_acceptance_drivers.py +0 -0
  444. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent.py +0 -0
  445. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_api_error.py +0 -0
  446. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_app.py +0 -0
  447. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_branch_base.py +0 -0
  448. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_branch_capture.py +0 -0
  449. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_config_free_1712.py +0 -0
  450. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_deploy_units_endpoint.py +0 -0
  451. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_dirty_worktree.py +0 -0
  452. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  453. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_graph_self_heal.py +0 -0
  454. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_health_h3.py +0 -0
  455. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_idle_restart.py +0 -0
  456. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_push_failure.py +0 -0
  457. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_reap.py +0 -0
  458. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_repos_and_pull.py +0 -0
  459. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_restart_services_endpoint.py +0 -0
  460. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_skills_self_heal.py +0 -0
  461. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_startup_diagnostics.py +0 -0
  462. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_update.py +0 -0
  463. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_update_bluegreen.py +0 -0
  464. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_usage_limit.py +0 -0
  465. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_agent_zero_commit.py +0 -0
  466. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_ambient_home_isolation.py +0 -0
  467. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_approve_dependency_busy_2804.py +0 -0
  468. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_approve_reject_plan.py +0 -0
  469. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_approve_usage_gate.py +0 -0
  470. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_approved_work_2532.py +0 -0
  471. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_assignment_already_recorded_daemon.py +0 -0
  472. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_audit_log.py +0 -0
  473. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_audit_outcome.py +0 -0
  474. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_audit_query.py +0 -0
  475. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_auto_loop.py +0 -0
  476. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_auto_release_publish_2035.py +0 -0
  477. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_base_checkout_restore.py +0 -0
  478. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_block_log.py +0 -0
  479. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_board_cap_762.py +0 -0
  480. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_board_fixture.py +0 -0
  481. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_board_read_path.py +0 -0
  482. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_board_schema.py +0 -0
  483. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_board_service.py +0 -0
  484. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_board_state.py +0 -0
  485. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_board_wire.py +0 -0
  486. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_brain.py +0 -0
  487. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_branch_model.py +0 -0
  488. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_bug_intake.py +0 -0
  489. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_build_worker_image_env_update.py +0 -0
  490. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cargo_cache.py +0 -0
  491. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_check_gh_argv_containment.py +0 -0
  492. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_ci_acceptance_gate_1950.py +0 -0
  493. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_ci_fix.py +0 -0
  494. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_ci_gitlab.py +0 -0
  495. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_ci_parity_2091.py +0 -0
  496. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_ci_store.py +0 -0
  497. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_claim.py +0 -0
  498. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_claude_md_budget.py +0 -0
  499. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_acceptance.py +0 -0
  500. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_assign.py +0 -0
  501. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  502. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_assign_interactive_remote.py +0 -0
  503. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_assign_provider.py +0 -0
  504. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  505. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_audit.py +0 -0
  506. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_chat_continue.py +0 -0
  507. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_decide.py +0 -0
  508. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_diagnose_config_provenance.py +0 -0
  509. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_diagnose_forge_availability.py +0 -0
  510. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_diagnose_graph.py +0 -0
  511. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_diagnose_self.py +0 -0
  512. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_doctor.py +0 -0
  513. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_doctor_config_free_1801.py +0 -0
  514. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  515. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_drive.py +0 -0
  516. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_escalate.py +0 -0
  517. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_fix_headless_review.py +0 -0
  518. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_gate_a.py +0 -0
  519. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_install_drift.py +0 -0
  520. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_install_skills.py +0 -0
  521. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_issue_comment.py +0 -0
  522. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_issue_create_label.py +0 -0
  523. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_issue_reopen.py +0 -0
  524. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_issue_view_list.py +0 -0
  525. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_merge.py +0 -0
  526. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_assign.py +0 -0
  527. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_capture.py +0 -0
  528. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_chat_add_child.py +0 -0
  529. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_dispatch.py +0 -0
  530. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_gate_b.py +0 -0
  531. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_gate_c.py +0 -0
  532. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_order.py +0 -0
  533. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  534. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_milestone_ship.py +0 -0
  535. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_network.py +0 -0
  536. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_new_issue_chat.py +0 -0
  537. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_plans.py +0 -0
  538. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_portal.py +0 -0
  539. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_pr.py +0 -0
  540. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_pull_artifact.py +0 -0
  541. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_queue.py +0 -0
  542. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_reattach_sessions.py +0 -0
  543. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_refine_board.py +0 -0
  544. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_release_preflight.py +0 -0
  545. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_release_propagate.py +0 -0
  546. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_release_window.py +0 -0
  547. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_repo_2220.py +0 -0
  548. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  549. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_scorecard.py +0 -0
  550. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_set_review_findings.py +0 -0
  551. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_status_advisory_terminal.py +0 -0
  552. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_status_contested_tag.py +0 -0
  553. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_status_merge_queue.py +0 -0
  554. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_status_provider.py +0 -0
  555. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_status_review_finalizing.py +0 -0
  556. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_status_test_failed_tag.py +0 -0
  557. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_status_usage_limit.py +0 -0
  558. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_sync_comments_873.py +0 -0
  559. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_test_plan.py +0 -0
  560. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_track.py +0 -0
  561. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_tui_update.py +0 -0
  562. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cli_wait.py +0 -0
  563. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_client_base_install.py +0 -0
  564. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_commands_common.py +0 -0
  565. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_comments.py +0 -0
  566. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_completion_summary.py +0 -0
  567. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_config.py +0 -0
  568. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_config_acceptance.py +0 -0
  569. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_config_audit.py +0 -0
  570. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_config_pricing.py +0 -0
  571. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  572. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_config_usage_gate.py +0 -0
  573. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_confirm_test.py +0 -0
  574. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_conflict_fix.py +0 -0
  575. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_conflict_fix_semantic.py +0 -0
  576. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  577. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_test.py +0 -0
  578. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_test_runner_baseline.py +0 -0
  579. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_test_runner_populated_home.py +0 -0
  580. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_test_runner_routing.py +0 -0
  581. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_test_runner_toolchain.py +0 -0
  582. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_uat.py +0 -0
  583. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coord_web_sse_restart_live.py +0 -0
  584. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_coordinator_machine.py +0 -0
  585. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_cross_platform_imports.py +0 -0
  586. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dao.py +0 -0
  587. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dashboard.py +0 -0
  588. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dashboard_fixture.py +0 -0
  589. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dashboard_terminal.py +0 -0
  590. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dashboard_terminal_live.py +0 -0
  591. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_db.py +0 -0
  592. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dead_end.py +0 -0
  593. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_decomposition_chat.py +0 -0
  594. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_coord_db_backup.py +0 -0
  595. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_coord_web_dist.py +0 -0
  596. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_coord_web_rollback.py +0 -0
  597. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_drive_queue_unit.py +0 -0
  598. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_failure_notify_unit.py +0 -0
  599. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_manifest.py +0 -0
  600. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_notify_unit.py +0 -0
  601. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_units_lane.py +0 -0
  602. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deploy_web_unit.py +0 -0
  603. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_deps.py +0 -0
  604. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_diagnose.py +0 -0
  605. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dispatch.py +0 -0
  606. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dispatch_target_validation.py +0 -0
  607. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_dist_name.py +0 -0
  608. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_done_housekeeping.py +0 -0
  609. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive.py +0 -0
  610. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_queue_blocked_rendering.py +0 -0
  611. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_queue_launch_argv.py +0 -0
  612. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  613. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_queue_roll_pending.py +0 -0
  614. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  615. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_state.py +0 -0
  616. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_drive_tmux.py +0 -0
  617. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_epic_up_capability_detection.py +0 -0
  618. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  619. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_epic_up_image_provenance.py +0 -0
  620. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_errors.py +0 -0
  621. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_events.py +0 -0
  622. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_failure_class.py +0 -0
  623. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_filelock.py +0 -0
  624. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  625. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_fix_of_force_override.py +0 -0
  626. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_fleet_config_health.py +0 -0
  627. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_fleet_health_probes.py +0 -0
  628. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_fleet_health_snapshot.py +0 -0
  629. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_fleet_watchdog.py +0 -0
  630. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_forge_availability.py +0 -0
  631. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_freshness.py +0 -0
  632. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_gate_a.py +0 -0
  633. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_gate_b.py +0 -0
  634. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_gate_snapshot_staleness.py +0 -0
  635. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_gates.py +0 -0
  636. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  637. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_gen_mock_index.py +0 -0
  638. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_generated_rust_fixture.py +0 -0
  639. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_generated_types_fixture.py +0 -0
  640. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_github_ops.py +0 -0
  641. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_github_throttle.py +0 -0
  642. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_goal.py +0 -0
  643. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_graph_health.py +0 -0
  644. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_graph_selfheal_absent_2237.py +0 -0
  645. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_handoff.py +0 -0
  646. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_checks.py +0 -0
  647. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_cli.py +0 -0
  648. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_cli_graph.py +0 -0
  649. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_config.py +0 -0
  650. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_context.py +0 -0
  651. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_coord_web_ci_pin.py +0 -0
  652. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_deploy_lane_facts.py +0 -0
  653. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_fix.py +0 -0
  654. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_incident_regression.py +0 -0
  655. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_pypi.py +0 -0
  656. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_registry.py +0 -0
  657. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_release_cordon_probe.py +0 -0
  658. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_timer_active.py +0 -0
  659. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_toolchain.py +0 -0
  660. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_unit_drift.py +0 -0
  661. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_health_unit_enablement.py +0 -0
  662. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_hooks.py +0 -0
  663. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_human_attended_437.py +0 -0
  664. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_init.py +0 -0
  665. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_integration.py +0 -0
  666. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_interactive_briefing_echo.py +0 -0
  667. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_interactive_pane_log_2541.py +0 -0
  668. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_interactive_prefill_state.py +0 -0
  669. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_interactive_session_relaunch.py +0 -0
  670. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_interactive_test_verdict_backstop.py +0 -0
  671. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_interactive_token_attribution.py +0 -0
  672. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_interactive_worktree.py +0 -0
  673. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_issue_store_seam.py +0 -0
  674. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_liveness_auditor.py +0 -0
  675. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_liveness_notify.py +0 -0
  676. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_lock_contention_ratchet.py +0 -0
  677. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_machine_pause.py +0 -0
  678. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_merge_queue.py +0 -0
  679. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_merge_verify.py +0 -0
  680. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_milestone_chat.py +0 -0
  681. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_milestone_dispatch.py +0 -0
  682. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_milestone_gate.py +0 -0
  683. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_milestone_order.py +0 -0
  684. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_milestone_seam.py +0 -0
  685. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_mock_author.py +0 -0
  686. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_model_tiering.py +0 -0
  687. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_models.py +0 -0
  688. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_models_config_labels.py +0 -0
  689. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_needs_attention.py +0 -0
  690. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_network.py +0 -0
  691. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_new_issue_chat.py +0 -0
  692. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_next_release_tag.py +0 -0
  693. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_node_shim.py +0 -0
  694. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_baseline.py +0 -0
  695. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_cli.py +0 -0
  696. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_collect.py +0 -0
  697. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_config.py +0 -0
  698. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_drive_seam.py +0 -0
  699. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_isolation.py +0 -0
  700. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_predicate.py +0 -0
  701. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_quiet_hours.py +0 -0
  702. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notifier_service.py +0 -0
  703. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notify.py +0 -0
  704. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_notify_drain.py +0 -0
  705. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_openapi.py +0 -0
  706. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_operational_defaults.py +0 -0
  707. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_overlap_fence.py +0 -0
  708. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_overlap_predict.py +0 -0
  709. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_packaged_deploy_units.py +0 -0
  710. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_parentage.py +0 -0
  711. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_paste_landed.py +0 -0
  712. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  713. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_pipeline.py +0 -0
  714. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_plan_followup_approve_plan_command.py +0 -0
  715. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_plan_followup_pr_command.py +0 -0
  716. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_plan_followup_review_command.py +0 -0
  717. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_plan_only.py +0 -0
  718. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_plan_parser.py +0 -0
  719. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_platform_paths.py +0 -0
  720. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_portal_bridge.py +0 -0
  721. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_portal_config.py +0 -0
  722. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_portal_store.py +0 -0
  723. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_portal_sync.py +0 -0
  724. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_pr_body_lint.py +0 -0
  725. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_prereqs.py +0 -0
  726. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_production_db_guard.py +0 -0
  727. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_progress.py +0 -0
  728. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_provider_seam.py +0 -0
  729. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_providers.py +0 -0
  730. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_providers_config_labels.py +0 -0
  731. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_providers_pty.py +0 -0
  732. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_quiet_hours.py +0 -0
  733. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_quiet_hours_store_2146.py +0 -0
  734. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reap_merged_sessions.py +0 -0
  735. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reap_stale_interactive_tick.py +0 -0
  736. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile.py +0 -0
  737. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile_branch.py +0 -0
  738. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile_completions.py +0 -0
  739. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  740. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile_merges.py +0 -0
  741. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile_no_agent_record.py +0 -0
  742. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile_tick.py +0 -0
  743. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reconcile_usage_limit_done.py +0 -0
  744. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_refine_chat.py +0 -0
  745. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_cordon_2101.py +0 -0
  746. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  747. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_cordon_deadlock_2240.py +0 -0
  748. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_cordon_stuck_2490.py +0 -0
  749. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_propagate.py +0 -0
  750. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_propagate_threshold.py +0 -0
  751. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_roll_window_handoff.py +0 -0
  752. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_unified_1242.py +0 -0
  753. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_verify.py +0 -0
  754. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_release_window.py +0 -0
  755. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_remote_auto_prune.py +0 -0
  756. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_remote_interactive_reaper.py +0 -0
  757. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_repo_add.py +0 -0
  758. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_repo_edit_2220.py +0 -0
  759. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_repo_graph_fleet_2237.py +0 -0
  760. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_repo_onboard_2220.py +0 -0
  761. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_report_result_push.py +0 -0
  762. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_reports.py +0 -0
  763. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_retry.py +0 -0
  764. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_retry_advisory_1606.py +0 -0
  765. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_retry_type_1636.py +0 -0
  766. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_revalidate.py +0 -0
  767. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review.py +0 -0
  768. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_end_review_without_verdict.py +0 -0
  769. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_parse_failure_diagnostic.py +0 -0
  770. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_reaffirm.py +0 -0
  771. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_state.py +0 -0
  772. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_verdict_backstop.py +0 -0
  773. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_verdict_override_audit.py +0 -0
  774. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_verdict_relay.py +0 -0
  775. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_review_zero_commits.py +0 -0
  776. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_scoped_review_wiring.py +0 -0
  777. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_scorecard.py +0 -0
  778. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_self_health.py +0 -0
  779. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_serve.py +0 -0
  780. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_serve_app_board_trim.py +0 -0
  781. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_session.py +0 -0
  782. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_slice_issue_attribution.py +0 -0
  783. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_smoke.py +0 -0
  784. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_smoke_live_checkout_restore.py +0 -0
  785. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_smoke_workflow.py +0 -0
  786. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_spend_ceiling.py +0 -0
  787. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_spend_ceiling_coordinator.py +0 -0
  788. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_split.py +0 -0
  789. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_split_work.py +0 -0
  790. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_sql_dialect.py +0 -0
  791. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_stage_projection.py +0 -0
  792. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_stalled_pipeline.py +0 -0
  793. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_state.py +0 -0
  794. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_state_review_findings_daemon.py +0 -0
  795. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_status_fleet_footer.py +0 -0
  796. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_stop_1567.py +0 -0
  797. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_store_contract.py +0 -0
  798. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_stuck.py +0 -0
  799. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  800. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_terminal_command.py +0 -0
  801. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_test_author.py +0 -0
  802. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_test_chat.py +0 -0
  803. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_test_orchestrator.py +0 -0
  804. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_test_report.py +0 -0
  805. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_test_verdict_parsing.py +0 -0
  806. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_test_verdict_transcript_floor.py +0 -0
  807. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_text_io_encoding_audit.py +0 -0
  808. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_thin_client_board_audit.py +0 -0
  809. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_thin_client_config_load_1080.py +0 -0
  810. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_thin_client_daemon_routing_906.py +0 -0
  811. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_tmux_host.py +0 -0
  812. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_tmux_session.py +0 -0
  813. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_transcript_floor.py +0 -0
  814. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_usage.py +0 -0
  815. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_usage_limits.py +0 -0
  816. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_usage_rollup.py +0 -0
  817. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_venv_live_install_2121.py +0 -0
  818. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_version_single_source.py +0 -0
  819. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_watch.py +0 -0
  820. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  821. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_worker_env_venv_isolation.py +0 -0
  822. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_worker_events.py +0 -0
  823. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_worker_image_pin_sync.py +0 -0
  824. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_worker_safety.py +0 -0
  825. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_worker_test_scoping.py +0 -0
  826. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_worktree.py +0 -0
  827. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  828. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/Cargo.lock +0 -0
  829. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/Cargo.toml +0 -0
  830. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/cargo-config-local-quadraui.toml.example +0 -0
  831. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/approved.rs +0 -0
  832. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/audit.rs +0 -0
  833. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/chat.rs +0 -0
  834. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/data.rs +0 -0
  835. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/dialogs.rs +0 -0
  836. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/doc_tabs.rs +0 -0
  837. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/drive.rs +0 -0
  838. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/drive_queue.rs +0 -0
  839. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/escalation.rs +0 -0
  840. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/events.rs +0 -0
  841. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/fixtures.rs +0 -0
  842. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/fleet_health.rs +0 -0
  843. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/fleet_sessions.rs +0 -0
  844. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/fleet_terminals.rs +0 -0
  845. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/format.rs +0 -0
  846. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/milestone_dag.rs +0 -0
  847. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/mod.rs +0 -0
  848. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/msv.rs +0 -0
  849. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/pipeline.rs +0 -0
  850. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/plans.rs +0 -0
  851. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/render.rs +0 -0
  852. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/reports.rs +0 -0
  853. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/sessions.rs +0 -0
  854. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/settings_ui.rs +0 -0
  855. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/sidebar.rs +0 -0
  856. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/terminal.rs +0 -0
  857. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/tests.rs +0 -0
  858. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/types/generated.rs +0 -0
  859. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/types.rs +0 -0
  860. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/app/workspace.rs +0 -0
  861. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/bin/gtk.rs +0 -0
  862. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/commands.rs +0 -0
  863. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/lib.rs +0 -0
  864. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/main.rs +0 -0
  865. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/src/settings.rs +0 -0
  866. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/tests/acceptance.rs +0 -0
  867. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/tests/cli.rs +0 -0
  868. {code_coordinator-0.5.256 → code_coordinator-0.5.258}/tui/tests/fixtures/board_sample.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.256
3
+ Version: 0.5.258
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.256
3
+ Version: 0.5.258
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
@@ -667,6 +667,7 @@ tests/test_release_cordon_deadlock_2240.py
667
667
  tests/test_release_cordon_stuck_2490.py
668
668
  tests/test_release_propagate.py
669
669
  tests/test_release_propagate_threshold.py
670
+ tests/test_release_roll_between_legs_2854.py
670
671
  tests/test_release_roll_window_handoff.py
671
672
  tests/test_release_unified_1242.py
672
673
  tests/test_release_verify.py
@@ -739,6 +739,7 @@
739
739
  "tests/test_release_cordon_stuck_2490.py",
740
740
  "tests/test_release_propagate.py",
741
741
  "tests/test_release_propagate_threshold.py",
742
+ "tests/test_release_roll_between_legs_2854.py",
742
743
  "tests/test_release_roll_window_handoff.py",
743
744
  "tests/test_release_unified_1242.py",
744
745
  "tests/test_release_verify.py",
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.256",
2
+ "tag": "0.5.258",
3
3
  "distance": 0,
4
- "node": "g1d53f40b4c8b97ed2f04d59ad1fad5e0d631d098",
4
+ "node": "gef4810f9d5759ef0c6af207cb768d16498aae9f4",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-27"
@@ -3450,21 +3450,45 @@ def _fetch_live_prereq_terminal(
3450
3450
  BOUNDED THE SAME WAY ITS SIBLINGS ARE. Only deps named by an entry
3451
3451
  currently ``waiting`` or ``blocked`` with a non-empty ``after=``, and
3452
3452
  only those the board does NOT already resolve on its own
3453
- (``facts.landed``, ``facts.open``, ``facts.active_work``, or a hit in
3454
- this tick's own pre-reconcile ``states`` — i.e. genuinely still queued)
3455
- make it into a live call. A queue with no unresolved ``after=`` edge
3456
- costs nothing here, same as ``_fetch_live_blocked_gate`` costs nothing
3457
- with no ``blocked`` rows. ``states`` is approximated from *entries*'
3458
- pre-tick ``state`` field (cheap, no I/O) rather than threaded from
3459
- ``plan_tick``'s own in-progress reconcile — a false negative here (a dep
3460
- this approximation still calls a live-check target, when the tick's own
3461
- authoritative ``states`` would already have resolved it another way)
3462
- costs one harmless extra ``gh`` read, never a wrong verdict:
3463
- ``_resolve_prereqs`` only ever consults this mapping in its OWN final
3464
- branch, after its own ``states``/``facts`` checks have already returned.
3465
- A false positive (a dep this skips that the tick's real walk would have
3466
- reached the final branch for) simply leaves that one dep to the
3467
- pre-#2602 fallback for this tick — caught on the next one.
3453
+ (``facts.landed``, ``facts.open``, ``facts.active_work``, or a
3454
+ ``STATE_DONE`` hit in this tick's own pre-reconcile ``states`` — i.e.
3455
+ already known landed) make it into a live call. A queue with no
3456
+ unresolved ``after=`` edge costs nothing here, same as
3457
+ ``_fetch_live_blocked_gate`` costs nothing with no ``blocked`` rows.
3458
+ ``states`` is approximated from *entries*' pre-tick ``state`` field
3459
+ (cheap, no I/O) rather than threaded from ``plan_tick``'s own
3460
+ in-progress reconcile — a false negative here (a dep this approximation
3461
+ still calls a live-check target, when the tick's own authoritative
3462
+ ``states`` would already have resolved it another way) costs one
3463
+ harmless extra ``gh`` read, never a wrong verdict: ``_resolve_prereqs``
3464
+ only ever consults this mapping in its OWN final branch, after its own
3465
+ ``states``/``facts`` checks have already returned. A false positive (a
3466
+ dep this skips that the tick's real walk would have reached the final
3467
+ branch for) simply leaves that one dep to the pre-#2602 fallback for
3468
+ this tick — caught on the next one.
3469
+
3470
+ #2850 WIDENS THE BOUND, in two ways, both closing the same class of gap
3471
+ the incident exposed (a pre-req stuck under a stale/bogus queue row, not
3472
+ merely absent from the queue):
3473
+
3474
+ * a dep whose queue row IS present now still gets a live call as long as
3475
+ that row isn't already ``STATE_DONE`` — before #2850 any dep present
3476
+ in ``states`` at all (``running``, ``waiting``, ``blocked``, ...) was
3477
+ excluded outright, on the (pre-#2850) assumption that "still queued"
3478
+ meant the local row was trustworthy. A `running` row that outlived the
3479
+ drive it named (the #2850 incident: a drive that exited 0 having
3480
+ merged, requeued into a `running` row nothing else re-checks) broke
3481
+ that assumption; ``coord.drive_queue._resolve_prereqs``'s matching
3482
+ #2850 change is what actually consults this for those deps.
3483
+ * every ``running`` entry's OWN key is also added as a target when it
3484
+ has no live tmux session (``board.live_sessions``) and the board does
3485
+ not yet show it landed — i.e. exactly the entries
3486
+ ``coord.drive_queue._reconcile_running`` is about to run its
3487
+ death/retry diagnosis on THIS tick. That function consults this same
3488
+ mapping, keyed by its OWN ``entry.key``, right before it would
3489
+ otherwise spend a requeue attempt — the "re-check before requeuing
3490
+ anything" half of #2850, independent of whatever (if anything) the
3491
+ drive's own exit reason said.
3468
3492
  """
3469
3493
  states = {e.key: e.state for e in entries}
3470
3494
  targets: set[str] = set()
@@ -3472,12 +3496,24 @@ def _fetch_live_prereq_terminal(
3472
3496
  if e.state not in (STATE_WAITING, STATE_BLOCKED) or not e.after:
3473
3497
  continue
3474
3498
  for dep in e.after:
3475
- if dep in targets or states.get(dep) is not None:
3499
+ if dep in targets or states.get(dep) == STATE_DONE:
3476
3500
  continue
3477
3501
  facts = board.facts(dep)
3478
3502
  if facts.landed or facts.open or facts.active_work:
3479
3503
  continue
3480
3504
  targets.add(dep)
3505
+ # #2850: a RUNNING entry about to be reconciled by `_reconcile_running`'s
3506
+ # death/retry logic THIS tick (no live session, and the board's own
3507
+ # cached facts don't show it landed) gets the identical live re-check —
3508
+ # bounded to exactly the entries that would otherwise risk a requeue.
3509
+ for e in entries:
3510
+ if e.state != STATE_RUNNING or e.key in targets:
3511
+ continue
3512
+ if e.key in board.live_sessions:
3513
+ continue
3514
+ if board.facts(e.key).landed:
3515
+ continue
3516
+ targets.add(e.key)
3481
3517
  if not targets:
3482
3518
  return {}
3483
3519
 
@@ -908,11 +908,16 @@ def release_propagate( # noqa: PLR0912, PLR0915 — a pipeline; the decisions a
908
908
  # have happened at all). Feed the same seam so it defers like a live
909
909
  # assignment instead of getting reaped.
910
910
  extra_busy.extend(_confirmation_running_busy())
911
+ # #2854: `now` opts this run into the between-legs settle window — a
912
+ # drive-queue row that is `running` but has genuinely had no live
913
+ # assignment on its last-known host for at least the settle window rolls
914
+ # that host without waiting for the row to reach a terminal state.
911
915
  quiescence = rp.assess_quiescence(
912
916
  queue_entries=board.get("drive_queue") or [],
913
917
  assignments=board.get("assignments") or [],
914
918
  issues=board.get("issues") or [],
915
919
  extra_busy=extra_busy,
920
+ now=time.time(),
916
921
  )
917
922
  record.quiescence = quiescence.to_dict()
918
923
  if quiescence.stale:
@@ -927,6 +932,19 @@ def release_propagate( # noqa: PLR0912, PLR0915 — a pipeline; the decisions a
927
932
  "tick --reconcile-only` to clear them for good)",
928
933
  err=True,
929
934
  )
935
+ if quiescence.settled:
936
+ # #2854: a `running` row whose host rolled BETWEEN LEGS — the row
937
+ # itself is still in flight, only the settled host is being treated
938
+ # as idle. Printed unconditionally, same reasoning as `stale` above:
939
+ # a host rolled mid-drive must leave a readable trace of why that was
940
+ # judged safe.
941
+ click.echo(
942
+ "note: rolling host(s) for drive-queue row(s) that are between "
943
+ f"legs and past the settle window: {', '.join(quiescence.settled)} "
944
+ "(#2854 — the row itself is still running; only the currently "
945
+ "idle host is being treated as quiescent)",
946
+ err=True,
947
+ )
930
948
 
931
949
  hosts = [m.name for m in (getattr(config, "machines", ()) or ())]
932
950
  busy_hosts = quiescence.busy_hosts()
@@ -2705,14 +2723,21 @@ def _drain(
2705
2723
  rp.Busy(kind="board unreadable", subject="/board", detail=board_error)
2706
2724
  )
2707
2725
  extra_busy.extend(extra_busy_fetch())
2726
+ # #2854: same settle-window opt-in as the top-level `propagate` call
2727
+ # site — one clock read per poll, reused for both the settle window
2728
+ # and `elapsed` below, so a between-legs gap that crosses the settle
2729
+ # threshold mid-drain clears within THIS wait rather than only on
2730
+ # the next `coord release propagate` tick.
2731
+ poll_now = now_fn()
2708
2732
  quiescence = rp.assess_quiescence(
2709
2733
  queue_entries=board.get("drive_queue") or [],
2710
2734
  assignments=board.get("assignments") or [],
2711
2735
  issues=board.get("issues") or [],
2712
2736
  extra_busy=extra_busy,
2737
+ now=poll_now,
2713
2738
  )
2714
2739
  busy = bool(quiescence.fleet_wide_busy) or daemon_host in quiescence.busy_hosts()
2715
- elapsed = now_fn() - start
2740
+ elapsed = poll_now - start
2716
2741
  if not busy:
2717
2742
  return rw.DrainOutcome(drained=True, elapsed_seconds=elapsed, detail="drained")
2718
2743
  detail = quiescence.busy_reason_for_host(daemon_host) or quiescence.reason
@@ -116,7 +116,11 @@ from coord.failure_class import (
116
116
  environmental_backoff_secs,
117
117
  plan_usage_limit_resume,
118
118
  )
119
- from coord.models import DELIVERABLE_ANALYSIS_LABEL, POLICY_REFUSAL_MARKER
119
+ from coord.models import (
120
+ DELIVERABLE_ANALYSIS_LABEL,
121
+ MERGE_LANDED_MARKER,
122
+ POLICY_REFUSAL_MARKER,
123
+ )
120
124
  from coord.self_health import self_freshness
121
125
  from coord.usage_limits import PlanLimits, evaluate_usage_gate, get_plan_limits
122
126
  # Lost in the #1584-onto-#1590 rebase: _decide_review() calls this, but the
@@ -1869,7 +1873,10 @@ def decide(
1869
1873
  if state.work_status == "merged" or state.merge_status == "MERGED":
1870
1874
  target = state.repo_default_branch or "main"
1871
1875
  if state.work_branch and verifier.verify_merged(state):
1872
- return _succeed(f"✓ MERGED — {state.work_branch} has landed on {target}")
1876
+ return _succeed(
1877
+ f"✓ MERGED — {state.work_branch} has landed on {target}\n"
1878
+ f" {MERGE_LANDED_MARKER}"
1879
+ )
1873
1880
  base = opts.repo_path or f"~/src/{state.repo}"
1874
1881
  return _die(
1875
1882
  f"board says merged but {state.work_branch} has NOT landed on {target}\n"
@@ -100,7 +100,7 @@ from coord.merge_queue import (
100
100
  is_ci_unreadable_reason,
101
101
  is_stale_smoke_reason,
102
102
  )
103
- from coord.models import is_policy_refusal_reason
103
+ from coord.models import is_merge_landed_reason, is_policy_refusal_reason
104
104
 
105
105
  # ── queue states ─────────────────────────────────────────────────────────────
106
106
  #
@@ -1818,17 +1818,26 @@ def _resolve_prereqs(
1818
1818
  _fetch_live_prereq_terminal``, the same positive-liveness test
1819
1819
  ``coord.overlap_predict``'s ``terminal_checker`` uses for the sibling
1820
1820
  ``[branch]`` half of #2602) confirms the issue is closed or its PR
1821
- merged — consulted ONLY in the final branch below, right before it would
1822
- otherwise declare *dep* unsatisfiable. This is the recovery half: the
1823
- cached ``board.facts(dep)`` this function checks first is a periodic
1824
- ``/board`` build, not a live read, and a pre-req that has JUST left the
1825
- queue (merged, issue closed) can outrun that cache — reading as "not
1826
- queued, not merged, not open" (:data:`_UNKNOWN_PREREQ_MARKER`) even
1821
+ merged. This is the recovery half: the cached ``board.facts(dep)`` this
1822
+ function checks first is a periodic ``/board`` build, not a live read,
1823
+ and a pre-req that has JUST left the queue (merged, issue closed) can
1824
+ outrun that cache — reading as "not queued, not merged, not open" even
1827
1825
  though the dep is, in fact, already done. Before this existed that
1828
1826
  verdict was unconditionally unsatisfiable and permanent
1829
1827
  (coord-portal#145/#149/#150, 2026-08-22): a dep absent here (no live
1830
1828
  check ran, or it ran and came back inconclusive) falls through to
1831
1829
  exactly that pre-#2602 behaviour — never a false "satisfied".
1830
+
1831
+ #2850 widens WHERE this is consulted: originally only the final branch
1832
+ below (*dep* absent from the queue entirely) checked it. But a dep can
1833
+ just as easily be PRESENT in the queue under a stale or outright bogus
1834
+ row — the #2850 incident: a drive that exited 0 having merged got
1835
+ requeued into a `running` row that never dies again on its own — and
1836
+ that shape used to return "waiting"/"will never satisfy" straight out
1837
+ of the ``dep_state is not None`` branch, never reaching this check at
1838
+ all. So it is now ALSO consulted there, for every ``dep_state`` other
1839
+ than ``STATE_DONE``: a pre-req that demonstrably landed must satisfy
1840
+ the dependent whatever its own queue row happens to claim.
1832
1841
  """
1833
1842
  if entry.key in cycle_keys:
1834
1843
  return _Verdict(False, True, cycle_keys[entry.key])
@@ -1863,6 +1872,20 @@ def _resolve_prereqs(
1863
1872
  # flips to `done`, instead of the tick after the cache
1864
1873
  # independently rediscovers the same fact.
1865
1874
  continue
1875
+ if (live_prereq_terminal or {}).get(dep):
1876
+ # #2850: *dep*'s OWN queue row says it is still in play
1877
+ # (``running``, ``waiting``, ``blocked``, ...) — but a live
1878
+ # re-check taken THIS tick confirms it is, in fact, already
1879
+ # closed or merged. Before this, only a dep ABSENT from the
1880
+ # queue entirely ever reached the #2602 recovery check below;
1881
+ # a dep still SITTING in the queue under a stale/bogus row
1882
+ # (the #2850 incident: a drive that exited 0 having merged,
1883
+ # requeued into a bogus `running` row) short-circuited to
1884
+ # "waiting"/"will never satisfy" here and shadowed the very
1885
+ # recovery check meant to catch exactly this. A dependent
1886
+ # must never be blocked by a pre-req that demonstrably
1887
+ # landed, whatever its queue row claims.
1888
+ continue
1866
1889
  if dep_state in (STATE_BLOCKED, STATE_FAILED):
1867
1890
  return _Verdict(
1868
1891
  False,
@@ -2757,6 +2780,7 @@ def _reconcile_running(
2757
2780
  exit_reasons: Mapping[str, str] | None = None,
2758
2781
  exit_refused: Mapping[str, bool] | None = None,
2759
2782
  exit_dead_end: Mapping[str, bool] | None = None,
2783
+ live_prereq_terminal: Mapping[str, bool] | None = None,
2760
2784
  ) -> tuple[Reconcile, Blocked | None]:
2761
2785
  """Resolve one ``running`` entry against the board.
2762
2786
 
@@ -2848,6 +2872,35 @@ def _reconcile_running(
2848
2872
  the default budget. Still finite, still ``exhausted`` → ``blocked`` with
2849
2873
  the same diagnosis-and-recovery instructions once ITS wider ceiling is
2850
2874
  also hit.
2875
+
2876
+ #2850 adds TWO more "already landed" signals, both checked with the SAME
2877
+ priority as ``facts.landed`` above — right after it, before
2878
+ ``facts.active_work`` — because both are confirmations of terminal
2879
+ completion at least as strong as a cached board read, and a drive that
2880
+ has genuinely landed must never be requeued regardless of what
2881
+ ``active_work``/cross-host/grace-window evidence says next:
2882
+
2883
+ * ``own_reason`` matching :func:`coord.models.is_merge_landed_reason` —
2884
+ the drive's OWN exit narrated a confirmed merge (``coord.drive.
2885
+ decide``'s "terminal: merged" branch, gated on a LIVE
2886
+ ``verifier.verify_merged`` call, not merely the board's cached
2887
+ ``merge_status``). Before this, ``exit_code=0`` plus a "✓ MERGED —
2888
+ … has landed" summary still fell all the way through to the generic
2889
+ "no session, no active work, nothing landed" retry logic below — the
2890
+ drive's own strongest evidence, sitting unread in ``own_reason``,
2891
+ never consulted — and got requeued and relaunched into dead air.
2892
+ * *live_prereq_terminal* (#2602's mechanism, reused): when the shell's
2893
+ bounded live re-check (:func:`coord.commands.drive_queue.
2894
+ _fetch_live_prereq_terminal`, widened by #2850 to also probe a
2895
+ ``running`` entry's OWN key, not just other entries' ``after=``
2896
+ pre-reqs) confirms THIS key is closed or merged, that outranks
2897
+ ``own_reason`` even existing — it catches every OTHER shape of "this
2898
+ entry's issue is actually done, but this run's own exit reason
2899
+ either says nothing about it or predates it" (a crash, a reap, a
2900
+ dead-end exit for an issue that merged out of band between the crash
2901
+ and this tick). Re-checking before ANY requeue — not only the
2902
+ literal MERGED-exit-text case — is what makes the class safe rather
2903
+ than patching just the one reported instance.
2851
2904
  """
2852
2905
  facts = board.facts(entry.key)
2853
2906
 
@@ -2874,6 +2927,62 @@ def _reconcile_running(
2874
2927
  None,
2875
2928
  )
2876
2929
 
2930
+ # Resolved here — before `facts.active_work` and everything after it —
2931
+ # so the #2850 merged-exit check just below can use it; every later
2932
+ # branch that reads `own_reason` (gate_a/policy park, refused/dead_end,
2933
+ # the retry/exhausted wording) is unaffected by hoisting this, since
2934
+ # none of them run before this point.
2935
+ own_reason = (exit_reasons or {}).get(entry.key)
2936
+ if own_reason and is_merge_landed_reason(own_reason):
2937
+ # #2850: the drive's own exit already confirmed — via a LIVE
2938
+ # `verify_merged` check, not the board's cached `merge_status` —
2939
+ # that this landed. Mark it done here, before anything below gets a
2940
+ # chance to read the absent session / absent active-work as a death
2941
+ # and requeue a launch that has nothing left to do.
2942
+ reason = f"{own_reason} — confirmed merged (#2850), not a death"
2943
+ return (
2944
+ Reconcile(
2945
+ entry.key,
2946
+ "done",
2947
+ reason,
2948
+ occupies=False,
2949
+ updates={
2950
+ "state": STATE_DONE,
2951
+ "last_reason": reason,
2952
+ "session_name": None,
2953
+ },
2954
+ ),
2955
+ None,
2956
+ )
2957
+
2958
+ if (live_prereq_terminal or {}).get(entry.key):
2959
+ # #2850 defence in depth: whatever THIS run's own exit reason says
2960
+ # (or doesn't — a crash leaves none at all), a live re-check taken
2961
+ # THIS tick confirms the issue is already closed or its PR merged.
2962
+ # That is stronger evidence than an absent tmux session and absent
2963
+ # board `active_work` could ever be on their own — mark done rather
2964
+ # than let the death-diagnosis logic below spend an attempt
2965
+ # relaunching a drive with nothing left to do.
2966
+ reason = (
2967
+ "drive finished — a live re-check this tick confirms the issue "
2968
+ "is already closed or its PR merged (#2850), independent of "
2969
+ "this run's own exit reason and the cached board"
2970
+ )
2971
+ return (
2972
+ Reconcile(
2973
+ entry.key,
2974
+ "done",
2975
+ reason,
2976
+ occupies=False,
2977
+ updates={
2978
+ "state": STATE_DONE,
2979
+ "last_reason": reason,
2980
+ "session_name": None,
2981
+ },
2982
+ ),
2983
+ None,
2984
+ )
2985
+
2877
2986
  if facts.active_work:
2878
2987
  return (
2879
2988
  Reconcile(
@@ -2916,7 +3025,10 @@ def _reconcile_running(
2916
3025
  # purely for stability — the two codes are mutually exclusive by
2917
3026
  # construction (`_drive_exit_summary` records exactly one), so the order
2918
3027
  # is never actually load-bearing.
2919
- own_reason = (exit_reasons or {}).get(entry.key)
3028
+ #
3029
+ # `own_reason` itself was already resolved above (#2850, before the
3030
+ # `facts.active_work` check) so the merged-exit short-circuit could use
3031
+ # it — reused here unchanged.
2920
3032
 
2921
3033
  # #2063 rides the SAME evidence as `refused` below but reaches the
2922
3034
  # OPPOSITE conclusion, so it is checked first. A Gate-A "no recorded
@@ -4121,6 +4233,7 @@ def plan_tick(
4121
4233
  exit_reasons=exit_reasons,
4122
4234
  exit_refused=exit_refused,
4123
4235
  exit_dead_end=exit_dead_end,
4236
+ live_prereq_terminal=live_prereq_terminal,
4124
4237
  )
4125
4238
  reconciles.append(reconcile)
4126
4239
  if reconcile.occupies:
@@ -550,6 +550,31 @@ def is_policy_refusal_reason(text: str | None) -> bool:
550
550
  return bool(text) and POLICY_REFUSAL_MARKER in text
551
551
 
552
552
 
553
+ # #2850: the machine-readable tag `coord.drive.decide` embeds in its
554
+ # `_succeed()` message when the "terminal: merged" branch's own LIVE check
555
+ # (`MergeVerifier.verify_merged`) confirms the issue has genuinely landed —
556
+ # not merely that the board's cached `merge_status` claims so.
557
+ #
558
+ # Text-marker matching (not a dedicated exit code) mirrors
559
+ # `POLICY_REFUSAL_MARKER` immediately above: `EXIT_OK` is shared by every
560
+ # clean drive exit — this one, a `deliverable:analysis` 0-commit stop, and a
561
+ # `--no-merge` "review approved, stopping here" — so the exit code alone
562
+ # cannot distinguish "confirmed merged" from "stopped short of merging on
563
+ # purpose". `coord/drive_queue.py`'s `_reconcile_running` recognises this
564
+ # straight out of the drive's own `drive_exited` audit summary (`own_reason`)
565
+ # and marks the queue entry `done` instead of requeuing a launch that has
566
+ # nothing left to do — closing the #2850 failure mode: a drive that exits 0
567
+ # having MERGED got requeued and relaunched into dead air, with the bogus
568
+ # `running` row shadowing #2602's own live re-check for every dependent
569
+ # chained `--after` it.
570
+ MERGE_LANDED_MARKER = "[drive-merged #2850]"
571
+
572
+
573
+ def is_merge_landed_reason(text: str | None) -> bool:
574
+ """Whether *text* is a #2850 confirmed-merge drive-exit reason."""
575
+ return bool(text) and MERGE_LANDED_MARKER in text
576
+
577
+
553
578
  @dataclass
554
579
  class Assignment:
555
580
  machine_name: str