code-coordinator 0.5.269__tar.gz → 0.5.271__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 (874) hide show
  1. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/SOURCES.txt +1 -0
  4. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/scm_file_list.json +1 -0
  5. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/scm_version.json +2 -2
  6. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/drive.py +97 -16
  7. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/drive_state.py +29 -7
  8. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/review.py +108 -2
  9. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive.py +36 -0
  10. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_state.py +92 -0
  11. code_coordinator-0.5.271/tests/test_stale_busy_reviewer_697.py +192 -0
  12. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.claude/commands/board.md +0 -0
  13. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.claude/commands/complete-session.md +0 -0
  14. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.claude/commands/coordinator.md +0 -0
  15. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.githooks/_lib.sh +0 -0
  16. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.githooks/post-checkout +0 -0
  17. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.githooks/post-commit +0 -0
  18. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.githooks/post-merge +0 -0
  19. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  20. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.github/coord-ci-acceptance.yml +0 -0
  21. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.github/workflows/auto-release.yml +0 -0
  22. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.github/workflows/cargo-test.yml +0 -0
  23. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.github/workflows/publish.yml +0 -0
  24. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.github/workflows/release-tui.yml +0 -0
  25. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.github/workflows/test.yml +0 -0
  26. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/.gitignore +0 -0
  27. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/CLAUDE.md +0 -0
  28. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/GOAL.md +0 -0
  29. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/LICENSE +0 -0
  30. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/MANIFEST.in +0 -0
  31. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/README.md +0 -0
  32. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/dependency_links.txt +0 -0
  33. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/entry_points.txt +0 -0
  34. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/requires.txt +0 -0
  35. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/code_coordinator.egg-info/top_level.txt +0 -0
  36. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/__init__.py +0 -0
  37. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/_board_mapping.py +0 -0
  38. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/acceptance.py +0 -0
  39. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/acceptance_drivers.py +0 -0
  40. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/agent.py +0 -0
  41. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/agent_app.py +0 -0
  42. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/agent_update.py +0 -0
  43. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/agents/opencode/.gitignore +0 -0
  44. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/agents/opencode/agents/work.md +0 -0
  45. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/agents/opencode/routing.jsonc +0 -0
  46. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/approved_work.py +0 -0
  47. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/audit.py +0 -0
  48. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/auto_loop.py +0 -0
  49. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/block_log.py +0 -0
  50. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/board_bool_guard.py +0 -0
  51. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/board_schema.py +0 -0
  52. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/board_service.py +0 -0
  53. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/board_wire.py +0 -0
  54. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/brain.py +0 -0
  55. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/branch_model.py +0 -0
  56. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/bug_intake.py +0 -0
  57. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/cargo_cache.py +0 -0
  58. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/ci_fix.py +0 -0
  59. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/ci_github.py +0 -0
  60. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/ci_gitlab.py +0 -0
  61. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/ci_store.py +0 -0
  62. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/claim.py +0 -0
  63. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/cli.py +0 -0
  64. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/client.py +0 -0
  65. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/__init__.py +0 -0
  66. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/_common.py +0 -0
  67. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/acceptance.py +0 -0
  68. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/agent_ops.py +0 -0
  69. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/audit.py +0 -0
  70. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/chat.py +0 -0
  71. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/dispatch.py +0 -0
  72. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/dispatch_workers.py +0 -0
  73. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/drive.py +0 -0
  74. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/drive_queue.py +0 -0
  75. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/gate_a.py +0 -0
  76. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/gates.py +0 -0
  77. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/issues.py +0 -0
  78. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/lifecycle.py +0 -0
  79. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/merge.py +0 -0
  80. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/milestone.py +0 -0
  81. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/plan_followup.py +0 -0
  82. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/plans.py +0 -0
  83. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/portal.py +0 -0
  84. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/pr.py +0 -0
  85. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/release.py +0 -0
  86. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/repo.py +0 -0
  87. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/report.py +0 -0
  88. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/review.py +0 -0
  89. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/scorecard.py +0 -0
  90. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/sessions.py +0 -0
  91. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/setup.py +0 -0
  92. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/status.py +0 -0
  93. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/terminal.py +0 -0
  94. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/test_gate.py +0 -0
  95. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/commands/tui.py +0 -0
  96. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/comments.py +0 -0
  97. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/config.py +0 -0
  98. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/config_reload.py +0 -0
  99. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/confirm_test.py +0 -0
  100. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/conflict_fix.py +0 -0
  101. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dao.py +0 -0
  102. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dashboard/__init__.py +0 -0
  103. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dashboard/fixture.py +0 -0
  104. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dashboard/index.html +0 -0
  105. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dashboard/server.py +0 -0
  106. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dashboard/terminal.py +0 -0
  107. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/db.py +0 -0
  108. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dead_end.py +0 -0
  109. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/decomposition_chat.py +0 -0
  110. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/README.md +0 -0
  111. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-agent.service +0 -0
  112. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-db-backup.service +0 -0
  113. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-db-backup.sh +0 -0
  114. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-db-backup.timer +0 -0
  115. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-drive-queue.service +0 -0
  116. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-drive-queue.timer +0 -0
  117. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-failure-notify.service +0 -0
  118. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-fleet-watchdog.service +0 -0
  119. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  120. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-notify.service +0 -0
  121. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-notify.timer +0 -0
  122. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-release-propagate.service +0 -0
  123. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-release-propagate.timer +0 -0
  124. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-release-window.service +0 -0
  125. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-release-window.timer +0 -0
  126. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-serve.service +0 -0
  127. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-web-dist-build.service +0 -0
  128. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-web-dist-build.timer +0 -0
  129. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy/coord-web.service +0 -0
  130. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy_manifest.py +0 -0
  131. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deploy_units.py +0 -0
  132. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/deps.py +0 -0
  133. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/diagnose.py +0 -0
  134. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dispatch.py +0 -0
  135. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/dist_name.py +0 -0
  136. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/drive_queue.py +0 -0
  137. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/events.py +0 -0
  138. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/failure_class.py +0 -0
  139. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/filelock.py +0 -0
  140. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/fleet_config_health.py +0 -0
  141. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/forge_availability.py +0 -0
  142. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/freshness.py +0 -0
  143. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/gate_a.py +0 -0
  144. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/gate_b.py +0 -0
  145. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/gate_snapshot.py +0 -0
  146. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/gates.py +0 -0
  147. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/github_ops.py +0 -0
  148. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/github_throttle.py +0 -0
  149. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/goal.py +0 -0
  150. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/graph_health.py +0 -0
  151. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/__init__.py +0 -0
  152. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/aggregate.py +0 -0
  153. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/__init__.py +0 -0
  154. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/agent_install.py +0 -0
  155. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/cargo_targets.py +0 -0
  156. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/claude_binary.py +0 -0
  157. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/coord_web_ci_pin.py +0 -0
  158. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/deploy_lane_facts.py +0 -0
  159. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/disk.py +0 -0
  160. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/fleet_board.py +0 -0
  161. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  162. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/fleet_phantom.py +0 -0
  163. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/fleet_unit_drift.py +0 -0
  164. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/graph.py +0 -0
  165. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/graphify_cli.py +0 -0
  166. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/index_lock.py +0 -0
  167. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/issues_sync_staleness.py +0 -0
  168. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/plan_usage.py +0 -0
  169. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/release_cordon.py +0 -0
  170. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/repo_state.py +0 -0
  171. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/spawned_coord.py +0 -0
  172. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/stalled_pipeline.py +0 -0
  173. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/timer_active.py +0 -0
  174. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/toolchain.py +0 -0
  175. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/unit_drift.py +0 -0
  176. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/unit_enablement.py +0 -0
  177. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/checks/worktrees.py +0 -0
  178. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/cli.py +0 -0
  179. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/context.py +0 -0
  180. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/fleet_snapshot.py +0 -0
  181. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/models.py +0 -0
  182. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/pypi.py +0 -0
  183. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/registry.py +0 -0
  184. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/render.py +0 -0
  185. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/health/units.py +0 -0
  186. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/hooks.py +0 -0
  187. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/housekeeping.py +0 -0
  188. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/interactive.py +0 -0
  189. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/issue_store.py +0 -0
  190. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/issues_sync_status.py +0 -0
  191. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/liveness_auditor.py +0 -0
  192. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/machine_pause.py +0 -0
  193. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/merge_queue.py +0 -0
  194. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/milestone_chat.py +0 -0
  195. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/milestone_dispatch.py +0 -0
  196. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/milestone_gate.py +0 -0
  197. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/milestone_order.py +0 -0
  198. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/mock_author.py +0 -0
  199. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/models.py +0 -0
  200. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/network.py +0 -0
  201. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/new_issue_chat.py +0 -0
  202. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/__init__.py +0 -0
  203. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/baseline.py +0 -0
  204. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/cli.py +0 -0
  205. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/collect.py +0 -0
  206. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/digest.py +0 -0
  207. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/models.py +0 -0
  208. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/predicate.py +0 -0
  209. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/service.py +0 -0
  210. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/store.py +0 -0
  211. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notifier/transport.py +0 -0
  212. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/notify.py +0 -0
  213. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/openapi.py +0 -0
  214. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/overlap_fence.py +0 -0
  215. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/overlap_predict.py +0 -0
  216. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/parentage.py +0 -0
  217. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/parentage_github.py +0 -0
  218. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/pipeline.py +0 -0
  219. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/plan_parser.py +0 -0
  220. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/plans.py +0 -0
  221. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/platform_paths.py +0 -0
  222. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/portal_bridge.py +0 -0
  223. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/portal_store.py +0 -0
  224. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/portal_sync.py +0 -0
  225. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/pr_body_lint.py +0 -0
  226. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/prereqs.py +0 -0
  227. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/progress.py +0 -0
  228. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/providers/__init__.py +0 -0
  229. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/providers/base.py +0 -0
  230. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/providers/claude.py +0 -0
  231. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/providers/claude_pty.py +0 -0
  232. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/providers/opencode.py +0 -0
  233. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/queue_diagnose.py +0 -0
  234. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/reconcile.py +0 -0
  235. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/reconcile_tick.py +0 -0
  236. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/refine_chat.py +0 -0
  237. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/release_cordon.py +0 -0
  238. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/release_propagate.py +0 -0
  239. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/release_verify.py +0 -0
  240. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/release_window.py +0 -0
  241. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/repo_edit.py +0 -0
  242. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/repo_onboard.py +0 -0
  243. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/reports.py +0 -0
  244. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/revalidate.py +0 -0
  245. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/scorecard.py +0 -0
  246. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/self_health.py +0 -0
  247. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/serve_app.py +0 -0
  248. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  249. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  250. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  251. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  252. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  253. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/portal-followup/SKILL.md +0 -0
  254. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/release-now/SKILL.md +0 -0
  255. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  256. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  257. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/skills/update-issue/SKILL.md +0 -0
  258. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/smoke.py +0 -0
  259. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/spend_ceiling.py +0 -0
  260. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/split_work.py +0 -0
  261. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/sql.py +0 -0
  262. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/stage_projection.py +0 -0
  263. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/state.py +0 -0
  264. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/test_author.py +0 -0
  265. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/test_chat.py +0 -0
  266. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/test_orchestrator.py +0 -0
  267. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/test_report.py +0 -0
  268. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/tui_release.py +0 -0
  269. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/usage.py +0 -0
  270. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/usage_limits.py +0 -0
  271. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/usage_rollup.py +0 -0
  272. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coord/worker_events.py +0 -0
  273. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/coordinator.example.yml +0 -0
  274. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-agent.service +0 -0
  275. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-db-backup.service +0 -0
  276. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-db-backup.sh +0 -0
  277. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-db-backup.timer +0 -0
  278. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-drive-queue.service +0 -0
  279. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-drive-queue.timer +0 -0
  280. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-failure-notify.service +0 -0
  281. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-failure-notify.sh +0 -0
  282. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-fleet-watchdog.service +0 -0
  283. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-fleet-watchdog.timer +0 -0
  284. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-notify.service +0 -0
  285. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-notify.timer +0 -0
  286. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-release-propagate.service +0 -0
  287. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-release-propagate.timer +0 -0
  288. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-release-window.service +0 -0
  289. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-release-window.timer +0 -0
  290. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-serve.service +0 -0
  291. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-web-dist-build.service +0 -0
  292. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-web-dist-build.sh +0 -0
  293. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-web-dist-build.timer +0 -0
  294. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-web-rollback.sh +0 -0
  295. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/coord-web.service +0 -0
  296. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/deploy/node-shim.sh +0 -0
  297. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  298. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/ADR_COORD_WEB_CI.md +0 -0
  299. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/ADR_COORD_WEB_DIST.md +0 -0
  300. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/AGENT_OPERATIONS.md +0 -0
  301. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/ARCHITECTURE.md +0 -0
  302. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/ARCH_SECURITY_GATES.md +0 -0
  303. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/COCKPIT.md +0 -0
  304. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/CONTROL_CENTER.md +0 -0
  305. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/COST_DISCIPLINE.md +0 -0
  306. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/CROSS_PLATFORM.md +0 -0
  307. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/CUSTOMER_FACING_APPS.md +0 -0
  308. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/CUSTOMER_PORTAL.md +0 -0
  309. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/DRIVE_QUEUE.md +0 -0
  310. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/EPHEMERAL_WORKERS.md +0 -0
  311. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/FORGE_MIGRATION.md +0 -0
  312. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/GRAPHIFY_SETUP.md +0 -0
  313. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/ISSUE_GUIDANCE.md +0 -0
  314. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/MAC_MINI.md +0 -0
  315. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  316. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/NOTIFIER.md +0 -0
  317. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/OPENCODE_VERIFICATION.md +0 -0
  318. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/OPERATING_GOTCHAS.md +0 -0
  319. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/OPERATOR_GUIDES.md +0 -0
  320. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/ORACLE_LOOP.md +0 -0
  321. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/PHONE_WEBAPP.md +0 -0
  322. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/PIPELINE_V2.md +0 -0
  323. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/PLATFORM_EVOLUTION.md +0 -0
  324. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/SECOND_BACKEND.md +0 -0
  325. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/STORE_SERVICE.md +0 -0
  326. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  327. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/WEB_CONTROL_CENTER.md +0 -0
  328. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/WSL_WINDOWS_WORKER.md +0 -0
  329. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/mocks/web/README.md +0 -0
  330. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/mocks/web/_tokens.css +0 -0
  331. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/mocks/web/issue-detail.html +0 -0
  332. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/mocks/web/pipeline-narrow.html +0 -0
  333. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/docs/mocks/web/pipeline-wide.html +0 -0
  334. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/graphify-out/.gitignore +0 -0
  335. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/install-agent.sh +0 -0
  336. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/pyproject.toml +0 -0
  337. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/audit_review_verdict_overrides.py +0 -0
  338. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  339. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/build-worker-image.sh +0 -0
  340. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/coordinator-machine.py +0 -0
  341. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/epic-down.sh +0 -0
  342. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/epic-up.sh +0 -0
  343. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/preflight.sh +0 -0
  344. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/provision-worker.sh +0 -0
  345. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  346. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  347. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/azure-workers/verify-github-token.sh +0 -0
  348. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/check_gh_argv_containment.py +0 -0
  349. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/codegen.py +0 -0
  350. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/coord-test-runner.sh +0 -0
  351. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/coord-venv-rollback.sh +0 -0
  352. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/drive-batch.sh +0 -0
  353. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/fleet_watchdog.py +0 -0
  354. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/gen_board_fixture.py +0 -0
  355. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/gen_mock_index.py +0 -0
  356. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/next_release_tag.py +0 -0
  357. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/run_tests_in_populated_home.sh +0 -0
  358. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/run_tests_without_gh.sh +0 -0
  359. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/smoke_437_interactive.py +0 -0
  360. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/verify_878_review_capture.py +0 -0
  361. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/verify_release_published.py +0 -0
  362. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/scripts/verify_release_wheel.py +0 -0
  363. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/setup.cfg +0 -0
  364. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/SMOKE_SET.md +0 -0
  365. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/__init__.py +0 -0
  366. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  367. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-33/contract.md +0 -0
  368. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-33/manifest.yml +0 -0
  369. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  370. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  371. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  372. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  373. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-37/conftest.py +0 -0
  374. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-37/contract.md +0 -0
  375. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-37/manifest.yml +0 -0
  376. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  377. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  378. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/contract.md +0 -0
  379. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/manifest.yml +0 -0
  380. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  381. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  382. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  383. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  384. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  385. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  386. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  387. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  388. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  389. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  390. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-51/contract.md +0 -0
  391. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  392. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  393. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-51/manifest.yml +0 -0
  394. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  395. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-51/tsconfig.json +0 -0
  396. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  397. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  398. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  399. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/contract.md +0 -0
  400. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  401. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/manifest.yml +0 -0
  402. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  403. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  404. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  405. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  406. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  407. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  408. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  409. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  410. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  411. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  412. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  413. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
  414. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/contract.md +0 -0
  415. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
  416. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/manifest.yml +0 -0
  417. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
  418. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
  419. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
  420. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
  421. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
  422. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
  423. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  424. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/conftest.py +0 -0
  425. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/board-pipeline-basic.json +0 -0
  426. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  427. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  428. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  429. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  430. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/playwright/all_pass.json +0 -0
  431. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  432. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/playwright/mixed_fail.json +0 -0
  433. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  434. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  435. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/playwright/skip.json +0 -0
  436. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/playwright/truncated.json +0 -0
  437. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  438. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  439. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  440. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  441. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  442. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  443. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  444. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  445. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_acceptance.py +0 -0
  446. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_acceptance_drivers.py +0 -0
  447. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent.py +0 -0
  448. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_api_error.py +0 -0
  449. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_app.py +0 -0
  450. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_branch_base.py +0 -0
  451. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_branch_capture.py +0 -0
  452. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_config_free_1712.py +0 -0
  453. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_deploy_units_endpoint.py +0 -0
  454. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_dirty_worktree.py +0 -0
  455. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  456. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_graph_self_heal.py +0 -0
  457. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_health_h3.py +0 -0
  458. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_idle_restart.py +0 -0
  459. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_push_failure.py +0 -0
  460. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_reap.py +0 -0
  461. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_repos_and_pull.py +0 -0
  462. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_restart_services_endpoint.py +0 -0
  463. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_skills_self_heal.py +0 -0
  464. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_startup_diagnostics.py +0 -0
  465. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_update.py +0 -0
  466. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_update_bluegreen.py +0 -0
  467. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_usage_limit.py +0 -0
  468. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_agent_zero_commit.py +0 -0
  469. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_ambient_home_isolation.py +0 -0
  470. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_approve_dependency_busy_2804.py +0 -0
  471. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_approve_reject_plan.py +0 -0
  472. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_approve_usage_gate.py +0 -0
  473. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_approved_work_2532.py +0 -0
  474. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_assignment_already_recorded_daemon.py +0 -0
  475. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_audit_log.py +0 -0
  476. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_audit_outcome.py +0 -0
  477. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_audit_query.py +0 -0
  478. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_auto_loop.py +0 -0
  479. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_auto_release_publish_2035.py +0 -0
  480. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_base_checkout_restore.py +0 -0
  481. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_block_log.py +0 -0
  482. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_board_cap_762.py +0 -0
  483. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_board_fixture.py +0 -0
  484. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_board_read_path.py +0 -0
  485. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_board_schema.py +0 -0
  486. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_board_service.py +0 -0
  487. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_board_state.py +0 -0
  488. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_board_wire.py +0 -0
  489. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_brain.py +0 -0
  490. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_branch_model.py +0 -0
  491. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_bug_intake.py +0 -0
  492. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_build_worker_image_env_update.py +0 -0
  493. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cargo_cache.py +0 -0
  494. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_check_gh_argv_containment.py +0 -0
  495. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_ci_acceptance_gate_1950.py +0 -0
  496. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_ci_fix.py +0 -0
  497. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_ci_gitlab.py +0 -0
  498. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_ci_parity_2091.py +0 -0
  499. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_ci_store.py +0 -0
  500. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_claim.py +0 -0
  501. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_claude_md_budget.py +0 -0
  502. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_acceptance.py +0 -0
  503. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_assign.py +0 -0
  504. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  505. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_assign_interactive_remote.py +0 -0
  506. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_assign_provider.py +0 -0
  507. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  508. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_audit.py +0 -0
  509. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_chat_continue.py +0 -0
  510. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_decide.py +0 -0
  511. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_diagnose_config_provenance.py +0 -0
  512. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_diagnose_forge_availability.py +0 -0
  513. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_diagnose_graph.py +0 -0
  514. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_diagnose_self.py +0 -0
  515. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_doctor.py +0 -0
  516. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_doctor_config_free_1801.py +0 -0
  517. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  518. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_drive.py +0 -0
  519. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_drive_queue.py +0 -0
  520. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_escalate.py +0 -0
  521. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_fix_headless_review.py +0 -0
  522. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_gate_a.py +0 -0
  523. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_install_drift.py +0 -0
  524. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_install_skills.py +0 -0
  525. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_issue_comment.py +0 -0
  526. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_issue_create_label.py +0 -0
  527. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_issue_reopen.py +0 -0
  528. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_issue_view_list.py +0 -0
  529. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_merge.py +0 -0
  530. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_assign.py +0 -0
  531. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_capture.py +0 -0
  532. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_chat_add_child.py +0 -0
  533. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_dispatch.py +0 -0
  534. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_gate_b.py +0 -0
  535. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_gate_c.py +0 -0
  536. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_order.py +0 -0
  537. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  538. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_milestone_ship.py +0 -0
  539. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_network.py +0 -0
  540. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_new_issue_chat.py +0 -0
  541. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_plans.py +0 -0
  542. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_portal.py +0 -0
  543. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_pr.py +0 -0
  544. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_pull_artifact.py +0 -0
  545. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_queue.py +0 -0
  546. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_reattach_sessions.py +0 -0
  547. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_refine_board.py +0 -0
  548. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_release_preflight.py +0 -0
  549. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_release_propagate.py +0 -0
  550. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_release_window.py +0 -0
  551. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_repo_2220.py +0 -0
  552. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  553. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_scorecard.py +0 -0
  554. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_set_review_findings.py +0 -0
  555. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_status_advisory_terminal.py +0 -0
  556. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_status_contested_tag.py +0 -0
  557. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_status_merge_queue.py +0 -0
  558. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_status_provider.py +0 -0
  559. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_status_review_finalizing.py +0 -0
  560. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_status_test_failed_tag.py +0 -0
  561. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_status_usage_limit.py +0 -0
  562. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_sync_comments_873.py +0 -0
  563. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_test_plan.py +0 -0
  564. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_track.py +0 -0
  565. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_tui_update.py +0 -0
  566. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cli_wait.py +0 -0
  567. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_client_base_install.py +0 -0
  568. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_commands_common.py +0 -0
  569. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_comments.py +0 -0
  570. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_completion_summary.py +0 -0
  571. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_config.py +0 -0
  572. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_config_acceptance.py +0 -0
  573. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_config_audit.py +0 -0
  574. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_config_pricing.py +0 -0
  575. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  576. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_config_usage_gate.py +0 -0
  577. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_confirm_test.py +0 -0
  578. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_conflict_fix.py +0 -0
  579. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_conflict_fix_semantic.py +0 -0
  580. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  581. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_test.py +0 -0
  582. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_test_runner_baseline.py +0 -0
  583. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_test_runner_populated_home.py +0 -0
  584. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_test_runner_routing.py +0 -0
  585. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_test_runner_toolchain.py +0 -0
  586. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_uat.py +0 -0
  587. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coord_web_sse_restart_live.py +0 -0
  588. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_coordinator_machine.py +0 -0
  589. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_cross_platform_imports.py +0 -0
  590. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dao.py +0 -0
  591. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dashboard.py +0 -0
  592. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dashboard_fixture.py +0 -0
  593. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dashboard_terminal.py +0 -0
  594. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dashboard_terminal_live.py +0 -0
  595. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_db.py +0 -0
  596. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dead_end.py +0 -0
  597. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_decomposition_chat.py +0 -0
  598. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_coord_db_backup.py +0 -0
  599. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_coord_web_dist.py +0 -0
  600. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_coord_web_rollback.py +0 -0
  601. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_drive_queue_unit.py +0 -0
  602. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_failure_notify_unit.py +0 -0
  603. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_manifest.py +0 -0
  604. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_notify_unit.py +0 -0
  605. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_units_lane.py +0 -0
  606. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deploy_web_unit.py +0 -0
  607. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_deps.py +0 -0
  608. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_diagnose.py +0 -0
  609. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dispatch.py +0 -0
  610. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dispatch_target_validation.py +0 -0
  611. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_dist_name.py +0 -0
  612. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_done_housekeeping.py +0 -0
  613. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_queue.py +0 -0
  614. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_queue_blocked_rendering.py +0 -0
  615. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_queue_launch_argv.py +0 -0
  616. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  617. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_queue_roll_pending.py +0 -0
  618. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  619. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_drive_tmux.py +0 -0
  620. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_epic_up_capability_detection.py +0 -0
  621. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  622. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_epic_up_image_provenance.py +0 -0
  623. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_errors.py +0 -0
  624. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_events.py +0 -0
  625. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_failure_class.py +0 -0
  626. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_filelock.py +0 -0
  627. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  628. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_fix_of_force_override.py +0 -0
  629. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_fleet_config_health.py +0 -0
  630. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_fleet_health_probes.py +0 -0
  631. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_fleet_health_snapshot.py +0 -0
  632. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_fleet_watchdog.py +0 -0
  633. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_forge_availability.py +0 -0
  634. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_freshness.py +0 -0
  635. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_gate_a.py +0 -0
  636. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_gate_b.py +0 -0
  637. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_gate_snapshot_staleness.py +0 -0
  638. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_gates.py +0 -0
  639. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  640. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_gen_mock_index.py +0 -0
  641. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_generated_rust_fixture.py +0 -0
  642. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_generated_types_fixture.py +0 -0
  643. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_github_ops.py +0 -0
  644. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_github_throttle.py +0 -0
  645. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_goal.py +0 -0
  646. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_graph_health.py +0 -0
  647. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_graph_selfheal_absent_2237.py +0 -0
  648. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_handoff.py +0 -0
  649. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_checks.py +0 -0
  650. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_cli.py +0 -0
  651. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_cli_graph.py +0 -0
  652. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_config.py +0 -0
  653. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_context.py +0 -0
  654. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_coord_web_ci_pin.py +0 -0
  655. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_deploy_lane_facts.py +0 -0
  656. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_fix.py +0 -0
  657. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_incident_regression.py +0 -0
  658. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_issues_sync_staleness.py +0 -0
  659. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_pypi.py +0 -0
  660. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_registry.py +0 -0
  661. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_release_cordon_probe.py +0 -0
  662. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_timer_active.py +0 -0
  663. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_toolchain.py +0 -0
  664. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_unit_drift.py +0 -0
  665. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_health_unit_enablement.py +0 -0
  666. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_hooks.py +0 -0
  667. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_human_attended_437.py +0 -0
  668. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_init.py +0 -0
  669. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_integration.py +0 -0
  670. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_interactive_briefing_echo.py +0 -0
  671. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_interactive_pane_log_2541.py +0 -0
  672. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_interactive_prefill_state.py +0 -0
  673. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_interactive_session_relaunch.py +0 -0
  674. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_interactive_test_verdict_backstop.py +0 -0
  675. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_interactive_token_attribution.py +0 -0
  676. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_interactive_worktree.py +0 -0
  677. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_issue_store_seam.py +0 -0
  678. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_issues_sync_status.py +0 -0
  679. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_liveness_auditor.py +0 -0
  680. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_liveness_notify.py +0 -0
  681. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_lock_contention_ratchet.py +0 -0
  682. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_machine_pause.py +0 -0
  683. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_merge_queue.py +0 -0
  684. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_merge_verify.py +0 -0
  685. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_milestone_chat.py +0 -0
  686. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_milestone_dispatch.py +0 -0
  687. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_milestone_gate.py +0 -0
  688. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_milestone_order.py +0 -0
  689. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_milestone_seam.py +0 -0
  690. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_mock_author.py +0 -0
  691. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_model_tiering.py +0 -0
  692. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_models.py +0 -0
  693. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_models_config_labels.py +0 -0
  694. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_needs_attention.py +0 -0
  695. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_network.py +0 -0
  696. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_new_issue_chat.py +0 -0
  697. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_next_release_tag.py +0 -0
  698. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_node_shim.py +0 -0
  699. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_baseline.py +0 -0
  700. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_cli.py +0 -0
  701. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_collect.py +0 -0
  702. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_config.py +0 -0
  703. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_drive_seam.py +0 -0
  704. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_isolation.py +0 -0
  705. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_predicate.py +0 -0
  706. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_quiet_hours.py +0 -0
  707. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notifier_service.py +0 -0
  708. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notify.py +0 -0
  709. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_notify_drain.py +0 -0
  710. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_openapi.py +0 -0
  711. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_operational_defaults.py +0 -0
  712. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_overlap_fence.py +0 -0
  713. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_overlap_predict.py +0 -0
  714. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_packaged_deploy_units.py +0 -0
  715. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_parentage.py +0 -0
  716. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_paste_landed.py +0 -0
  717. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  718. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_pipeline.py +0 -0
  719. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_plan_followup_approve_plan_command.py +0 -0
  720. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_plan_followup_pr_command.py +0 -0
  721. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_plan_followup_review_command.py +0 -0
  722. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_plan_only.py +0 -0
  723. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_plan_parser.py +0 -0
  724. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_platform_paths.py +0 -0
  725. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_portal_bridge.py +0 -0
  726. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_portal_config.py +0 -0
  727. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_portal_store.py +0 -0
  728. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_portal_sync.py +0 -0
  729. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_pr_body_lint.py +0 -0
  730. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_prereqs.py +0 -0
  731. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_production_db_guard.py +0 -0
  732. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_progress.py +0 -0
  733. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_provider_seam.py +0 -0
  734. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_providers.py +0 -0
  735. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_providers_config_labels.py +0 -0
  736. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_providers_pty.py +0 -0
  737. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_quiet_hours.py +0 -0
  738. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_quiet_hours_store_2146.py +0 -0
  739. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reap_merged_sessions.py +0 -0
  740. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reap_stale_interactive_tick.py +0 -0
  741. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile.py +0 -0
  742. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile_branch.py +0 -0
  743. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile_completions.py +0 -0
  744. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  745. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile_merges.py +0 -0
  746. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile_no_agent_record.py +0 -0
  747. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile_tick.py +0 -0
  748. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reconcile_usage_limit_done.py +0 -0
  749. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_refine_chat.py +0 -0
  750. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_cordon_2101.py +0 -0
  751. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  752. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_cordon_deadlock_2240.py +0 -0
  753. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_cordon_stuck_2490.py +0 -0
  754. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_propagate.py +0 -0
  755. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_propagate_threshold.py +0 -0
  756. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_roll_between_legs_2854.py +0 -0
  757. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_roll_window_handoff.py +0 -0
  758. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_unified_1242.py +0 -0
  759. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_verify.py +0 -0
  760. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_release_window.py +0 -0
  761. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_remote_auto_prune.py +0 -0
  762. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_remote_interactive_reaper.py +0 -0
  763. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_repo_add.py +0 -0
  764. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_repo_edit_2220.py +0 -0
  765. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_repo_graph_fleet_2237.py +0 -0
  766. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_repo_onboard_2220.py +0 -0
  767. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_report_result_push.py +0 -0
  768. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_reports.py +0 -0
  769. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_retry.py +0 -0
  770. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_retry_advisory_1606.py +0 -0
  771. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_retry_type_1636.py +0 -0
  772. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_revalidate.py +0 -0
  773. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review.py +0 -0
  774. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_end_review_without_verdict.py +0 -0
  775. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_parse_failure_diagnostic.py +0 -0
  776. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_reaffirm.py +0 -0
  777. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_state.py +0 -0
  778. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_verdict_backstop.py +0 -0
  779. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_verdict_override_audit.py +0 -0
  780. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_verdict_relay.py +0 -0
  781. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_review_zero_commits.py +0 -0
  782. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_scoped_review_wiring.py +0 -0
  783. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_scorecard.py +0 -0
  784. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_self_health.py +0 -0
  785. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_serve.py +0 -0
  786. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_serve_app_board_trim.py +0 -0
  787. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_session.py +0 -0
  788. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_slice_issue_attribution.py +0 -0
  789. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_smoke.py +0 -0
  790. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_smoke_live_checkout_restore.py +0 -0
  791. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_smoke_workflow.py +0 -0
  792. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_spend_ceiling.py +0 -0
  793. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_spend_ceiling_coordinator.py +0 -0
  794. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_split.py +0 -0
  795. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_split_work.py +0 -0
  796. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_sql_dialect.py +0 -0
  797. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_stage_projection.py +0 -0
  798. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_stalled_pipeline.py +0 -0
  799. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_state.py +0 -0
  800. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_state_review_findings_daemon.py +0 -0
  801. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_status_fleet_footer.py +0 -0
  802. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_stop_1567.py +0 -0
  803. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_store_contract.py +0 -0
  804. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_stuck.py +0 -0
  805. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  806. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_terminal_command.py +0 -0
  807. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_test_author.py +0 -0
  808. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_test_chat.py +0 -0
  809. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_test_orchestrator.py +0 -0
  810. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_test_report.py +0 -0
  811. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_test_verdict_parsing.py +0 -0
  812. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_test_verdict_transcript_floor.py +0 -0
  813. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_text_io_encoding_audit.py +0 -0
  814. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_thin_client_board_audit.py +0 -0
  815. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_thin_client_config_load_1080.py +0 -0
  816. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_thin_client_daemon_routing_906.py +0 -0
  817. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_tmux_host.py +0 -0
  818. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_tmux_session.py +0 -0
  819. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_transcript_floor.py +0 -0
  820. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_usage.py +0 -0
  821. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_usage_limits.py +0 -0
  822. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_usage_rollup.py +0 -0
  823. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_venv_live_install_2121.py +0 -0
  824. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_version_single_source.py +0 -0
  825. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_watch.py +0 -0
  826. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  827. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_worker_env_venv_isolation.py +0 -0
  828. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_worker_events.py +0 -0
  829. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_worker_image_pin_sync.py +0 -0
  830. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_worker_safety.py +0 -0
  831. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_worker_test_scoping.py +0 -0
  832. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_worktree.py +0 -0
  833. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  834. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/Cargo.lock +0 -0
  835. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/Cargo.toml +0 -0
  836. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/cargo-config-local-quadraui.toml.example +0 -0
  837. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/approved.rs +0 -0
  838. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/audit.rs +0 -0
  839. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/chat.rs +0 -0
  840. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/data.rs +0 -0
  841. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/dialogs.rs +0 -0
  842. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/doc_tabs.rs +0 -0
  843. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/drive.rs +0 -0
  844. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/drive_queue.rs +0 -0
  845. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/escalation.rs +0 -0
  846. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/events.rs +0 -0
  847. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/fixtures.rs +0 -0
  848. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/fleet_health.rs +0 -0
  849. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/fleet_sessions.rs +0 -0
  850. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/fleet_terminals.rs +0 -0
  851. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/format.rs +0 -0
  852. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/milestone_dag.rs +0 -0
  853. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/mod.rs +0 -0
  854. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/msv.rs +0 -0
  855. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/pipeline.rs +0 -0
  856. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/plans.rs +0 -0
  857. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/render.rs +0 -0
  858. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/reports.rs +0 -0
  859. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/sessions.rs +0 -0
  860. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/settings_ui.rs +0 -0
  861. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/sidebar.rs +0 -0
  862. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/terminal.rs +0 -0
  863. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/tests.rs +0 -0
  864. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/types/generated.rs +0 -0
  865. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/types.rs +0 -0
  866. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/app/workspace.rs +0 -0
  867. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/bin/gtk.rs +0 -0
  868. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/commands.rs +0 -0
  869. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/lib.rs +0 -0
  870. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/main.rs +0 -0
  871. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/src/settings.rs +0 -0
  872. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/tests/acceptance.rs +0 -0
  873. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/tui/tests/cli.rs +0 -0
  874. {code_coordinator-0.5.269 → code_coordinator-0.5.271}/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.269
3
+ Version: 0.5.271
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.269
3
+ Version: 0.5.271
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
@@ -714,6 +714,7 @@ tests/test_split.py
714
714
  tests/test_split_work.py
715
715
  tests/test_sql_dialect.py
716
716
  tests/test_stage_projection.py
717
+ tests/test_stale_busy_reviewer_697.py
717
718
  tests/test_stalled_pipeline.py
718
719
  tests/test_state.py
719
720
  tests/test_state_review_findings_daemon.py
@@ -786,6 +786,7 @@
786
786
  "tests/test_split_work.py",
787
787
  "tests/test_sql_dialect.py",
788
788
  "tests/test_stage_projection.py",
789
+ "tests/test_stale_busy_reviewer_697.py",
789
790
  "tests/test_stalled_pipeline.py",
790
791
  "tests/test_state.py",
791
792
  "tests/test_state_review_findings_daemon.py",
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.269",
2
+ "tag": "0.5.271",
3
3
  "distance": 0,
4
- "node": "gfb3b3633ce05c303a5c7243c93486fab73020f5e",
4
+ "node": "g3a55bb4d487d0d86bef5f81d01ac8744d9ecdf16",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-28"
@@ -94,7 +94,7 @@ import sys
94
94
  import time
95
95
  from dataclasses import dataclass, field, replace
96
96
  from pathlib import Path
97
- from typing import Any, Callable, Protocol, Sequence
97
+ from typing import Any, Callable, NamedTuple, Protocol, Sequence
98
98
 
99
99
  from coord.filelock import FileLock, LockBusy, notify_lock_path
100
100
  from coord.drive_state import (
@@ -628,9 +628,34 @@ def _format_age(seconds: float) -> str:
628
628
  return f"{seconds / 86400:.1f}d"
629
629
 
630
630
 
631
+ class RefusedPolicyStaleness(NamedTuple):
632
+ """The verdict :func:`_refused_policy_staleness` reaches, plus WHY —
633
+ #2881: collapsing "no title resolved" and "title unchanged" to the same
634
+ ``False`` (as the original #2871 boolean-only version did) is what let
635
+ the #2881 bug (``title`` missing from the daemon-host payload,
636
+ ``coord/drive_state.py``'s ``_local_issue_rows``) hide for a whole
637
+ release: every real drive landed in ``uncertain`` silently, read
638
+ identically to a confidently-checked ``unchanged``, and the operator-
639
+ facing message could not tell the two apart either.
640
+ """
641
+
642
+ is_stale: bool
643
+ uncertain: bool
644
+ detail: str
645
+
646
+
631
647
  def _refused_policy_is_stale(state: IssueState) -> bool:
632
648
  """True when a terminal ``refused_policy`` work row no longer describes
633
- the issue as it stands now (#2871).
649
+ the issue as it stands now (#2871). Thin bool wrapper around
650
+ :func:`_refused_policy_staleness` — see that function for the reasoning
651
+ and for the ``uncertain``/``detail`` distinction #2881 added.
652
+ """
653
+ return _refused_policy_staleness(state).is_stale
654
+
655
+
656
+ def _refused_policy_staleness(state: IssueState) -> RefusedPolicyStaleness:
657
+ """Does a terminal ``refused_policy`` work row still describe the issue
658
+ as it stands now (#2871), and how confident is that answer (#2881)?
634
659
 
635
660
  A worker refuses pre-dispatch work exactly once, correctly, for the ask
636
661
  it was shown — the refusal says nothing about a DIFFERENT ask on the same
@@ -639,16 +664,50 @@ def _refused_policy_is_stale(state: IssueState) -> bool:
639
664
  ``issue-{N}-{slugify(title)}`` at dispatch time, see
640
665
  ``coord.agent``'s ``branch_name`` construction) no longer matches what a
641
666
  fresh dispatch would name — that mismatch is the signal a retarget
642
- happened. Conservative on every uncertainty (no branch recorded, no
643
- title resolved): returns ``False`` — i.e. still treated as blocking —
644
- rather than risk waving a genuinely-unresolved refusal through.
667
+ happened.
668
+
669
+ Conservative on every uncertainty (no branch recorded, no title
670
+ resolved): ``is_stale=False`` — i.e. still treated as blocking — rather
671
+ than risk waving a genuinely-unresolved refusal through. #2881: those two
672
+ uncertain cases are NOT the same situation as a confidently-resolved
673
+ "title unchanged", so ``uncertain=True`` and a specific ``detail`` come
674
+ back for the caller to surface — a die()/audit message that confidently
675
+ tells the operator "retarget the issue" is actively wrong when the code
676
+ could not even check, e.g. because the daemon-host board payload dropped
677
+ ``title`` again.
645
678
  """
646
- if not state.work_branch or not state.issue_title:
647
- return False
679
+ if not state.work_branch:
680
+ return RefusedPolicyStaleness(
681
+ is_stale=False,
682
+ uncertain=True,
683
+ detail=(
684
+ "no branch was recorded on the refused_policy row, so "
685
+ "whether the issue was retargeted since could not be checked"
686
+ ),
687
+ )
688
+ if not state.issue_title:
689
+ return RefusedPolicyStaleness(
690
+ is_stale=False,
691
+ uncertain=True,
692
+ detail=(
693
+ "the issue's current title did not resolve from this "
694
+ "drive's board payload, so whether it was retargeted since "
695
+ "could not be checked (#2881 — if this fires in production, "
696
+ "suspect the daemon-host local-DB payload again)"
697
+ ),
698
+ )
648
699
  from coord.agent import _slugify # noqa: PLC0415
649
700
 
650
701
  expected_branch = f"issue-{state.issue}-{_slugify(state.issue_title)}"
651
- return state.work_branch != expected_branch
702
+ if state.work_branch != expected_branch:
703
+ return RefusedPolicyStaleness(
704
+ is_stale=True, uncertain=False, detail="retargeted since the refusal",
705
+ )
706
+ return RefusedPolicyStaleness(
707
+ is_stale=False,
708
+ uncertain=False,
709
+ detail="the issue's title is unchanged since the refusal",
710
+ )
652
711
 
653
712
 
654
713
  # ── oracle-loop JIT slice authoring (#1453) ─────────────────────────────────
@@ -2104,7 +2163,8 @@ def decide(
2104
2163
  else None
2105
2164
  )
2106
2165
  age = _format_age(age_seconds) if age_seconds is not None else "unknown age"
2107
- if _refused_policy_is_stale(state):
2166
+ staleness = _refused_policy_staleness(state)
2167
+ if staleness.is_stale:
2108
2168
  bypass_summary = (
2109
2169
  f"pre-dispatch: bypassing stale refused_policy assignment "
2110
2170
  f"{state.work_aid} ({age} old) on issue {state.repo}#{state.issue} "
@@ -2141,17 +2201,38 @@ def decide(
2141
2201
  # this exit as a transient death — the same "cannot change on retry"
2142
2202
  # principle #1844 already applies pre-dispatch, applied here
2143
2203
  # post-dispatch.
2204
+ #
2205
+ # #2881: `staleness.uncertain` distinguishes "checked, and the title
2206
+ # really is unchanged" from "could not check at all" — the original
2207
+ # #2871 message collapsed both to the same confident "retarget the
2208
+ # issue, the next drive will see it" prose, which is actively wrong
2209
+ # advice in the uncertain case (the operator may have ALREADY
2210
+ # retargeted, and the driver simply couldn't tell).
2211
+ if staleness.uncertain:
2212
+ remedy = (
2213
+ "Needs the coordinator: do the work directly. Retargeting "
2214
+ "(rewriting the issue's title) SHOULD make the next `coord "
2215
+ f"drive` dispatch fresh work automatically (#2871), but "
2216
+ f"{staleness.detail} — so THIS run could not confirm that "
2217
+ "either way. If a retarget was already tried and this is "
2218
+ "still blocking, that's worth investigating on its own "
2219
+ "(#2881) rather than assuming the retarget silently failed."
2220
+ )
2221
+ else:
2222
+ remedy = (
2223
+ "Needs the coordinator: do the work directly, OR retarget "
2224
+ "the issue (rewrite its title so the deliverable matches "
2225
+ "what should actually be dispatched) — the next `coord "
2226
+ "drive` detects the retarget and dispatches fresh work "
2227
+ f"automatically (#2871), so `coord drive-queue remove "
2228
+ f"{state.repo} {state.issue}` + `add` then genuinely clears "
2229
+ "this once the issue is retargeted."
2230
+ )
2144
2231
  return _die(
2145
2232
  f"pre-dispatch refusal on assignment {state.work_aid} "
2146
2233
  f"(refused_policy, {age} old) — work refused on a standing "
2147
2234
  "repo-rule prohibition rather than doing the dispatched work; "
2148
- "the worker did the CORRECT thing (#2234). Needs the "
2149
- "coordinator: do the work directly, OR retarget the issue "
2150
- "(rewrite its title so the deliverable matches what should "
2151
- "actually be dispatched) — the next `coord drive` detects the "
2152
- "retarget and dispatches fresh work automatically (#2871), so "
2153
- f"`coord drive-queue remove {state.repo} {state.issue}` + `add` "
2154
- "then genuinely clears this once the issue is retargeted.\n"
2235
+ f"the worker did the CORRECT thing (#2234). {remedy}\n"
2155
2236
  f" inspect: coord log {state.work_aid} --machine "
2156
2237
  f"{state.work_machine or machine}\n"
2157
2238
  f" {POLICY_REFUSAL_MARKER}"
@@ -993,11 +993,33 @@ def _local_issue_rows() -> list[dict]:
993
993
  ``coord.db.get_connection()`` singleton
994
994
  ``coord.commands.drive_queue._local_issue_rows`` already uses for its own
995
995
  (narrower — ``repo_name, number, state`` only) top-up of the same
996
- standalone-payload gap; this one additionally selects ``milestone_number``
997
- / ``milestone_title`` / ``labels`` / ``body`` — what :func:`project`'s
998
- oracle-loop resolution and :func:`coord.milestone_order.
999
- milestone_work_order_membership` need that the narrower query doesn't
1000
- carry.
996
+ standalone-payload gap; this one additionally selects ``title`` /
997
+ ``milestone_number`` / ``milestone_title`` / ``labels`` / ``body`` /
998
+ ``synced_at`` — what :func:`project`'s oracle-loop resolution,
999
+ :func:`coord.milestone_order.milestone_work_order_membership`, and
1000
+ ``coord.drive_queue.build_board_view``'s ``#2858`` staleness check need
1001
+ that the narrower query doesn't carry.
1002
+
1003
+ #2881: ``title`` was missing from this SELECT even though :func:`project`
1004
+ has read ``oi.get("title")`` since #2871 — so on every daemon-host drive
1005
+ (the ONLY host that runs `coord drive-queue tick`, i.e. every real
1006
+ dispatch) ``issue_title`` resolved to ``""`` for every issue, and
1007
+ ``_refused_policy_is_stale`` in ``coord/drive.py`` hit its
1008
+ "uncertain ⇒ still blocking" guard unconditionally — the retarget-bypass
1009
+ it exists to provide could never fire in production. The HTTP `/board`
1010
+ path (`coord.dao.SqliteStore` → `board_schema.BoardIssue`, which DOES
1011
+ declare ``title``) was never broken; nothing that dispatches drives goes
1012
+ through it. Auditing this SELECT against ``BoardIssue`` (#2881's other
1013
+ ask, "the two projections drift and the hooks cannot prevent it")
1014
+ surfaced the identical gap one field over: ``synced_at`` was ALSO
1015
+ missing, silently defeating ``build_board_view``'s ``#2858``
1016
+ fresh-vs-stale-cache read the same way on the same daemon host — fixed
1017
+ here alongside ``title`` rather than filed as a follow-up, since it is
1018
+ the same SELECT and the same root cause. See
1019
+ :func:`coord.drive._refused_policy_is_stale` and
1020
+ ``tests/test_drive_state.py::test_fetch_local_issue_rows_and_http_board_expose_the_same_issue_keys``,
1021
+ which guards this SELECT and the HTTP shape against drifting apart
1022
+ again.
1001
1023
 
1002
1024
  Deliberately queries ``get_connection()`` rather than
1003
1025
  ``coord.dao.SqliteStore`` — see :meth:`BoardFetcher._fetch_local`'s
@@ -1014,8 +1036,8 @@ def _local_issue_rows() -> list[dict]:
1014
1036
  try:
1015
1037
  rows = sql.execute(
1016
1038
  get_connection(),
1017
- "SELECT repo_name, number, state, milestone_number, milestone_title, "
1018
- "labels, body FROM issues",
1039
+ "SELECT repo_name, number, title, state, milestone_number, "
1040
+ "milestone_title, labels, body, synced_at FROM issues",
1019
1041
  ).fetchall()
1020
1042
  except Exception: # noqa: BLE001 — see the fail-soft note above
1021
1043
  return []
@@ -1090,6 +1090,104 @@ class ReviewerChoice:
1090
1090
  rationale: str
1091
1091
 
1092
1092
 
1093
+ # #697: how far past a row's OWN needs-attention threshold a `pending`/
1094
+ # `running` row must sit before reviewer selection stops counting its machine
1095
+ # as busy. One hour of margin on top of a threshold that is itself measured
1096
+ # in tens of minutes: comfortably longer than any reap path needs
1097
+ # (`coord.reconcile._reconcile_no_agent_record` on the daemon's 30s tick,
1098
+ # `coord.diagnose.sweep_dead_running_rows` on `coord-notify.timer`'s 5min
1099
+ # cadence), so a row still counted busy here is one every reaper has already
1100
+ # had many chances at.
1101
+ STALE_BUSY_BUFFER_SECONDS = 3600.0
1102
+
1103
+ # The same horizon for rows whose type has NO wall-clock threshold at all —
1104
+ # `PipelineConfig.attention_threshold_for` returns `inf` for the attended
1105
+ # chat/troubleshoot/audit family (#1133). Those are exactly the rows #697
1106
+ # observed at 51h and 70h, so "never expires" is not an option here; a flat,
1107
+ # deliberately generous day is. A human really attending a chat session for
1108
+ # a full day is far rarer than a tmux session that died without being reaped.
1109
+ STALE_BUSY_INTERACTIVE_SECONDS = 24 * 3600.0
1110
+
1111
+
1112
+ def _is_stale_busy_row(a: Assignment, config: Config, now: float) -> bool:
1113
+ """True when *a* is too old to still be believed as occupying its machine (#697).
1114
+
1115
+ Reviewer selection's ``busy`` set used to count **every** ``pending``/
1116
+ ``running`` board row, which is how a zombie row broke dispatch in #697:
1117
+ rows whose worker had been dead for hours-to-days kept inflating the set,
1118
+ so real machines looked occupied and selection was pushed onto whatever
1119
+ candidate happened to look "free" — on #669 that was an *offline* machine,
1120
+ and the review could not be dispatched at all.
1121
+
1122
+ This is deliberately **not** a liveness probe, and deliberately **not** a
1123
+ reap. The reapers (``coord.reconcile._reconcile_no_agent_record``,
1124
+ ``coord.interactive.reap_stale_interactive_sessions``,
1125
+ ``coord.diagnose.sweep_dead_running_rows``) own the "is it actually dead?"
1126
+ question, they answer it with a positive disproof or a real tmux/agent
1127
+ probe, and they are the only things allowed to write a terminal status.
1128
+ Guessing from age alone would be #1870's mistake if it gated a *write*.
1129
+
1130
+ Here it gates only a *ranking*, where being wrong is cheap and
1131
+ self-correcting in both directions:
1132
+
1133
+ * Wrong about a genuinely-live row → its machine is ranked as idle and may
1134
+ receive the review. That is the SAME outcome fallback 1
1135
+ ("different machine, currently busy — review will queue") already
1136
+ produces on a one-other-machine fleet, and a genuinely-saturated agent
1137
+ answers with a rejection that ``_ranked_reviewer_candidates`` already
1138
+ falls through on (#904).
1139
+ * Wrong about a dead row (age not yet reached) → status quo ante: the
1140
+ machine stays "busy" and merely ranks lower.
1141
+
1142
+ A row with no ``dispatched_at`` is never stale — there is nothing to
1143
+ compute an age from, and this path never guesses, mirroring
1144
+ ``sweep_dead_running_rows``.
1145
+ """
1146
+ dispatched_at = getattr(a, "dispatched_at", None)
1147
+ if not dispatched_at:
1148
+ return False
1149
+ try:
1150
+ dispatched = float(dispatched_at)
1151
+ except (TypeError, ValueError):
1152
+ return False
1153
+
1154
+ threshold = config.pipeline.attention_threshold_for(
1155
+ a.type or "work",
1156
+ provider_name=a.provider_name,
1157
+ review_of_assignment_id=a.review_of_assignment_id,
1158
+ )
1159
+ if threshold == float("inf"):
1160
+ horizon = STALE_BUSY_INTERACTIVE_SECONDS
1161
+ else:
1162
+ horizon = threshold + STALE_BUSY_BUFFER_SECONDS
1163
+ return (now - dispatched) > horizon
1164
+
1165
+
1166
+ def busy_machine_names(
1167
+ board: Board,
1168
+ config: Config,
1169
+ *,
1170
+ now: float | None = None,
1171
+ ) -> set[str]:
1172
+ """Machines with at least one *believable* in-flight row (#697).
1173
+
1174
+ The shared ``busy`` set for :func:`pick_reviewer_machine` and
1175
+ :func:`_ranked_reviewer_candidates` — a ``pending``/``running`` row whose
1176
+ age is past :func:`_is_stale_busy_row`'s horizon is presumed dead and no
1177
+ longer holds its machine down. See that function for why an age-only
1178
+ heuristic is the right instrument *for a ranking* and the wrong one for a
1179
+ reap.
1180
+ """
1181
+ if now is None:
1182
+ now = time.time()
1183
+ return {
1184
+ a.machine_name
1185
+ for a in board.active
1186
+ if a.status in ("pending", "running")
1187
+ and not _is_stale_busy_row(a, config, now)
1188
+ }
1189
+
1190
+
1093
1191
  def pick_reviewer_machine(
1094
1192
  worker_machine_name: str,
1095
1193
  repo_name: str,
@@ -1111,6 +1209,11 @@ def pick_reviewer_machine(
1111
1209
  cordon blocked the review, the unreviewable entry stayed `running`, the
1112
1210
  running entry deferred the roll, and the deferred roll left the cordon
1113
1211
  up. Explicit pauses and quiet hours still apply.
1212
+
1213
+ #697: the ``busy`` set is :func:`busy_machine_names`, which drops
1214
+ ``pending``/``running`` rows too old to still be believed — a zombie row
1215
+ used to make a real machine look occupied indefinitely and push selection
1216
+ onto an offline "free" candidate.
1114
1217
  """
1115
1218
  from coord.machine_pause import follow_on_paused_set
1116
1219
  paused = follow_on_paused_set(config.machines)
@@ -1121,7 +1224,7 @@ def pick_reviewer_machine(
1121
1224
  if not candidates:
1122
1225
  return None
1123
1226
 
1124
- busy = {a.machine_name for a in board.active if a.status in ("pending", "running")}
1227
+ busy = busy_machine_names(board, config)
1125
1228
 
1126
1229
  different = [
1127
1230
  m for m in candidates
@@ -1191,6 +1294,9 @@ def _ranked_reviewer_candidates(
1191
1294
  literal "no eligible reviewer machine configured for repo
1192
1295
  'claude-coordinator'" that a cordoned fleet answered every review
1193
1296
  dispatch with for 70 minutes.
1297
+
1298
+ #697: shares :func:`busy_machine_names` with ``pick_reviewer_machine``, so
1299
+ tier 1 vs tier 2 here is decided on *believable* in-flight rows only.
1194
1300
  """
1195
1301
  from coord.machine_pause import follow_on_paused_set # noqa: PLC0415
1196
1302
 
@@ -1202,7 +1308,7 @@ def _ranked_reviewer_candidates(
1202
1308
  if not candidates:
1203
1309
  return []
1204
1310
 
1205
- busy = {a.machine_name for a in board.active if a.status in ("pending", "running")}
1311
+ busy = busy_machine_names(board, config)
1206
1312
 
1207
1313
  result: list[tuple[Machine, bool]] = []
1208
1314
  for m in candidates:
@@ -1905,6 +1905,42 @@ def test_refused_policy_is_not_bypassed_when_the_title_is_unchanged():
1905
1905
  assert action.audit_event is None
1906
1906
 
1907
1907
 
1908
+ def test_refused_policy_still_blocking_distinguishes_uncertain_from_confident():
1909
+ """#2881: the original #2871 message collapsed "title didn't resolve
1910
+ from the board payload" and "title resolved but is unchanged" into the
1911
+ identical confident "retarget the issue, the next drive will see it"
1912
+ prose — which is exactly why the #2881 payload bug (``title`` missing
1913
+ from the daemon-host ``_local_issue_rows()`` SELECT) went unnoticed for a
1914
+ release cycle: every real drive silently landed in the uncertain case and
1915
+ nothing in the operator-facing text said so. The uncertain case (no
1916
+ branch recorded, or no title resolved) must say the driver could not
1917
+ confirm either way; the confident case (title resolved, branch
1918
+ unchanged) keeps the original #2871 remedy verbatim.
1919
+ """
1920
+ uncertain = step(
1921
+ state(work_aid="w1", work_status="refused_policy", work_finished_at=1000.0)
1922
+ )
1923
+ assert uncertain.is_exit
1924
+ assert "could not confirm" in uncertain.message.lower()
1925
+ assert "the next `coord drive` detects the retarget" not in uncertain.message
1926
+
1927
+ from coord.agent import _slugify # noqa: PLC0415
1928
+
1929
+ title = "Exactly the title this branch was named from"
1930
+ confident = step(
1931
+ state(
1932
+ work_aid="w1",
1933
+ work_status="refused_policy",
1934
+ work_branch=f"issue-{ISSUE}-{_slugify(title)}",
1935
+ issue_title=title,
1936
+ work_finished_at=1000.0,
1937
+ )
1938
+ )
1939
+ assert confident.is_exit
1940
+ assert "could not confirm" not in confident.message.lower()
1941
+ assert "the next `coord drive` detects the retarget" in confident.message
1942
+
1943
+
1908
1944
  def test_an_unknown_terminal_status_refuses_to_guess():
1909
1945
  """No terminal status may fall through to a bare wait (PR #1386)."""
1910
1946
  action = step(state(work_aid="w1", work_status="wat"))
@@ -1490,6 +1490,98 @@ def test_fetch_tops_up_issues_and_milestone_work_orders_when_standalone(
1490
1490
  assert state.milestone_tracking_issue == 1120
1491
1491
 
1492
1492
 
1493
+ def test_fetch_local_issue_rows_carries_title_so_project_resolves_issue_title(
1494
+ monkeypatch, tmp_path, coord_db
1495
+ ):
1496
+ """#2881: ``_local_issue_rows()``'s SELECT dropped ``title`` even though
1497
+ :func:`project` has read ``oi.get("title")`` off this exact payload since
1498
+ #2871 — so on the daemon host (the ONLY host that runs `coord
1499
+ drive-queue tick`, i.e. every real dispatch) ``issue_title`` resolved to
1500
+ ``""`` for every issue, and ``coord.drive._refused_policy_is_stale``
1501
+ (keyed on ``issue_title``) hit its "uncertain ⇒ still blocking" guard
1502
+ unconditionally — the retarget-bypass it exists to provide could never
1503
+ fire in production.
1504
+
1505
+ Drives the REAL local-DB payload path end to end — ``BoardFetcher.fetch()``
1506
+ → ``_local_issue_rows()`` → :func:`project` — against the ``coord_db``
1507
+ fixture's real schema-migrated ``:memory:`` DB, exactly like #2040's own
1508
+ top-up test above. A hand-built ``IssueState`` (what #2871's own tests
1509
+ did) cannot catch this: the bug is entirely in what the SELECT carries,
1510
+ not in how ``project()`` reads it once it has a title. This fails the
1511
+ instant ``title`` is dropped from that SELECT again.
1512
+ """
1513
+ monkeypatch.setattr("coord.client.resolve_board_service", lambda *a, **k: None)
1514
+ monkeypatch.setattr("coord.board_service.read_board", lambda: "BOARD")
1515
+ monkeypatch.setattr("coord.client.serialize_board", lambda b: {"from": b})
1516
+
1517
+ coord_db.execute(
1518
+ "INSERT INTO issues (repo_name, number, title, state, labels, body) "
1519
+ "VALUES (?, ?, ?, ?, ?, ?)",
1520
+ (
1521
+ REPO, 916, "Composed regression test for the rebase-bounce flow",
1522
+ "open", "[]", "",
1523
+ ),
1524
+ )
1525
+ coord_db.commit()
1526
+
1527
+ payload = BoardFetcher(cache_dir=tmp_path).fetch()
1528
+ state = project(payload, REPO, 916, make_config())
1529
+
1530
+ assert state.issue_title == "Composed regression test for the rebase-bounce flow"
1531
+
1532
+
1533
+ def test_fetch_local_issue_rows_and_http_board_expose_the_same_issue_keys(
1534
+ tmp_path, coord_db
1535
+ ):
1536
+ """#2881: silent divergence between the HTTP ``/board`` ``issues``
1537
+ projection (``coord.dao.SqliteStore`` → ``board_schema.BoardIssue``) and
1538
+ this daemon-host standalone path (``_local_issue_rows``) has now caused
1539
+ three separate bugs (#2040, #2182, #2881) — a consumer starts reading a
1540
+ new field, the HTTP path (backed by the declared DTO) carries it, and the
1541
+ local-DB top-up silently doesn't, because nothing keeps the two SELECTs
1542
+ in sync. Rather than wait for the next consumer to discover the next
1543
+ gap, assert the two ``issues`` row shapes expose the same key set
1544
+ directly — against a REAL on-disk schema-migrated DB for the HTTP side
1545
+ (mirrors ``tests/test_dao.py``'s ``read_db`` fixture) and the real
1546
+ ``coord_db`` fixture for the local side. This fails the instant one
1547
+ drifts from the other, regardless of which field it is.
1548
+ """
1549
+ from coord.dao import SqliteStore
1550
+ from coord.db import _ensure_schema
1551
+ from coord.drive_state import _local_issue_rows
1552
+
1553
+ db_path = tmp_path / "coord.db"
1554
+ conn = sqlite3.connect(str(db_path))
1555
+ conn.row_factory = sqlite3.Row
1556
+ _ensure_schema(conn)
1557
+ conn.execute(
1558
+ "INSERT INTO issues (repo_name, number, title, state, labels, body) "
1559
+ "VALUES (?, ?, ?, ?, ?, ?)",
1560
+ (REPO, 1, "t", "open", "[]", ""),
1561
+ )
1562
+ conn.commit()
1563
+ conn.close()
1564
+ http_rows = SqliteStore(db_path).list_issues()
1565
+ assert len(http_rows) == 1
1566
+
1567
+ coord_db.execute(
1568
+ "INSERT INTO issues (repo_name, number, title, state, labels, body) "
1569
+ "VALUES (?, ?, ?, ?, ?, ?)",
1570
+ (REPO, 1, "t", "open", "[]", ""),
1571
+ )
1572
+ coord_db.commit()
1573
+ local_rows = _local_issue_rows()
1574
+ assert len(local_rows) == 1
1575
+
1576
+ assert set(local_rows[0]) == set(http_rows[0]), (
1577
+ "_local_issue_rows() and SqliteStore.list_issues() (the /board HTTP "
1578
+ "path) must expose the same issues-row keys — one side carrying a "
1579
+ "field the other doesn't is exactly the #2040/#2182/#2881 shape "
1580
+ "(a consumer added on one side silently sees None/empty on the "
1581
+ "daemon-host path)"
1582
+ )
1583
+
1584
+
1493
1585
  def test_fetch_local_issue_rows_fail_soft_on_an_unreadable_table(monkeypatch, tmp_path):
1494
1586
  """Mirrors ``coord.commands.drive_queue._local_issue_rows``'s fail-soft
1495
1587
  posture: an unreadable ``issues``/``merge_queue`` table degrades the