code-coordinator 0.5.267__tar.gz → 0.5.268__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 (873) hide show
  1. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/drive.py +117 -8
  5. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/drive_queue.py +23 -9
  6. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/drive_state.py +25 -0
  7. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_drive.py +65 -0
  8. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_drive_queue.py +17 -0
  9. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_drive_state.py +38 -0
  10. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/.claude/commands/board.md +0 -0
  11. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/.claude/commands/complete-session.md +0 -0
  12. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/.claude/commands/coordinator.md +0 -0
  13. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/.githooks/_lib.sh +0 -0
  14. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/.githooks/post-checkout +0 -0
  15. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/.githooks/post-commit +0 -0
  16. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/.githooks/post-merge +0 -0
  17. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  18. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/.github/coord-ci-acceptance.yml +0 -0
  19. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/.github/workflows/auto-release.yml +0 -0
  20. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/.github/workflows/cargo-test.yml +0 -0
  21. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/.github/workflows/publish.yml +0 -0
  22. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/.github/workflows/release-tui.yml +0 -0
  23. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/.github/workflows/test.yml +0 -0
  24. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/.gitignore +0 -0
  25. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/CLAUDE.md +0 -0
  26. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/GOAL.md +0 -0
  27. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/LICENSE +0 -0
  28. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/MANIFEST.in +0 -0
  29. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/README.md +0 -0
  30. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/code_coordinator.egg-info/SOURCES.txt +0 -0
  31. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/code_coordinator.egg-info/dependency_links.txt +0 -0
  32. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/code_coordinator.egg-info/entry_points.txt +0 -0
  33. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/code_coordinator.egg-info/requires.txt +0 -0
  34. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/code_coordinator.egg-info/scm_file_list.json +0 -0
  35. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/code_coordinator.egg-info/top_level.txt +0 -0
  36. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/__init__.py +0 -0
  37. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/_board_mapping.py +0 -0
  38. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/acceptance.py +0 -0
  39. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/acceptance_drivers.py +0 -0
  40. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/agent.py +0 -0
  41. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/agent_app.py +0 -0
  42. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/agent_update.py +0 -0
  43. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/agents/opencode/.gitignore +0 -0
  44. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/agents/opencode/agents/work.md +0 -0
  45. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/agents/opencode/routing.jsonc +0 -0
  46. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/approved_work.py +0 -0
  47. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/audit.py +0 -0
  48. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/auto_loop.py +0 -0
  49. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/block_log.py +0 -0
  50. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/board_bool_guard.py +0 -0
  51. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/board_schema.py +0 -0
  52. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/board_service.py +0 -0
  53. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/board_wire.py +0 -0
  54. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/brain.py +0 -0
  55. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/branch_model.py +0 -0
  56. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/bug_intake.py +0 -0
  57. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/cargo_cache.py +0 -0
  58. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/ci_fix.py +0 -0
  59. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/ci_github.py +0 -0
  60. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/ci_gitlab.py +0 -0
  61. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/ci_store.py +0 -0
  62. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/claim.py +0 -0
  63. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/cli.py +0 -0
  64. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/client.py +0 -0
  65. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/__init__.py +0 -0
  66. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/_common.py +0 -0
  67. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/acceptance.py +0 -0
  68. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/agent_ops.py +0 -0
  69. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/audit.py +0 -0
  70. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/chat.py +0 -0
  71. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/dispatch.py +0 -0
  72. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/dispatch_workers.py +0 -0
  73. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/drive.py +0 -0
  74. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/drive_queue.py +0 -0
  75. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/gate_a.py +0 -0
  76. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/gates.py +0 -0
  77. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/issues.py +0 -0
  78. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/lifecycle.py +0 -0
  79. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/merge.py +0 -0
  80. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/milestone.py +0 -0
  81. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/plan_followup.py +0 -0
  82. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/plans.py +0 -0
  83. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/portal.py +0 -0
  84. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/pr.py +0 -0
  85. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/release.py +0 -0
  86. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/repo.py +0 -0
  87. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/report.py +0 -0
  88. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/review.py +0 -0
  89. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/scorecard.py +0 -0
  90. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/sessions.py +0 -0
  91. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/setup.py +0 -0
  92. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/status.py +0 -0
  93. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/terminal.py +0 -0
  94. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/test_gate.py +0 -0
  95. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/commands/tui.py +0 -0
  96. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/comments.py +0 -0
  97. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/config.py +0 -0
  98. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/config_reload.py +0 -0
  99. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/confirm_test.py +0 -0
  100. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/conflict_fix.py +0 -0
  101. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/dao.py +0 -0
  102. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/dashboard/__init__.py +0 -0
  103. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/dashboard/fixture.py +0 -0
  104. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/dashboard/index.html +0 -0
  105. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/dashboard/server.py +0 -0
  106. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/dashboard/terminal.py +0 -0
  107. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/db.py +0 -0
  108. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/dead_end.py +0 -0
  109. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/decomposition_chat.py +0 -0
  110. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/README.md +0 -0
  111. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-agent.service +0 -0
  112. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-db-backup.service +0 -0
  113. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-db-backup.sh +0 -0
  114. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-db-backup.timer +0 -0
  115. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-drive-queue.service +0 -0
  116. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-drive-queue.timer +0 -0
  117. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-failure-notify.service +0 -0
  118. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-fleet-watchdog.service +0 -0
  119. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  120. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-notify.service +0 -0
  121. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-notify.timer +0 -0
  122. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-release-propagate.service +0 -0
  123. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-release-propagate.timer +0 -0
  124. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-release-window.service +0 -0
  125. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-release-window.timer +0 -0
  126. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-serve.service +0 -0
  127. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-web-dist-build.service +0 -0
  128. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-web-dist-build.timer +0 -0
  129. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy/coord-web.service +0 -0
  130. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy_manifest.py +0 -0
  131. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deploy_units.py +0 -0
  132. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/deps.py +0 -0
  133. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/diagnose.py +0 -0
  134. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/dispatch.py +0 -0
  135. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/dist_name.py +0 -0
  136. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/events.py +0 -0
  137. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/failure_class.py +0 -0
  138. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/filelock.py +0 -0
  139. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/fleet_config_health.py +0 -0
  140. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/forge_availability.py +0 -0
  141. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/freshness.py +0 -0
  142. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/gate_a.py +0 -0
  143. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/gate_b.py +0 -0
  144. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/gate_snapshot.py +0 -0
  145. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/gates.py +0 -0
  146. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/github_ops.py +0 -0
  147. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/github_throttle.py +0 -0
  148. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/goal.py +0 -0
  149. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/graph_health.py +0 -0
  150. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/__init__.py +0 -0
  151. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/aggregate.py +0 -0
  152. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/__init__.py +0 -0
  153. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/agent_install.py +0 -0
  154. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/cargo_targets.py +0 -0
  155. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/claude_binary.py +0 -0
  156. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/coord_web_ci_pin.py +0 -0
  157. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/deploy_lane_facts.py +0 -0
  158. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/disk.py +0 -0
  159. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/fleet_board.py +0 -0
  160. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  161. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/fleet_phantom.py +0 -0
  162. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/fleet_unit_drift.py +0 -0
  163. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/graph.py +0 -0
  164. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/graphify_cli.py +0 -0
  165. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/index_lock.py +0 -0
  166. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/issues_sync_staleness.py +0 -0
  167. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/plan_usage.py +0 -0
  168. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/release_cordon.py +0 -0
  169. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/repo_state.py +0 -0
  170. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/spawned_coord.py +0 -0
  171. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/stalled_pipeline.py +0 -0
  172. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/timer_active.py +0 -0
  173. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/toolchain.py +0 -0
  174. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/unit_drift.py +0 -0
  175. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/unit_enablement.py +0 -0
  176. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/checks/worktrees.py +0 -0
  177. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/cli.py +0 -0
  178. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/context.py +0 -0
  179. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/fleet_snapshot.py +0 -0
  180. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/models.py +0 -0
  181. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/pypi.py +0 -0
  182. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/registry.py +0 -0
  183. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/render.py +0 -0
  184. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/health/units.py +0 -0
  185. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/hooks.py +0 -0
  186. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/housekeeping.py +0 -0
  187. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/interactive.py +0 -0
  188. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/issue_store.py +0 -0
  189. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/issues_sync_status.py +0 -0
  190. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/liveness_auditor.py +0 -0
  191. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/machine_pause.py +0 -0
  192. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/merge_queue.py +0 -0
  193. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/milestone_chat.py +0 -0
  194. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/milestone_dispatch.py +0 -0
  195. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/milestone_gate.py +0 -0
  196. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/milestone_order.py +0 -0
  197. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/mock_author.py +0 -0
  198. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/models.py +0 -0
  199. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/network.py +0 -0
  200. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/new_issue_chat.py +0 -0
  201. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/notifier/__init__.py +0 -0
  202. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/notifier/baseline.py +0 -0
  203. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/notifier/cli.py +0 -0
  204. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/notifier/collect.py +0 -0
  205. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/notifier/digest.py +0 -0
  206. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/notifier/models.py +0 -0
  207. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/notifier/predicate.py +0 -0
  208. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/notifier/service.py +0 -0
  209. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/notifier/store.py +0 -0
  210. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/notifier/transport.py +0 -0
  211. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/notify.py +0 -0
  212. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/openapi.py +0 -0
  213. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/overlap_fence.py +0 -0
  214. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/overlap_predict.py +0 -0
  215. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/parentage.py +0 -0
  216. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/parentage_github.py +0 -0
  217. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/pipeline.py +0 -0
  218. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/plan_parser.py +0 -0
  219. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/plans.py +0 -0
  220. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/platform_paths.py +0 -0
  221. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/portal_bridge.py +0 -0
  222. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/portal_store.py +0 -0
  223. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/portal_sync.py +0 -0
  224. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/pr_body_lint.py +0 -0
  225. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/prereqs.py +0 -0
  226. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/progress.py +0 -0
  227. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/providers/__init__.py +0 -0
  228. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/providers/base.py +0 -0
  229. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/providers/claude.py +0 -0
  230. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/providers/claude_pty.py +0 -0
  231. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/providers/opencode.py +0 -0
  232. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/queue_diagnose.py +0 -0
  233. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/reconcile.py +0 -0
  234. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/reconcile_tick.py +0 -0
  235. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/refine_chat.py +0 -0
  236. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/release_cordon.py +0 -0
  237. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/release_propagate.py +0 -0
  238. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/release_verify.py +0 -0
  239. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/release_window.py +0 -0
  240. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/repo_edit.py +0 -0
  241. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/repo_onboard.py +0 -0
  242. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/reports.py +0 -0
  243. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/revalidate.py +0 -0
  244. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/review.py +0 -0
  245. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/scorecard.py +0 -0
  246. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/self_health.py +0 -0
  247. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/serve_app.py +0 -0
  248. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  249. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  250. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  251. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  252. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  253. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/skills/portal-followup/SKILL.md +0 -0
  254. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/skills/release-now/SKILL.md +0 -0
  255. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  256. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  257. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/skills/update-issue/SKILL.md +0 -0
  258. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/smoke.py +0 -0
  259. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/spend_ceiling.py +0 -0
  260. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/split_work.py +0 -0
  261. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/sql.py +0 -0
  262. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/stage_projection.py +0 -0
  263. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/state.py +0 -0
  264. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/test_author.py +0 -0
  265. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/test_chat.py +0 -0
  266. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/test_orchestrator.py +0 -0
  267. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/test_report.py +0 -0
  268. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/tui_release.py +0 -0
  269. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/usage.py +0 -0
  270. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/usage_limits.py +0 -0
  271. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/usage_rollup.py +0 -0
  272. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coord/worker_events.py +0 -0
  273. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/coordinator.example.yml +0 -0
  274. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-agent.service +0 -0
  275. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-db-backup.service +0 -0
  276. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-db-backup.sh +0 -0
  277. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-db-backup.timer +0 -0
  278. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-drive-queue.service +0 -0
  279. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-drive-queue.timer +0 -0
  280. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-failure-notify.service +0 -0
  281. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-failure-notify.sh +0 -0
  282. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-fleet-watchdog.service +0 -0
  283. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-fleet-watchdog.timer +0 -0
  284. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-notify.service +0 -0
  285. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-notify.timer +0 -0
  286. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-release-propagate.service +0 -0
  287. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-release-propagate.timer +0 -0
  288. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-release-window.service +0 -0
  289. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-release-window.timer +0 -0
  290. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-serve.service +0 -0
  291. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-web-dist-build.service +0 -0
  292. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-web-dist-build.sh +0 -0
  293. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-web-dist-build.timer +0 -0
  294. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-web-rollback.sh +0 -0
  295. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/coord-web.service +0 -0
  296. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/deploy/node-shim.sh +0 -0
  297. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  298. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/ADR_COORD_WEB_CI.md +0 -0
  299. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/ADR_COORD_WEB_DIST.md +0 -0
  300. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/AGENT_OPERATIONS.md +0 -0
  301. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/ARCHITECTURE.md +0 -0
  302. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/ARCH_SECURITY_GATES.md +0 -0
  303. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/COCKPIT.md +0 -0
  304. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/CONTROL_CENTER.md +0 -0
  305. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/COST_DISCIPLINE.md +0 -0
  306. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/CROSS_PLATFORM.md +0 -0
  307. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/CUSTOMER_FACING_APPS.md +0 -0
  308. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/CUSTOMER_PORTAL.md +0 -0
  309. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/DRIVE_QUEUE.md +0 -0
  310. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/EPHEMERAL_WORKERS.md +0 -0
  311. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/FORGE_MIGRATION.md +0 -0
  312. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/GRAPHIFY_SETUP.md +0 -0
  313. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/ISSUE_GUIDANCE.md +0 -0
  314. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/MAC_MINI.md +0 -0
  315. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  316. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/NOTIFIER.md +0 -0
  317. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/OPENCODE_VERIFICATION.md +0 -0
  318. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/OPERATING_GOTCHAS.md +0 -0
  319. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/OPERATOR_GUIDES.md +0 -0
  320. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/ORACLE_LOOP.md +0 -0
  321. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/PHONE_WEBAPP.md +0 -0
  322. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/PIPELINE_V2.md +0 -0
  323. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/PLATFORM_EVOLUTION.md +0 -0
  324. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/SECOND_BACKEND.md +0 -0
  325. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/STORE_SERVICE.md +0 -0
  326. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  327. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/WEB_CONTROL_CENTER.md +0 -0
  328. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/WSL_WINDOWS_WORKER.md +0 -0
  329. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/mocks/web/README.md +0 -0
  330. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/mocks/web/_tokens.css +0 -0
  331. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/mocks/web/issue-detail.html +0 -0
  332. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/mocks/web/pipeline-narrow.html +0 -0
  333. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/docs/mocks/web/pipeline-wide.html +0 -0
  334. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/graphify-out/.gitignore +0 -0
  335. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/install-agent.sh +0 -0
  336. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/pyproject.toml +0 -0
  337. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/audit_review_verdict_overrides.py +0 -0
  338. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  339. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/azure-workers/build-worker-image.sh +0 -0
  340. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/azure-workers/coordinator-machine.py +0 -0
  341. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/azure-workers/epic-down.sh +0 -0
  342. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/azure-workers/epic-up.sh +0 -0
  343. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/azure-workers/preflight.sh +0 -0
  344. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/azure-workers/provision-worker.sh +0 -0
  345. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  346. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  347. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/azure-workers/verify-github-token.sh +0 -0
  348. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/check_gh_argv_containment.py +0 -0
  349. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/codegen.py +0 -0
  350. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/coord-test-runner.sh +0 -0
  351. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/coord-venv-rollback.sh +0 -0
  352. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/drive-batch.sh +0 -0
  353. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/fleet_watchdog.py +0 -0
  354. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/gen_board_fixture.py +0 -0
  355. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/gen_mock_index.py +0 -0
  356. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/next_release_tag.py +0 -0
  357. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/run_tests_in_populated_home.sh +0 -0
  358. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/run_tests_without_gh.sh +0 -0
  359. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/smoke_437_interactive.py +0 -0
  360. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/verify_878_review_capture.py +0 -0
  361. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/verify_release_published.py +0 -0
  362. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/scripts/verify_release_wheel.py +0 -0
  363. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/setup.cfg +0 -0
  364. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/SMOKE_SET.md +0 -0
  365. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/__init__.py +0 -0
  366. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  367. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-33/contract.md +0 -0
  368. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-33/manifest.yml +0 -0
  369. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  370. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  371. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  372. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  373. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-37/conftest.py +0 -0
  374. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-37/contract.md +0 -0
  375. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-37/manifest.yml +0 -0
  376. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  377. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  378. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-38/contract.md +0 -0
  379. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-38/manifest.yml +0 -0
  380. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  381. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  382. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  383. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  384. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  385. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  386. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  387. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  388. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  389. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  390. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-51/contract.md +0 -0
  391. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  392. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  393. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-51/manifest.yml +0 -0
  394. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  395. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-51/tsconfig.json +0 -0
  396. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  397. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  398. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  399. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/contract.md +0 -0
  400. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  401. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/manifest.yml +0 -0
  402. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  403. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  404. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  405. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  406. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  407. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  408. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  409. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  410. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  411. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  412. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  413. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
  414. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-67/contract.md +0 -0
  415. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
  416. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-67/manifest.yml +0 -0
  417. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
  418. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
  419. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
  420. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
  421. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
  422. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
  423. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  424. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/conftest.py +0 -0
  425. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/board-pipeline-basic.json +0 -0
  426. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  427. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  428. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  429. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  430. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/playwright/all_pass.json +0 -0
  431. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  432. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/playwright/mixed_fail.json +0 -0
  433. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  434. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  435. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/playwright/skip.json +0 -0
  436. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/playwright/truncated.json +0 -0
  437. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  438. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  439. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  440. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  441. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  442. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  443. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  444. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  445. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_acceptance.py +0 -0
  446. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_acceptance_drivers.py +0 -0
  447. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent.py +0 -0
  448. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_api_error.py +0 -0
  449. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_app.py +0 -0
  450. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_branch_base.py +0 -0
  451. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_branch_capture.py +0 -0
  452. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_config_free_1712.py +0 -0
  453. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_deploy_units_endpoint.py +0 -0
  454. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_dirty_worktree.py +0 -0
  455. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  456. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_graph_self_heal.py +0 -0
  457. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_health_h3.py +0 -0
  458. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_idle_restart.py +0 -0
  459. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_push_failure.py +0 -0
  460. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_reap.py +0 -0
  461. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_repos_and_pull.py +0 -0
  462. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_restart_services_endpoint.py +0 -0
  463. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_skills_self_heal.py +0 -0
  464. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_startup_diagnostics.py +0 -0
  465. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_update.py +0 -0
  466. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_update_bluegreen.py +0 -0
  467. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_usage_limit.py +0 -0
  468. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_agent_zero_commit.py +0 -0
  469. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_ambient_home_isolation.py +0 -0
  470. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_approve_dependency_busy_2804.py +0 -0
  471. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_approve_reject_plan.py +0 -0
  472. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_approve_usage_gate.py +0 -0
  473. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_approved_work_2532.py +0 -0
  474. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_assignment_already_recorded_daemon.py +0 -0
  475. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_audit_log.py +0 -0
  476. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_audit_outcome.py +0 -0
  477. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_audit_query.py +0 -0
  478. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_auto_loop.py +0 -0
  479. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_auto_release_publish_2035.py +0 -0
  480. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_base_checkout_restore.py +0 -0
  481. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_block_log.py +0 -0
  482. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_board_cap_762.py +0 -0
  483. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_board_fixture.py +0 -0
  484. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_board_read_path.py +0 -0
  485. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_board_schema.py +0 -0
  486. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_board_service.py +0 -0
  487. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_board_state.py +0 -0
  488. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_board_wire.py +0 -0
  489. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_brain.py +0 -0
  490. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_branch_model.py +0 -0
  491. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_bug_intake.py +0 -0
  492. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_build_worker_image_env_update.py +0 -0
  493. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cargo_cache.py +0 -0
  494. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_check_gh_argv_containment.py +0 -0
  495. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_ci_acceptance_gate_1950.py +0 -0
  496. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_ci_fix.py +0 -0
  497. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_ci_gitlab.py +0 -0
  498. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_ci_parity_2091.py +0 -0
  499. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_ci_store.py +0 -0
  500. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_claim.py +0 -0
  501. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_claude_md_budget.py +0 -0
  502. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_acceptance.py +0 -0
  503. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_assign.py +0 -0
  504. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  505. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_assign_interactive_remote.py +0 -0
  506. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_assign_provider.py +0 -0
  507. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  508. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_audit.py +0 -0
  509. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_chat_continue.py +0 -0
  510. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_decide.py +0 -0
  511. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_diagnose_config_provenance.py +0 -0
  512. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_diagnose_forge_availability.py +0 -0
  513. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_diagnose_graph.py +0 -0
  514. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_diagnose_self.py +0 -0
  515. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_doctor.py +0 -0
  516. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_doctor_config_free_1801.py +0 -0
  517. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  518. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_drive.py +0 -0
  519. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_drive_queue.py +0 -0
  520. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_escalate.py +0 -0
  521. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_fix_headless_review.py +0 -0
  522. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_gate_a.py +0 -0
  523. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_install_drift.py +0 -0
  524. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_install_skills.py +0 -0
  525. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_issue_comment.py +0 -0
  526. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_issue_create_label.py +0 -0
  527. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_issue_reopen.py +0 -0
  528. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_issue_view_list.py +0 -0
  529. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_merge.py +0 -0
  530. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_milestone_assign.py +0 -0
  531. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_milestone_capture.py +0 -0
  532. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_milestone_chat_add_child.py +0 -0
  533. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_milestone_dispatch.py +0 -0
  534. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_milestone_gate_b.py +0 -0
  535. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_milestone_gate_c.py +0 -0
  536. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_milestone_order.py +0 -0
  537. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  538. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_milestone_ship.py +0 -0
  539. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_network.py +0 -0
  540. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_new_issue_chat.py +0 -0
  541. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_plans.py +0 -0
  542. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_portal.py +0 -0
  543. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_pr.py +0 -0
  544. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_pull_artifact.py +0 -0
  545. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_queue.py +0 -0
  546. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_reattach_sessions.py +0 -0
  547. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_refine_board.py +0 -0
  548. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_release_preflight.py +0 -0
  549. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_release_propagate.py +0 -0
  550. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_release_window.py +0 -0
  551. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_repo_2220.py +0 -0
  552. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  553. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_scorecard.py +0 -0
  554. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_set_review_findings.py +0 -0
  555. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_status_advisory_terminal.py +0 -0
  556. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_status_contested_tag.py +0 -0
  557. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_status_merge_queue.py +0 -0
  558. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_status_provider.py +0 -0
  559. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_status_review_finalizing.py +0 -0
  560. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_status_test_failed_tag.py +0 -0
  561. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_status_usage_limit.py +0 -0
  562. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_sync_comments_873.py +0 -0
  563. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_test_plan.py +0 -0
  564. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_track.py +0 -0
  565. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_tui_update.py +0 -0
  566. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cli_wait.py +0 -0
  567. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_client_base_install.py +0 -0
  568. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_commands_common.py +0 -0
  569. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_comments.py +0 -0
  570. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_completion_summary.py +0 -0
  571. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_config.py +0 -0
  572. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_config_acceptance.py +0 -0
  573. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_config_audit.py +0 -0
  574. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_config_pricing.py +0 -0
  575. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  576. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_config_usage_gate.py +0 -0
  577. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_confirm_test.py +0 -0
  578. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_conflict_fix.py +0 -0
  579. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_conflict_fix_semantic.py +0 -0
  580. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  581. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_coord_test.py +0 -0
  582. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_coord_test_runner_baseline.py +0 -0
  583. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_coord_test_runner_populated_home.py +0 -0
  584. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_coord_test_runner_routing.py +0 -0
  585. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_coord_test_runner_toolchain.py +0 -0
  586. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_coord_uat.py +0 -0
  587. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_coord_web_sse_restart_live.py +0 -0
  588. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_coordinator_machine.py +0 -0
  589. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_cross_platform_imports.py +0 -0
  590. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_dao.py +0 -0
  591. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_dashboard.py +0 -0
  592. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_dashboard_fixture.py +0 -0
  593. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_dashboard_terminal.py +0 -0
  594. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_dashboard_terminal_live.py +0 -0
  595. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_db.py +0 -0
  596. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_dead_end.py +0 -0
  597. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_decomposition_chat.py +0 -0
  598. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_deploy_coord_db_backup.py +0 -0
  599. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_deploy_coord_web_dist.py +0 -0
  600. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_deploy_coord_web_rollback.py +0 -0
  601. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_deploy_drive_queue_unit.py +0 -0
  602. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_deploy_failure_notify_unit.py +0 -0
  603. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_deploy_manifest.py +0 -0
  604. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_deploy_notify_unit.py +0 -0
  605. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_deploy_units_lane.py +0 -0
  606. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_deploy_web_unit.py +0 -0
  607. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_deps.py +0 -0
  608. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_diagnose.py +0 -0
  609. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_dispatch.py +0 -0
  610. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_dispatch_target_validation.py +0 -0
  611. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_dist_name.py +0 -0
  612. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_done_housekeeping.py +0 -0
  613. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_drive_queue_blocked_rendering.py +0 -0
  614. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_drive_queue_launch_argv.py +0 -0
  615. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  616. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_drive_queue_roll_pending.py +0 -0
  617. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  618. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_drive_tmux.py +0 -0
  619. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_epic_up_capability_detection.py +0 -0
  620. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  621. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_epic_up_image_provenance.py +0 -0
  622. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_errors.py +0 -0
  623. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_events.py +0 -0
  624. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_failure_class.py +0 -0
  625. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_filelock.py +0 -0
  626. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  627. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_fix_of_force_override.py +0 -0
  628. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_fleet_config_health.py +0 -0
  629. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_fleet_health_probes.py +0 -0
  630. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_fleet_health_snapshot.py +0 -0
  631. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_fleet_watchdog.py +0 -0
  632. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_forge_availability.py +0 -0
  633. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_freshness.py +0 -0
  634. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_gate_a.py +0 -0
  635. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_gate_b.py +0 -0
  636. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_gate_snapshot_staleness.py +0 -0
  637. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_gates.py +0 -0
  638. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  639. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_gen_mock_index.py +0 -0
  640. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_generated_rust_fixture.py +0 -0
  641. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_generated_types_fixture.py +0 -0
  642. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_github_ops.py +0 -0
  643. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_github_throttle.py +0 -0
  644. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_goal.py +0 -0
  645. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_graph_health.py +0 -0
  646. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_graph_selfheal_absent_2237.py +0 -0
  647. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_handoff.py +0 -0
  648. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_checks.py +0 -0
  649. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_cli.py +0 -0
  650. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_cli_graph.py +0 -0
  651. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_config.py +0 -0
  652. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_context.py +0 -0
  653. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_coord_web_ci_pin.py +0 -0
  654. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_deploy_lane_facts.py +0 -0
  655. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_fix.py +0 -0
  656. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_incident_regression.py +0 -0
  657. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_issues_sync_staleness.py +0 -0
  658. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_pypi.py +0 -0
  659. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_registry.py +0 -0
  660. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_release_cordon_probe.py +0 -0
  661. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_timer_active.py +0 -0
  662. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_toolchain.py +0 -0
  663. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_unit_drift.py +0 -0
  664. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_health_unit_enablement.py +0 -0
  665. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_hooks.py +0 -0
  666. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_human_attended_437.py +0 -0
  667. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_init.py +0 -0
  668. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_integration.py +0 -0
  669. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_interactive_briefing_echo.py +0 -0
  670. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_interactive_pane_log_2541.py +0 -0
  671. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_interactive_prefill_state.py +0 -0
  672. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_interactive_session_relaunch.py +0 -0
  673. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_interactive_test_verdict_backstop.py +0 -0
  674. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_interactive_token_attribution.py +0 -0
  675. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_interactive_worktree.py +0 -0
  676. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_issue_store_seam.py +0 -0
  677. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_issues_sync_status.py +0 -0
  678. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_liveness_auditor.py +0 -0
  679. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_liveness_notify.py +0 -0
  680. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_lock_contention_ratchet.py +0 -0
  681. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_machine_pause.py +0 -0
  682. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_merge_queue.py +0 -0
  683. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_merge_verify.py +0 -0
  684. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_milestone_chat.py +0 -0
  685. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_milestone_dispatch.py +0 -0
  686. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_milestone_gate.py +0 -0
  687. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_milestone_order.py +0 -0
  688. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_milestone_seam.py +0 -0
  689. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_mock_author.py +0 -0
  690. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_model_tiering.py +0 -0
  691. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_models.py +0 -0
  692. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_models_config_labels.py +0 -0
  693. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_needs_attention.py +0 -0
  694. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_network.py +0 -0
  695. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_new_issue_chat.py +0 -0
  696. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_next_release_tag.py +0 -0
  697. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_node_shim.py +0 -0
  698. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_notifier_baseline.py +0 -0
  699. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_notifier_cli.py +0 -0
  700. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_notifier_collect.py +0 -0
  701. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_notifier_config.py +0 -0
  702. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_notifier_drive_seam.py +0 -0
  703. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_notifier_isolation.py +0 -0
  704. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_notifier_predicate.py +0 -0
  705. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_notifier_quiet_hours.py +0 -0
  706. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_notifier_service.py +0 -0
  707. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_notify.py +0 -0
  708. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_notify_drain.py +0 -0
  709. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_openapi.py +0 -0
  710. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_operational_defaults.py +0 -0
  711. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_overlap_fence.py +0 -0
  712. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_overlap_predict.py +0 -0
  713. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_packaged_deploy_units.py +0 -0
  714. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_parentage.py +0 -0
  715. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_paste_landed.py +0 -0
  716. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  717. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_pipeline.py +0 -0
  718. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_plan_followup_approve_plan_command.py +0 -0
  719. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_plan_followup_pr_command.py +0 -0
  720. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_plan_followup_review_command.py +0 -0
  721. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_plan_only.py +0 -0
  722. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_plan_parser.py +0 -0
  723. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_platform_paths.py +0 -0
  724. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_portal_bridge.py +0 -0
  725. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_portal_config.py +0 -0
  726. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_portal_store.py +0 -0
  727. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_portal_sync.py +0 -0
  728. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_pr_body_lint.py +0 -0
  729. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_prereqs.py +0 -0
  730. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_production_db_guard.py +0 -0
  731. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_progress.py +0 -0
  732. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_provider_seam.py +0 -0
  733. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_providers.py +0 -0
  734. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_providers_config_labels.py +0 -0
  735. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_providers_pty.py +0 -0
  736. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_quiet_hours.py +0 -0
  737. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_quiet_hours_store_2146.py +0 -0
  738. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_reap_merged_sessions.py +0 -0
  739. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_reap_stale_interactive_tick.py +0 -0
  740. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_reconcile.py +0 -0
  741. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_reconcile_branch.py +0 -0
  742. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_reconcile_completions.py +0 -0
  743. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  744. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_reconcile_merges.py +0 -0
  745. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_reconcile_no_agent_record.py +0 -0
  746. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_reconcile_tick.py +0 -0
  747. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_reconcile_usage_limit_done.py +0 -0
  748. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_refine_chat.py +0 -0
  749. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_release_cordon_2101.py +0 -0
  750. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  751. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_release_cordon_deadlock_2240.py +0 -0
  752. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_release_cordon_stuck_2490.py +0 -0
  753. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_release_propagate.py +0 -0
  754. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_release_propagate_threshold.py +0 -0
  755. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_release_roll_between_legs_2854.py +0 -0
  756. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_release_roll_window_handoff.py +0 -0
  757. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_release_unified_1242.py +0 -0
  758. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_release_verify.py +0 -0
  759. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_release_window.py +0 -0
  760. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_remote_auto_prune.py +0 -0
  761. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_remote_interactive_reaper.py +0 -0
  762. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_repo_add.py +0 -0
  763. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_repo_edit_2220.py +0 -0
  764. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_repo_graph_fleet_2237.py +0 -0
  765. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_repo_onboard_2220.py +0 -0
  766. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_report_result_push.py +0 -0
  767. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_reports.py +0 -0
  768. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_retry.py +0 -0
  769. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_retry_advisory_1606.py +0 -0
  770. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_retry_type_1636.py +0 -0
  771. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_revalidate.py +0 -0
  772. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_review.py +0 -0
  773. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_review_end_review_without_verdict.py +0 -0
  774. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_review_parse_failure_diagnostic.py +0 -0
  775. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_review_reaffirm.py +0 -0
  776. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_review_state.py +0 -0
  777. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_review_verdict_backstop.py +0 -0
  778. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_review_verdict_override_audit.py +0 -0
  779. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_review_verdict_relay.py +0 -0
  780. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_review_zero_commits.py +0 -0
  781. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_scoped_review_wiring.py +0 -0
  782. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_scorecard.py +0 -0
  783. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_self_health.py +0 -0
  784. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_serve.py +0 -0
  785. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_serve_app_board_trim.py +0 -0
  786. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_session.py +0 -0
  787. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_slice_issue_attribution.py +0 -0
  788. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_smoke.py +0 -0
  789. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_smoke_live_checkout_restore.py +0 -0
  790. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_smoke_workflow.py +0 -0
  791. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_spend_ceiling.py +0 -0
  792. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_spend_ceiling_coordinator.py +0 -0
  793. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_split.py +0 -0
  794. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_split_work.py +0 -0
  795. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_sql_dialect.py +0 -0
  796. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_stage_projection.py +0 -0
  797. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_stalled_pipeline.py +0 -0
  798. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_state.py +0 -0
  799. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_state_review_findings_daemon.py +0 -0
  800. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_status_fleet_footer.py +0 -0
  801. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_stop_1567.py +0 -0
  802. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_store_contract.py +0 -0
  803. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_stuck.py +0 -0
  804. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  805. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_terminal_command.py +0 -0
  806. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_test_author.py +0 -0
  807. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_test_chat.py +0 -0
  808. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_test_orchestrator.py +0 -0
  809. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_test_report.py +0 -0
  810. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_test_verdict_parsing.py +0 -0
  811. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_test_verdict_transcript_floor.py +0 -0
  812. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_text_io_encoding_audit.py +0 -0
  813. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_thin_client_board_audit.py +0 -0
  814. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_thin_client_config_load_1080.py +0 -0
  815. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_thin_client_daemon_routing_906.py +0 -0
  816. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_tmux_host.py +0 -0
  817. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_tmux_session.py +0 -0
  818. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_transcript_floor.py +0 -0
  819. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_usage.py +0 -0
  820. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_usage_limits.py +0 -0
  821. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_usage_rollup.py +0 -0
  822. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_venv_live_install_2121.py +0 -0
  823. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_version_single_source.py +0 -0
  824. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_watch.py +0 -0
  825. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  826. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_worker_env_venv_isolation.py +0 -0
  827. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_worker_events.py +0 -0
  828. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_worker_image_pin_sync.py +0 -0
  829. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_worker_safety.py +0 -0
  830. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_worker_test_scoping.py +0 -0
  831. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_worktree.py +0 -0
  832. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  833. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/Cargo.lock +0 -0
  834. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/Cargo.toml +0 -0
  835. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/cargo-config-local-quadraui.toml.example +0 -0
  836. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/approved.rs +0 -0
  837. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/audit.rs +0 -0
  838. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/chat.rs +0 -0
  839. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/data.rs +0 -0
  840. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/dialogs.rs +0 -0
  841. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/doc_tabs.rs +0 -0
  842. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/drive.rs +0 -0
  843. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/drive_queue.rs +0 -0
  844. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/escalation.rs +0 -0
  845. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/events.rs +0 -0
  846. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/fixtures.rs +0 -0
  847. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/fleet_health.rs +0 -0
  848. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/fleet_sessions.rs +0 -0
  849. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/fleet_terminals.rs +0 -0
  850. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/format.rs +0 -0
  851. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/milestone_dag.rs +0 -0
  852. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/mod.rs +0 -0
  853. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/msv.rs +0 -0
  854. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/pipeline.rs +0 -0
  855. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/plans.rs +0 -0
  856. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/render.rs +0 -0
  857. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/reports.rs +0 -0
  858. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/sessions.rs +0 -0
  859. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/settings_ui.rs +0 -0
  860. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/sidebar.rs +0 -0
  861. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/terminal.rs +0 -0
  862. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/tests.rs +0 -0
  863. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/types/generated.rs +0 -0
  864. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/types.rs +0 -0
  865. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/app/workspace.rs +0 -0
  866. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/bin/gtk.rs +0 -0
  867. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/commands.rs +0 -0
  868. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/lib.rs +0 -0
  869. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/main.rs +0 -0
  870. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/src/settings.rs +0 -0
  871. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/tests/acceptance.rs +0 -0
  872. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/tui/tests/cli.rs +0 -0
  873. {code_coordinator-0.5.267 → code_coordinator-0.5.268}/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.267
3
+ Version: 0.5.268
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.267
3
+ Version: 0.5.268
4
4
  Summary: Coordinate Claude Code workers across multiple machines and repos.
5
5
  Author-email: John Donaghy <johnfdonaghy@gmail.com>
6
6
  License-Expression: LicenseRef-FSL-1.1-MIT
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.267",
2
+ "tag": "0.5.268",
3
3
  "distance": 0,
4
- "node": "g1fa630fb3cebe560405cb33c1b2ce1e3fed742a4",
4
+ "node": "gf1fb3361f55813adaa28edcc31c2b9a1b6a20836",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-28"
@@ -587,6 +587,14 @@ class Action:
587
587
  # the work row's own last attempt reported, or `_decide_merge` would
588
588
  # diagnose one PR using the other PR's gates.
589
589
  merge_scope: str = "work"
590
+ # #2871: an explicit ``(event_type, summary, details)`` for `Driver._loop`
591
+ # to write via `_record_drive_audit`, independent of whatever this Action
592
+ # otherwise does (WAIT/RUN/EXIT). `decide()` stays a pure function of its
593
+ # inputs — it hands back *what happened*, never writes the audit log
594
+ # itself — while still letting a poll that neither dispatches nor exits
595
+ # (e.g. bypassing a stale pre-dispatch refusal) leave a durable trail
596
+ # instead of only a run-log line nobody queries later.
597
+ audit_event: tuple[str, str, dict[str, Any]] | None = None
590
598
 
591
599
  @property
592
600
  def is_exit(self) -> bool:
@@ -605,6 +613,44 @@ def _die(message: str, exit_code: int = EXIT_TERMINAL_FAILURE) -> Action:
605
613
  return Action(kind=EXIT, message=message, exit_code=exit_code)
606
614
 
607
615
 
616
+ def _format_age(seconds: float) -> str:
617
+ """Coarse human age ('38m', '15h', '1.2d') for a pre-dispatch audit note.
618
+
619
+ Deliberately not the CLI's full relative-time renderer — this is one
620
+ field inside an audit `summary`/`details`, not a UI surface, so a small
621
+ self-contained formatter is enough (#2871).
622
+ """
623
+ seconds = max(0.0, seconds)
624
+ if seconds < 3600:
625
+ return f"{int(seconds // 60)}m"
626
+ if seconds < 86400:
627
+ return f"{seconds / 3600:.0f}h"
628
+ return f"{seconds / 86400:.1f}d"
629
+
630
+
631
+ def _refused_policy_is_stale(state: IssueState) -> bool:
632
+ """True when a terminal ``refused_policy`` work row no longer describes
633
+ the issue as it stands now (#2871).
634
+
635
+ A worker refuses pre-dispatch work exactly once, correctly, for the ask
636
+ it was shown — the refusal says nothing about a DIFFERENT ask on the same
637
+ issue number. If the issue was retargeted (title rewritten) after that
638
+ row finished, the branch it would have produced (workers name branches
639
+ ``issue-{N}-{slugify(title)}`` at dispatch time, see
640
+ ``coord.agent``'s ``branch_name`` construction) no longer matches what a
641
+ 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.
645
+ """
646
+ if not state.work_branch or not state.issue_title:
647
+ return False
648
+ from coord.agent import _slugify # noqa: PLC0415
649
+
650
+ expected_branch = f"issue-{state.issue}-{_slugify(state.issue_title)}"
651
+ return state.work_branch != expected_branch
652
+
653
+
608
654
  # ── oracle-loop JIT slice authoring (#1453) ─────────────────────────────────
609
655
 
610
656
 
@@ -2036,8 +2082,58 @@ def decide(
2036
2082
  # deliverable was a doc edit, which CLAUDE.md itself tells a worker
2037
2083
  # to refuse and stop rather than attempt). Unlike an ADVISORY 0-commit
2038
2084
  # exit, retrying changes nothing — the rule this worker cited is not
2039
- # going anywhere — so this is a `_die()` exactly like every other
2040
- # terminal branch here, but the message embeds
2085
+ # going anywhere — UNLESS the issue itself has since changed.
2086
+ #
2087
+ # #2871: a refusal is a verdict on the ASK the worker was shown, not
2088
+ # a standing veto on the issue NUMBER forever. `coord/claim.py`'s
2089
+ # `find_work_claim` never even sees this row (it's terminal, so it
2090
+ # lives in `board.completed`) — the reason a stale refusal blocks
2091
+ # every later drive is entirely HERE: `work_aid`/`work_status` above
2092
+ # are the latest work-like row for this issue regardless of how old
2093
+ # or how differently-scoped it is, so a fresh `coord drive` launch
2094
+ # reads the fossil row as "this run's" state before ever reaching
2095
+ # `_dispatch_work_stage`. If the issue was retargeted (title
2096
+ # rewritten) after this row finished, `_refused_policy_is_stale`
2097
+ # detects it — the old refusal no longer describes what a fresh
2098
+ # dispatch would even be asked to do — and this bypasses the veto
2099
+ # instead of dying again on the SAME prose a fresh worker never
2100
+ # produced this run (CC#916).
2101
+ age_seconds = (
2102
+ time.time() - state.work_finished_at
2103
+ if state.work_finished_at is not None
2104
+ else None
2105
+ )
2106
+ age = _format_age(age_seconds) if age_seconds is not None else "unknown age"
2107
+ if _refused_policy_is_stale(state):
2108
+ bypass_summary = (
2109
+ f"pre-dispatch: bypassing stale refused_policy assignment "
2110
+ f"{state.work_aid} ({age} old) on issue {state.repo}#{state.issue} "
2111
+ f"— retargeted since (branch {state.work_branch!r} no longer "
2112
+ "matches the issue's current title); dispatching fresh work (#2871)"
2113
+ )
2114
+ dispatch = _dispatch_work_stage(
2115
+ state, opts, counters, machine, oracle, gate_checker, verifier
2116
+ )
2117
+ return replace(
2118
+ dispatch,
2119
+ audit_event=(
2120
+ "refused_policy_stale",
2121
+ bypass_summary,
2122
+ {
2123
+ "stale_assignment_id": state.work_aid,
2124
+ "stale_branch": state.work_branch,
2125
+ "age_seconds": age_seconds,
2126
+ },
2127
+ ),
2128
+ )
2129
+ # Still genuinely blocking: `_die()` exactly like every other
2130
+ # terminal branch here, but the message now says explicitly that
2131
+ # THIS run refused pre-dispatch on an OLD row (naming it and its
2132
+ # age) rather than reading as a fresh worker refusing again — and
2133
+ # names the remedy that actually clears it (#2871: retargeting is
2134
+ # what makes the branch above fire on the next drive; `coord
2135
+ # drive-queue remove`+`add` alone does nothing, since the queue row
2136
+ # was never what was blocking). The message still embeds
2041
2137
  # `POLICY_REFUSAL_MARKER`: `coord/drive_queue.py`'s
2042
2138
  # `_reconcile_running` recognises that marker in this run's own
2043
2139
  # `drive_exited` audit summary and parks the queue entry
@@ -2046,12 +2142,16 @@ def decide(
2046
2142
  # principle #1844 already applies pre-dispatch, applied here
2047
2143
  # post-dispatch.
2048
2144
  return _die(
2049
- f"work {state.work_aid} refused on a standing repo-rule "
2050
- "prohibition rather than doing the dispatched work — the worker "
2051
- "did the CORRECT thing (#2234). Needs the coordinator: do the "
2052
- "work directly (or re-scope the issue so its deliverable isn't "
2053
- f"coordinator-only), then `coord drive-queue remove {state.repo} "
2054
- f"{state.issue}` once handled.\n"
2145
+ f"pre-dispatch refusal on assignment {state.work_aid} "
2146
+ f"(refused_policy, {age} old) — work refused on a standing "
2147
+ "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"
2055
2155
  f" inspect: coord log {state.work_aid} --machine "
2056
2156
  f"{state.work_machine or machine}\n"
2057
2157
  f" {POLICY_REFUSAL_MARKER}"
@@ -4680,6 +4780,15 @@ class Driver:
4680
4780
  for warning in action.warnings:
4681
4781
  self.warn(warning)
4682
4782
 
4783
+ # #2871: `decide()` stays a pure function of its inputs — it
4784
+ # cannot write the audit log itself — so an Action that carries
4785
+ # its own audit note (e.g. bypassing a stale pre-dispatch
4786
+ # refusal) gets recorded here, the one place this loop already
4787
+ # writes durable `drive_*` audit rows.
4788
+ if action.audit_event is not None:
4789
+ event_type, summary, details = action.audit_event
4790
+ self._record_drive_audit(event_type, summary, details=details)
4791
+
4683
4792
  # #2443: self-heal — see `_self_heal_drift_message`. Tracked off
4684
4793
  # the Action's own `label`, NOT `fingerprint` above: a WAIT can
4685
4794
  # (and, in the #2286 shape, does) repeat the identical reason
@@ -3107,18 +3107,32 @@ def _reconcile_running(
3107
3107
  # _decide` marks a `refused_policy` work row with `POLICY_REFUSAL_
3108
3108
  # MARKER` (coord.models) rather than `EXIT_DISPATCH_REFUSED`, so this is
3109
3109
  # checked purely off `own_reason` text, independent of `exit_refused`.
3110
- # Unlike #2063 this NEVER self-clears — a policy refusal names a
3111
- # STANDING rule, not a pending verdict — so it deliberately does not get
3112
- # the "queue resumes it automatically" wording Gate-A's park does; see
3113
- # `plan_tick`'s pre-pass below, which recognises this same marker and
3114
- # leaves the entry parked rather than falling through to the CI-park
3115
- # auto-resume. An operator clears it exactly like a `blocked` entry:
3116
- # handle it, then `coord drive-queue remove`.
3110
+ # Unlike #2063 this does not self-clear on its own timer — a policy
3111
+ # refusal names a STANDING rule, not a pending verdict — so it
3112
+ # deliberately does not get the "queue resumes it automatically" wording
3113
+ # Gate-A's park does; see `plan_tick`'s pre-pass below, which recognises
3114
+ # this same marker and leaves the entry parked rather than falling
3115
+ # through to the CI-park auto-resume.
3116
+ #
3117
+ # #2871: the precondition IS an operator action, but it is a RETARGET
3118
+ # (rewrite the issue so its deliverable isn't the coordinator-only thing
3119
+ # that got refused), not queue surgery. Before #2871, `coord.drive.
3120
+ # decide()` re-read the SAME stale `refused_policy` row on every relaunch
3121
+ # regardless of what the issue said by then, so `remove`+`add` looked
3122
+ # like the fix but did nothing — a fresh queue row, same blocking
3123
+ # assignment. `decide()` now compares that row's branch against the
3124
+ # issue's CURRENT title-derived slug (`_refused_policy_is_stale`) and
3125
+ # bypasses a stale refusal instead of dying on it again, so `remove`+
3126
+ # `add` (or any later relaunch) genuinely works — but only once the
3127
+ # retarget has actually happened.
3117
3128
  if own_reason and is_policy_refusal_reason(own_reason):
3118
3129
  reason = (
3119
3130
  f"{own_reason} — parking without spending an attempt (#2234); "
3120
- "needs the coordinator, not a relaunch — `coord drive-queue "
3121
- "remove` once handled"
3131
+ "needs the coordinator, not a relaunch — retarget the issue "
3132
+ "(rewrite its title so the deliverable isn't coordinator-only), "
3133
+ "then `coord drive-queue remove`+`add` (or just relaunch "
3134
+ "`coord drive`) — it now detects the retarget and dispatches "
3135
+ "fresh work automatically (#2871)"
3122
3136
  )
3123
3137
  return (
3124
3138
  Reconcile(
@@ -111,6 +111,13 @@ class IssueState:
111
111
  work_acceptance_state: str = ""
112
112
  work_acceptance_reason: str = ""
113
113
  work_acceptance_sha: str = ""
114
+ # #2871: when the work row went terminal — ``None`` for a row still
115
+ # running/pending or predating this column. Paired with `issue_title`
116
+ # below so `decide()` can tell a genuinely-still-blocking
117
+ # `refused_policy` row apart from one whose issue was retargeted
118
+ # (title rewritten) after it finished, and can name the row's age in
119
+ # whatever it reports instead of silently re-quoting stale prose.
120
+ work_finished_at: float | None = None
114
121
 
115
122
  review_aid: str = ""
116
123
  review_status: str = ""
@@ -181,6 +188,13 @@ class IssueState:
181
188
  # `oracle:exempt`/`manifest.exempt` opt-out for the trust gate
182
189
  # (`AcceptanceGateChecker.is_issue_exempt`) without a second board scan.
183
190
  issue_labels: tuple[str, ...] = ()
191
+ # #2871: this issue's CURRENT GitHub title — resolved from the same
192
+ # `/board` `issues` row `issue_labels` is, no extra I/O. Compared
193
+ # against a terminal `refused_policy` work row's branch (workers name
194
+ # branches `issue-{N}-{slugify(title)}` at dispatch time) to detect a
195
+ # retarget: an issue whose deliverable was rewritten after the worker
196
+ # refused no longer matches the branch that refusal was about.
197
+ issue_title: str = ""
184
198
 
185
199
  # The JIT slice's own `type="test-author"` assignment (#1171: keyed on
186
200
  # `for_issue_number == issue`, NOT `issue_number` — that field is the
@@ -355,6 +369,13 @@ def project(payload: dict, repo: str, issue: int, config: Any) -> IssueState:
355
369
  return default if value is None else value
356
370
 
357
371
  exit_code = (work or {}).get("exit_code")
372
+ finished_at_raw = (work or {}).get("finished_at")
373
+ try:
374
+ work_finished_at = (
375
+ float(finished_at_raw) if finished_at_raw is not None else None
376
+ )
377
+ except (TypeError, ValueError):
378
+ work_finished_at = None
358
379
 
359
380
  # #1453: oracle-loop JIT slice resolution — both reads are over data
360
381
  # already published on /board, no extra I/O (see IssueState's docstring
@@ -368,10 +389,12 @@ def project(payload: dict, repo: str, issue: int, config: Any) -> IssueState:
368
389
  # instead of discovering a mismatch only when #1711's dispatch-time
369
390
  # guard refuses it. No extra I/O: `issues` is already part of *payload*.
370
391
  issue_labels: list[str] = []
392
+ issue_title = ""
371
393
  for oi in payload.get("issues") or []:
372
394
  if oi.get("repo_name") == repo and oi.get("number") == issue:
373
395
  milestone_number = oi.get("milestone_number")
374
396
  issue_labels = list(oi.get("labels") or [])
397
+ issue_title = oi.get("title") or ""
375
398
  break
376
399
 
377
400
  milestone_tracking_issue = None
@@ -451,6 +474,7 @@ def project(payload: dict, repo: str, issue: int, config: Any) -> IssueState:
451
474
  work_acceptance_state=g(work, "acceptance_state"),
452
475
  work_acceptance_reason=g(work, "acceptance_reason"),
453
476
  work_acceptance_sha=g(work, "acceptance_sha"),
477
+ work_finished_at=work_finished_at,
454
478
  review_aid=g(review, "assignment_id"),
455
479
  review_status=g(review, "status"),
456
480
  review_verdict=g(review, "review_verdict"),
@@ -472,6 +496,7 @@ def project(payload: dict, repo: str, issue: int, config: Any) -> IssueState:
472
496
  milestone_number=milestone_number,
473
497
  milestone_tracking_issue=milestone_tracking_issue,
474
498
  issue_labels=tuple(issue_labels),
499
+ issue_title=issue_title,
475
500
  # #2024: the per-issue Test-stage policy, off the labels already read
476
501
  # above (no extra I/O). `test_mode_from_labels` is the same function
477
502
  # `coord.state._get_issue_test_mode_local` uses, so the driver and the
@@ -1840,6 +1840,71 @@ def test_refused_policy_work_is_terminal_and_carries_the_2234_marker():
1840
1840
  assert "needs the coordinator" in action.message.lower()
1841
1841
 
1842
1842
 
1843
+ def test_refused_policy_still_blocking_names_the_assignment_and_age():
1844
+ """#2871: even the still-blocking case must stop reading as though a
1845
+ FRESH worker just refused again — the message names the pre-dispatch
1846
+ assignment it refused on and the row's age, not just generic prose."""
1847
+ action = step(
1848
+ state(
1849
+ work_aid="w1",
1850
+ work_status="refused_policy",
1851
+ work_finished_at=1000.0,
1852
+ )
1853
+ )
1854
+ assert action.is_exit
1855
+ assert "pre-dispatch refusal on assignment w1" in action.message
1856
+ assert "refused_policy" in action.message
1857
+ assert POLICY_REFUSAL_MARKER in action.message
1858
+
1859
+
1860
+ def test_refused_policy_is_bypassed_when_the_issue_was_retargeted():
1861
+ """#2871 / CC#916: a `refused_policy` row is a verdict on the ASK the
1862
+ worker was shown, not a standing veto on the issue number forever.
1863
+ `coord.claim.find_work_claim` never even sees this row (terminal rows
1864
+ live in `board.completed`) — the reason a stale refusal vetoed every
1865
+ later drive was entirely in `decide()` reading the fossil row as "this
1866
+ run's" state before ever reaching dispatch. If the issue's title was
1867
+ rewritten after the row finished, the branch it would have produced no
1868
+ longer matches — that mismatch means the ask changed, so this must
1869
+ dispatch fresh work instead of dying on the old refusal again."""
1870
+ s = state(
1871
+ work_aid="w1",
1872
+ work_status="refused_policy",
1873
+ work_branch="issue-1392-old-pre-retarget-title",
1874
+ issue_title="A completely different retargeted deliverable",
1875
+ work_finished_at=1000.0,
1876
+ )
1877
+ action = step(s)
1878
+ assert action.kind == RUN
1879
+ assert action.command[0] == "assign"
1880
+ assert action.audit_event is not None
1881
+ event_type, summary, details = action.audit_event
1882
+ assert event_type == "refused_policy_stale"
1883
+ assert "w1" in summary
1884
+ assert details["stale_assignment_id"] == "w1"
1885
+ assert details["stale_branch"] == "issue-1392-old-pre-retarget-title"
1886
+
1887
+
1888
+ def test_refused_policy_is_not_bypassed_when_the_title_is_unchanged():
1889
+ """The inverse of the retarget test above: the branch still matches
1890
+ `issue-{N}-{slugify(current title)}`, so nothing was retargeted — this
1891
+ must still die rather than silently re-dispatch over a worker that
1892
+ correctly refused."""
1893
+ from coord.agent import _slugify # noqa: PLC0415
1894
+
1895
+ title = "Exactly the title this branch was named from"
1896
+ s = state(
1897
+ work_aid="w1",
1898
+ work_status="refused_policy",
1899
+ work_branch=f"issue-{ISSUE}-{_slugify(title)}",
1900
+ issue_title=title,
1901
+ )
1902
+ action = step(s)
1903
+ assert action.is_exit
1904
+ assert POLICY_REFUSAL_MARKER in action.message
1905
+ assert action.audit_event is None
1906
+
1907
+
1843
1908
  def test_an_unknown_terminal_status_refuses_to_guess():
1844
1909
  """No terminal status may fall through to a bare wait (PR #1386)."""
1845
1910
  action = step(state(work_aid="w1", work_status="wat"))
@@ -2764,6 +2764,23 @@ def test_a_policy_refusal_parks_without_spending_an_attempt():
2764
2764
  assert POLICY_REFUSAL_REASON in reconcile.updates["last_reason"]
2765
2765
 
2766
2766
 
2767
+ def test_a_policy_refusal_park_reason_names_a_remedy_that_actually_clears_it():
2768
+ """#2871: before this fix, the printed remedy (`coord drive-queue
2769
+ remove` once handled) was misleading — `coord.drive.decide()` re-read
2770
+ the SAME stale `refused_policy` row on every relaunch regardless of
2771
+ what the issue said by then, so `remove`+`add` looked like the fix but
2772
+ did nothing. The park reason must name the precondition that actually
2773
+ matters (retargeting the issue) rather than pure queue surgery."""
2774
+ entries = [entry(2195, position=3, state=STATE_RUNNING, attempts=0)]
2775
+ plan = plan_tick(
2776
+ entries, board(), capacity=1,
2777
+ exit_reasons={entry_key(REPO, 2195): POLICY_REFUSAL_REASON},
2778
+ )
2779
+ reason = plan.reconciles[0].reason
2780
+ assert "retarget the issue" in reason
2781
+ assert "dispatches fresh work automatically" in reason
2782
+
2783
+
2767
2784
  def test_a_policy_refusal_parks_even_on_a_fresh_entrys_first_tick():
2768
2785
  entries = [entry(2195, state=STATE_RUNNING, attempts=0)]
2769
2786
  plan = plan_tick(
@@ -142,6 +142,44 @@ def test_project_resolves_issue_labels_from_the_issues_list():
142
142
  assert state.issue_labels == ("oracle:exempt", "bug")
143
143
 
144
144
 
145
+ def test_project_resolves_issue_title_from_the_issues_list():
146
+ """#2871: `decide()`'s retarget-detection compares a terminal
147
+ `refused_policy` row's branch against THIS — the issue's current
148
+ title — no extra I/O, same `/board` `issues` row `issue_labels` reads."""
149
+ payload = {
150
+ "assignments": [],
151
+ "issues": [
152
+ {"repo_name": REPO, "number": 1392, "title": "Rewritten deliverable"},
153
+ ],
154
+ }
155
+ state = project(payload, REPO, 1392, make_config())
156
+ assert state.issue_title == "Rewritten deliverable"
157
+
158
+
159
+ def test_project_defaults_issue_title_empty_with_no_matching_issue():
160
+ payload = {"assignments": []}
161
+ state = project(payload, REPO, 1392, make_config())
162
+ assert state.issue_title == ""
163
+
164
+
165
+ def test_project_reads_work_finished_at_from_the_work_row():
166
+ """#2871: paired with `issue_title` so `decide()` can name a
167
+ pre-dispatch refusal's age instead of leaving it unstated."""
168
+ payload = {
169
+ "assignments": [
170
+ row(assignment_id="w1", status="refused_policy", finished_at=12345.0)
171
+ ]
172
+ }
173
+ state = project(payload, REPO, 1392, make_config())
174
+ assert state.work_finished_at == 12345.0
175
+
176
+
177
+ def test_project_defaults_work_finished_at_none_when_absent():
178
+ payload = {"assignments": [row(assignment_id="w1")]}
179
+ state = project(payload, REPO, 1392, make_config())
180
+ assert state.work_finished_at is None
181
+
182
+
145
183
  def test_project_refuses_an_unconfigured_repo():
146
184
  with pytest.raises(DriveStateError, match="not in coordinator.yml"):
147
185
  project({"assignments": []}, "nope", 1, make_config())