code-coordinator 0.5.211__tar.gz → 0.5.213__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 (804) hide show
  1. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/drive_queue.py +165 -0
  5. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/ORACLE_LOOP.md +10 -2
  6. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_drive_queue.py +143 -0
  7. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_thin_client_board_audit.py +16 -0
  8. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/dialogs.rs +44 -7
  9. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/pipeline.rs +630 -0
  10. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/tests.rs +435 -1
  11. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/commands.rs +312 -4
  12. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.claude/commands/board.md +0 -0
  13. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.claude/commands/complete-session.md +0 -0
  14. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.claude/commands/coordinator.md +0 -0
  15. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.githooks/_lib.sh +0 -0
  16. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.githooks/post-checkout +0 -0
  17. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.githooks/post-commit +0 -0
  18. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.githooks/post-merge +0 -0
  19. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  20. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.github/coord-ci-acceptance.yml +0 -0
  21. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.github/workflows/auto-release.yml +0 -0
  22. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.github/workflows/cargo-test.yml +0 -0
  23. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.github/workflows/publish.yml +0 -0
  24. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.github/workflows/release-tui.yml +0 -0
  25. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.github/workflows/test.yml +0 -0
  26. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/.gitignore +0 -0
  27. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/CLAUDE.md +0 -0
  28. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/GOAL.md +0 -0
  29. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/LICENSE +0 -0
  30. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/MANIFEST.in +0 -0
  31. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/README.md +0 -0
  32. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/SOURCES.txt +0 -0
  33. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/dependency_links.txt +0 -0
  34. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/entry_points.txt +0 -0
  35. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/requires.txt +0 -0
  36. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/scm_file_list.json +0 -0
  37. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/code_coordinator.egg-info/top_level.txt +0 -0
  38. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/__init__.py +0 -0
  39. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/_board_mapping.py +0 -0
  40. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/acceptance.py +0 -0
  41. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/acceptance_drivers.py +0 -0
  42. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/agent.py +0 -0
  43. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/agent_app.py +0 -0
  44. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/agent_update.py +0 -0
  45. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/agents/opencode/.gitignore +0 -0
  46. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/agents/opencode/agents/work.md +0 -0
  47. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/agents/opencode/routing.jsonc +0 -0
  48. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/audit.py +0 -0
  49. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/auto_loop.py +0 -0
  50. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/block_log.py +0 -0
  51. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/board_bool_guard.py +0 -0
  52. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/board_service.py +0 -0
  53. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/board_wire.py +0 -0
  54. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/brain.py +0 -0
  55. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/branch_model.py +0 -0
  56. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/bug_intake.py +0 -0
  57. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/cargo_cache.py +0 -0
  58. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/ci_fix.py +0 -0
  59. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/ci_github.py +0 -0
  60. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/ci_gitlab.py +0 -0
  61. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/ci_store.py +0 -0
  62. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/claim.py +0 -0
  63. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/cli.py +0 -0
  64. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/client.py +0 -0
  65. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/__init__.py +0 -0
  66. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/_common.py +0 -0
  67. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/acceptance.py +0 -0
  68. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/agent_ops.py +0 -0
  69. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/audit.py +0 -0
  70. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/chat.py +0 -0
  71. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/dispatch.py +0 -0
  72. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/dispatch_workers.py +0 -0
  73. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/drive.py +0 -0
  74. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/gate_a.py +0 -0
  75. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/gates.py +0 -0
  76. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/issues.py +0 -0
  77. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/lifecycle.py +0 -0
  78. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/merge.py +0 -0
  79. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/milestone.py +0 -0
  80. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/plan_followup.py +0 -0
  81. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/plans.py +0 -0
  82. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/portal.py +0 -0
  83. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/release.py +0 -0
  84. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/repo.py +0 -0
  85. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/report.py +0 -0
  86. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/review.py +0 -0
  87. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/scorecard.py +0 -0
  88. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/sessions.py +0 -0
  89. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/setup.py +0 -0
  90. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/status.py +0 -0
  91. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/terminal.py +0 -0
  92. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/test_gate.py +0 -0
  93. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/commands/tui.py +0 -0
  94. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/comments.py +0 -0
  95. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/config.py +0 -0
  96. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/config_reload.py +0 -0
  97. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/confirm_test.py +0 -0
  98. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/conflict_fix.py +0 -0
  99. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dao.py +0 -0
  100. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dashboard/__init__.py +0 -0
  101. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dashboard/fixture.py +0 -0
  102. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dashboard/index.html +0 -0
  103. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dashboard/server.py +0 -0
  104. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dashboard/terminal.py +0 -0
  105. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/db.py +0 -0
  106. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dead_end.py +0 -0
  107. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/README.md +0 -0
  108. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-agent.service +0 -0
  109. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-db-backup.service +0 -0
  110. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-db-backup.sh +0 -0
  111. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-db-backup.timer +0 -0
  112. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-drive-queue.service +0 -0
  113. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-drive-queue.timer +0 -0
  114. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-notify.service +0 -0
  115. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-notify.timer +0 -0
  116. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-release-propagate.service +0 -0
  117. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-release-propagate.timer +0 -0
  118. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-release-window.service +0 -0
  119. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-release-window.timer +0 -0
  120. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-serve.service +0 -0
  121. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-web-dist-build.service +0 -0
  122. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-web-dist-build.timer +0 -0
  123. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy/coord-web.service +0 -0
  124. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy_manifest.py +0 -0
  125. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deploy_units.py +0 -0
  126. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/deps.py +0 -0
  127. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/diagnose.py +0 -0
  128. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dispatch.py +0 -0
  129. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/dist_name.py +0 -0
  130. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/drive.py +0 -0
  131. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/drive_queue.py +0 -0
  132. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/drive_state.py +0 -0
  133. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/events.py +0 -0
  134. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/failure_class.py +0 -0
  135. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/filelock.py +0 -0
  136. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/fleet_config_health.py +0 -0
  137. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/forge_availability.py +0 -0
  138. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/freshness.py +0 -0
  139. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/gate_a.py +0 -0
  140. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/gate_b.py +0 -0
  141. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/gate_snapshot.py +0 -0
  142. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/gates.py +0 -0
  143. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/github_ops.py +0 -0
  144. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/goal.py +0 -0
  145. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/graph_health.py +0 -0
  146. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/__init__.py +0 -0
  147. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/aggregate.py +0 -0
  148. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/__init__.py +0 -0
  149. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/agent_install.py +0 -0
  150. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/cargo_targets.py +0 -0
  151. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/claude_binary.py +0 -0
  152. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/coord_web_ci_pin.py +0 -0
  153. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/deploy_lane_facts.py +0 -0
  154. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/disk.py +0 -0
  155. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/fleet_board.py +0 -0
  156. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  157. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/fleet_phantom.py +0 -0
  158. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/fleet_unit_drift.py +0 -0
  159. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/graph.py +0 -0
  160. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/graphify_cli.py +0 -0
  161. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/index_lock.py +0 -0
  162. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/plan_usage.py +0 -0
  163. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/repo_state.py +0 -0
  164. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/spawned_coord.py +0 -0
  165. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/timer_active.py +0 -0
  166. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/toolchain.py +0 -0
  167. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/unit_drift.py +0 -0
  168. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/unit_enablement.py +0 -0
  169. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/checks/worktrees.py +0 -0
  170. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/cli.py +0 -0
  171. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/context.py +0 -0
  172. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/fleet_snapshot.py +0 -0
  173. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/models.py +0 -0
  174. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/pypi.py +0 -0
  175. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/registry.py +0 -0
  176. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/render.py +0 -0
  177. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/health/units.py +0 -0
  178. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/hooks.py +0 -0
  179. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/housekeeping.py +0 -0
  180. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/interactive.py +0 -0
  181. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/issue_store.py +0 -0
  182. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/liveness_auditor.py +0 -0
  183. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/machine_pause.py +0 -0
  184. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/merge_queue.py +0 -0
  185. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/milestone_chat.py +0 -0
  186. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/milestone_dispatch.py +0 -0
  187. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/milestone_gate.py +0 -0
  188. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/milestone_order.py +0 -0
  189. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/mock_author.py +0 -0
  190. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/models.py +0 -0
  191. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/network.py +0 -0
  192. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/new_issue_chat.py +0 -0
  193. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/__init__.py +0 -0
  194. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/baseline.py +0 -0
  195. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/cli.py +0 -0
  196. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/collect.py +0 -0
  197. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/digest.py +0 -0
  198. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/models.py +0 -0
  199. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/predicate.py +0 -0
  200. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/service.py +0 -0
  201. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/store.py +0 -0
  202. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notifier/transport.py +0 -0
  203. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/notify.py +0 -0
  204. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/openapi.py +0 -0
  205. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/overlap_fence.py +0 -0
  206. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/overlap_predict.py +0 -0
  207. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/parentage.py +0 -0
  208. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/parentage_github.py +0 -0
  209. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/pipeline.py +0 -0
  210. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/plan_parser.py +0 -0
  211. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/plans.py +0 -0
  212. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/platform_paths.py +0 -0
  213. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/portal_bridge.py +0 -0
  214. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/portal_store.py +0 -0
  215. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/portal_sync.py +0 -0
  216. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/pr_body_lint.py +0 -0
  217. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/prereqs.py +0 -0
  218. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/progress.py +0 -0
  219. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/providers/__init__.py +0 -0
  220. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/providers/base.py +0 -0
  221. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/providers/claude.py +0 -0
  222. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/providers/claude_pty.py +0 -0
  223. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/providers/opencode.py +0 -0
  224. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/queue_diagnose.py +0 -0
  225. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/reconcile.py +0 -0
  226. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/reconcile_tick.py +0 -0
  227. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/refine_chat.py +0 -0
  228. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/release_cordon.py +0 -0
  229. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/release_propagate.py +0 -0
  230. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/release_verify.py +0 -0
  231. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/release_window.py +0 -0
  232. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/repo_edit.py +0 -0
  233. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/repo_onboard.py +0 -0
  234. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/reports.py +0 -0
  235. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/revalidate.py +0 -0
  236. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/review.py +0 -0
  237. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/scorecard.py +0 -0
  238. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/self_health.py +0 -0
  239. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/serve_app.py +0 -0
  240. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  241. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  242. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  243. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  244. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  245. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/portal-followup/SKILL.md +0 -0
  246. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  247. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  248. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/skills/update-issue/SKILL.md +0 -0
  249. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/smoke.py +0 -0
  250. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/spend_ceiling.py +0 -0
  251. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/split_work.py +0 -0
  252. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/stage_projection.py +0 -0
  253. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/state.py +0 -0
  254. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/test_author.py +0 -0
  255. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/test_chat.py +0 -0
  256. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/test_orchestrator.py +0 -0
  257. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/test_report.py +0 -0
  258. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/tui_release.py +0 -0
  259. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/usage.py +0 -0
  260. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/usage_limits.py +0 -0
  261. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/usage_rollup.py +0 -0
  262. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coord/worker_events.py +0 -0
  263. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/coordinator.example.yml +0 -0
  264. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-agent.service +0 -0
  265. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-db-backup.service +0 -0
  266. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-db-backup.sh +0 -0
  267. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-db-backup.timer +0 -0
  268. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-drive-queue.service +0 -0
  269. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-drive-queue.timer +0 -0
  270. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-notify.service +0 -0
  271. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-notify.timer +0 -0
  272. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-release-propagate.service +0 -0
  273. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-release-propagate.timer +0 -0
  274. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-release-window.service +0 -0
  275. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-release-window.timer +0 -0
  276. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-serve.service +0 -0
  277. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-web-dist-build.service +0 -0
  278. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-web-dist-build.sh +0 -0
  279. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-web-dist-build.timer +0 -0
  280. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-web-rollback.sh +0 -0
  281. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/coord-web.service +0 -0
  282. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/deploy/node-shim.sh +0 -0
  283. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  284. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/ADR_COORD_WEB_CI.md +0 -0
  285. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/ADR_COORD_WEB_DIST.md +0 -0
  286. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/AGENT_OPERATIONS.md +0 -0
  287. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/ARCHITECTURE.md +0 -0
  288. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/ARCH_SECURITY_GATES.md +0 -0
  289. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/COCKPIT.md +0 -0
  290. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/CONTROL_CENTER.md +0 -0
  291. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/COST_DISCIPLINE.md +0 -0
  292. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/CROSS_PLATFORM.md +0 -0
  293. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/CUSTOMER_PORTAL.md +0 -0
  294. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/DRIVE_QUEUE.md +0 -0
  295. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/EPHEMERAL_WORKERS.md +0 -0
  296. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/FORGE_MIGRATION.md +0 -0
  297. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/GRAPHIFY_SETUP.md +0 -0
  298. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/ISSUE_GUIDANCE.md +0 -0
  299. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/MAC_MINI.md +0 -0
  300. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  301. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/NOTIFIER.md +0 -0
  302. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/OPENCODE_VERIFICATION.md +0 -0
  303. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/OPERATING_GOTCHAS.md +0 -0
  304. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/PHONE_WEBAPP.md +0 -0
  305. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/PIPELINE_V2.md +0 -0
  306. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/PLATFORM_EVOLUTION.md +0 -0
  307. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/SECOND_BACKEND.md +0 -0
  308. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/STORE_SERVICE.md +0 -0
  309. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  310. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/WEB_CONTROL_CENTER.md +0 -0
  311. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/WSL_WINDOWS_WORKER.md +0 -0
  312. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/mocks/web/README.md +0 -0
  313. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/mocks/web/_tokens.css +0 -0
  314. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/mocks/web/issue-detail.html +0 -0
  315. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/mocks/web/pipeline-narrow.html +0 -0
  316. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/docs/mocks/web/pipeline-wide.html +0 -0
  317. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/graphify-out/.gitignore +0 -0
  318. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/install-agent.sh +0 -0
  319. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/pyproject.toml +0 -0
  320. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/audit_review_verdict_overrides.py +0 -0
  321. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  322. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/build-worker-image.sh +0 -0
  323. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/coordinator-machine.py +0 -0
  324. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/epic-down.sh +0 -0
  325. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/epic-up.sh +0 -0
  326. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/preflight.sh +0 -0
  327. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/provision-worker.sh +0 -0
  328. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  329. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  330. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/azure-workers/verify-github-token.sh +0 -0
  331. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/check_gh_argv_containment.py +0 -0
  332. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/codegen.py +0 -0
  333. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/coord-test-runner.sh +0 -0
  334. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/drive-batch.sh +0 -0
  335. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/gen_board_fixture.py +0 -0
  336. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/gen_mock_index.py +0 -0
  337. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/next_release_tag.py +0 -0
  338. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/run_tests_in_populated_home.sh +0 -0
  339. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/run_tests_without_gh.sh +0 -0
  340. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/smoke_437_interactive.py +0 -0
  341. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/verify_878_review_capture.py +0 -0
  342. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/verify_release_published.py +0 -0
  343. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/scripts/verify_release_wheel.py +0 -0
  344. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/setup.cfg +0 -0
  345. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/SMOKE_SET.md +0 -0
  346. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/__init__.py +0 -0
  347. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  348. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-33/contract.md +0 -0
  349. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-33/manifest.yml +0 -0
  350. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  351. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  352. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  353. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  354. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-37/conftest.py +0 -0
  355. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-37/contract.md +0 -0
  356. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-37/manifest.yml +0 -0
  357. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  358. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  359. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/contract.md +0 -0
  360. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/manifest.yml +0 -0
  361. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  362. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  363. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  364. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  365. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  366. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  367. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  368. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  369. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  370. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  371. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-51/contract.md +0 -0
  372. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  373. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  374. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-51/manifest.yml +0 -0
  375. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  376. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-51/tsconfig.json +0 -0
  377. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  378. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  379. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  380. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/contract.md +0 -0
  381. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  382. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/manifest.yml +0 -0
  383. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  384. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  385. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  386. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  387. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  388. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  389. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  390. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  391. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  392. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  393. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  394. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-67/contract.md +0 -0
  395. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
  396. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
  397. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
  398. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
  399. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
  400. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  401. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/conftest.py +0 -0
  402. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/board-pipeline-basic.json +0 -0
  403. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  404. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  405. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  406. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  407. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/playwright/all_pass.json +0 -0
  408. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  409. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/playwright/mixed_fail.json +0 -0
  410. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  411. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  412. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/playwright/skip.json +0 -0
  413. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/playwright/truncated.json +0 -0
  414. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  415. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  416. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  417. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  418. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  419. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  420. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  421. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  422. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_acceptance.py +0 -0
  423. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_acceptance_drivers.py +0 -0
  424. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent.py +0 -0
  425. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_api_error.py +0 -0
  426. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_app.py +0 -0
  427. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_branch_base.py +0 -0
  428. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_branch_capture.py +0 -0
  429. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_config_free_1712.py +0 -0
  430. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_deploy_units_endpoint.py +0 -0
  431. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_dirty_worktree.py +0 -0
  432. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  433. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_graph_self_heal.py +0 -0
  434. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_health_h3.py +0 -0
  435. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_idle_restart.py +0 -0
  436. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_push_failure.py +0 -0
  437. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_reap.py +0 -0
  438. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_repos_and_pull.py +0 -0
  439. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_restart_services_endpoint.py +0 -0
  440. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_skills_self_heal.py +0 -0
  441. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_startup_diagnostics.py +0 -0
  442. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_update.py +0 -0
  443. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_update_bluegreen.py +0 -0
  444. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_usage_limit.py +0 -0
  445. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_agent_zero_commit.py +0 -0
  446. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_ambient_home_isolation.py +0 -0
  447. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_approve_reject_plan.py +0 -0
  448. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_approve_usage_gate.py +0 -0
  449. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_assignment_already_recorded_daemon.py +0 -0
  450. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_audit_log.py +0 -0
  451. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_audit_outcome.py +0 -0
  452. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_audit_query.py +0 -0
  453. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_auto_loop.py +0 -0
  454. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_auto_release_publish_2035.py +0 -0
  455. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_base_checkout_restore.py +0 -0
  456. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_block_log.py +0 -0
  457. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_board_cap_762.py +0 -0
  458. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_board_fixture.py +0 -0
  459. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_board_read_path.py +0 -0
  460. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_board_service.py +0 -0
  461. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_board_state.py +0 -0
  462. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_board_wire.py +0 -0
  463. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_brain.py +0 -0
  464. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_branch_model.py +0 -0
  465. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_bug_intake.py +0 -0
  466. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_build_worker_image_env_update.py +0 -0
  467. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cargo_cache.py +0 -0
  468. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_check_gh_argv_containment.py +0 -0
  469. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_ci_acceptance_gate_1950.py +0 -0
  470. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_ci_fix.py +0 -0
  471. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_ci_gitlab.py +0 -0
  472. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_ci_parity_2091.py +0 -0
  473. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_ci_store.py +0 -0
  474. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_claim.py +0 -0
  475. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_acceptance.py +0 -0
  476. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_assign.py +0 -0
  477. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  478. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_assign_interactive_remote.py +0 -0
  479. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_assign_provider.py +0 -0
  480. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  481. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_audit.py +0 -0
  482. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_chat_continue.py +0 -0
  483. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_decide.py +0 -0
  484. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_diagnose_config_provenance.py +0 -0
  485. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_diagnose_forge_availability.py +0 -0
  486. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_diagnose_graph.py +0 -0
  487. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_diagnose_self.py +0 -0
  488. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_doctor.py +0 -0
  489. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_doctor_config_free_1801.py +0 -0
  490. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  491. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_drive.py +0 -0
  492. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_escalate.py +0 -0
  493. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_fix_headless_review.py +0 -0
  494. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_gate_a.py +0 -0
  495. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_install_drift.py +0 -0
  496. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_install_skills.py +0 -0
  497. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_issue_create_label.py +0 -0
  498. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_issue_reopen.py +0 -0
  499. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_merge.py +0 -0
  500. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_assign.py +0 -0
  501. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_capture.py +0 -0
  502. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_chat_add_child.py +0 -0
  503. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_dispatch.py +0 -0
  504. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_gate_b.py +0 -0
  505. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_gate_c.py +0 -0
  506. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_order.py +0 -0
  507. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  508. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_milestone_ship.py +0 -0
  509. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_network.py +0 -0
  510. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_new_issue_chat.py +0 -0
  511. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_plans.py +0 -0
  512. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_portal.py +0 -0
  513. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_pull_artifact.py +0 -0
  514. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_queue.py +0 -0
  515. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_reattach_sessions.py +0 -0
  516. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_refine_board.py +0 -0
  517. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_release_preflight.py +0 -0
  518. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_release_propagate.py +0 -0
  519. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_release_window.py +0 -0
  520. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_repo_2220.py +0 -0
  521. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_scorecard.py +0 -0
  522. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_set_review_findings.py +0 -0
  523. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_status_advisory_terminal.py +0 -0
  524. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_status_merge_queue.py +0 -0
  525. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_status_provider.py +0 -0
  526. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_status_review_finalizing.py +0 -0
  527. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_status_test_failed_tag.py +0 -0
  528. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_status_usage_limit.py +0 -0
  529. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_sync_comments_873.py +0 -0
  530. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_test_plan.py +0 -0
  531. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_track.py +0 -0
  532. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_tui_update.py +0 -0
  533. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cli_wait.py +0 -0
  534. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_client_base_install.py +0 -0
  535. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_comments.py +0 -0
  536. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_completion_summary.py +0 -0
  537. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_config.py +0 -0
  538. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_config_acceptance.py +0 -0
  539. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_config_audit.py +0 -0
  540. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_config_pricing.py +0 -0
  541. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  542. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_config_usage_gate.py +0 -0
  543. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_confirm_test.py +0 -0
  544. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_conflict_fix.py +0 -0
  545. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_conflict_fix_semantic.py +0 -0
  546. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_coord_test.py +0 -0
  547. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_coord_test_runner_baseline.py +0 -0
  548. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_coord_test_runner_populated_home.py +0 -0
  549. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_coord_test_runner_routing.py +0 -0
  550. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_coord_test_runner_toolchain.py +0 -0
  551. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_coord_web_sse_restart_live.py +0 -0
  552. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_coordinator_machine.py +0 -0
  553. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_cross_platform_imports.py +0 -0
  554. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dashboard.py +0 -0
  555. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dashboard_fixture.py +0 -0
  556. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dashboard_terminal.py +0 -0
  557. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dashboard_terminal_live.py +0 -0
  558. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_db.py +0 -0
  559. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dead_end.py +0 -0
  560. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deploy_coord_db_backup.py +0 -0
  561. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deploy_coord_web_dist.py +0 -0
  562. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deploy_coord_web_rollback.py +0 -0
  563. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deploy_drive_queue_unit.py +0 -0
  564. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deploy_manifest.py +0 -0
  565. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deploy_units_lane.py +0 -0
  566. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deploy_web_unit.py +0 -0
  567. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_deps.py +0 -0
  568. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_diagnose.py +0 -0
  569. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dispatch.py +0 -0
  570. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dispatch_target_validation.py +0 -0
  571. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_dist_name.py +0 -0
  572. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_done_housekeeping.py +0 -0
  573. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_drive.py +0 -0
  574. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_drive_queue.py +0 -0
  575. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_drive_state.py +0 -0
  576. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_drive_tmux.py +0 -0
  577. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_epic_up_capability_detection.py +0 -0
  578. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  579. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_epic_up_image_provenance.py +0 -0
  580. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_errors.py +0 -0
  581. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_events.py +0 -0
  582. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_failure_class.py +0 -0
  583. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_filelock.py +0 -0
  584. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  585. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_fix_of_force_override.py +0 -0
  586. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_fleet_config_health.py +0 -0
  587. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_fleet_health_probes.py +0 -0
  588. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_fleet_health_snapshot.py +0 -0
  589. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_forge_availability.py +0 -0
  590. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_freshness.py +0 -0
  591. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_gate_a.py +0 -0
  592. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_gate_b.py +0 -0
  593. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_gate_snapshot_staleness.py +0 -0
  594. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_gates.py +0 -0
  595. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  596. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_gen_mock_index.py +0 -0
  597. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_generated_types_fixture.py +0 -0
  598. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_github_ops.py +0 -0
  599. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_goal.py +0 -0
  600. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_graph_health.py +0 -0
  601. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_graph_selfheal_absent_2237.py +0 -0
  602. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_handoff.py +0 -0
  603. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_checks.py +0 -0
  604. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_cli.py +0 -0
  605. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_cli_graph.py +0 -0
  606. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_config.py +0 -0
  607. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_context.py +0 -0
  608. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_coord_web_ci_pin.py +0 -0
  609. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_deploy_lane_facts.py +0 -0
  610. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_incident_regression.py +0 -0
  611. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_pypi.py +0 -0
  612. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_registry.py +0 -0
  613. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_timer_active.py +0 -0
  614. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_toolchain.py +0 -0
  615. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_unit_drift.py +0 -0
  616. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_health_unit_enablement.py +0 -0
  617. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_hooks.py +0 -0
  618. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_human_attended_437.py +0 -0
  619. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_init.py +0 -0
  620. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_integration.py +0 -0
  621. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_interactive_briefing_echo.py +0 -0
  622. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_interactive_prefill_state.py +0 -0
  623. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_interactive_session_relaunch.py +0 -0
  624. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_interactive_test_verdict_backstop.py +0 -0
  625. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_interactive_token_attribution.py +0 -0
  626. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_interactive_worktree.py +0 -0
  627. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_issue_store_seam.py +0 -0
  628. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_liveness_auditor.py +0 -0
  629. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_liveness_notify.py +0 -0
  630. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_machine_pause.py +0 -0
  631. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_merge_queue.py +0 -0
  632. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_merge_verify.py +0 -0
  633. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_milestone_chat.py +0 -0
  634. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_milestone_dispatch.py +0 -0
  635. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_milestone_gate.py +0 -0
  636. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_milestone_order.py +0 -0
  637. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_milestone_seam.py +0 -0
  638. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_mock_author.py +0 -0
  639. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_model_tiering.py +0 -0
  640. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_models.py +0 -0
  641. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_models_config_labels.py +0 -0
  642. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_needs_attention.py +0 -0
  643. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_network.py +0 -0
  644. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_new_issue_chat.py +0 -0
  645. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_next_release_tag.py +0 -0
  646. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_node_shim.py +0 -0
  647. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_baseline.py +0 -0
  648. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_cli.py +0 -0
  649. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_collect.py +0 -0
  650. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_config.py +0 -0
  651. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_drive_seam.py +0 -0
  652. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_isolation.py +0 -0
  653. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_predicate.py +0 -0
  654. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_quiet_hours.py +0 -0
  655. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notifier_service.py +0 -0
  656. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notify.py +0 -0
  657. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_notify_drain.py +0 -0
  658. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_openapi.py +0 -0
  659. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_operational_defaults.py +0 -0
  660. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_overlap_fence.py +0 -0
  661. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_overlap_predict.py +0 -0
  662. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_packaged_deploy_units.py +0 -0
  663. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_parentage.py +0 -0
  664. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_paste_landed.py +0 -0
  665. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_pipeline.py +0 -0
  666. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_plan_followup_approve_plan_command.py +0 -0
  667. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_plan_followup_pr_command.py +0 -0
  668. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_plan_followup_review_command.py +0 -0
  669. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_plan_only.py +0 -0
  670. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_plan_parser.py +0 -0
  671. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_platform_paths.py +0 -0
  672. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_portal_bridge.py +0 -0
  673. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_portal_config.py +0 -0
  674. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_portal_store.py +0 -0
  675. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_portal_sync.py +0 -0
  676. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_pr_body_lint.py +0 -0
  677. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_prereqs.py +0 -0
  678. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_production_db_guard.py +0 -0
  679. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_progress.py +0 -0
  680. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_provider_seam.py +0 -0
  681. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_providers.py +0 -0
  682. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_providers_config_labels.py +0 -0
  683. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_providers_pty.py +0 -0
  684. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_quiet_hours.py +0 -0
  685. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_quiet_hours_store_2146.py +0 -0
  686. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reap_merged_sessions.py +0 -0
  687. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reap_stale_interactive_tick.py +0 -0
  688. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reconcile.py +0 -0
  689. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reconcile_branch.py +0 -0
  690. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reconcile_completions.py +0 -0
  691. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reconcile_merges.py +0 -0
  692. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reconcile_no_agent_record.py +0 -0
  693. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reconcile_tick.py +0 -0
  694. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reconcile_usage_limit_done.py +0 -0
  695. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_refine_chat.py +0 -0
  696. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_cordon_2101.py +0 -0
  697. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  698. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_cordon_deadlock_2240.py +0 -0
  699. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_cordon_stuck_2490.py +0 -0
  700. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_propagate.py +0 -0
  701. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_unified_1242.py +0 -0
  702. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_verify.py +0 -0
  703. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_release_window.py +0 -0
  704. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_remote_auto_prune.py +0 -0
  705. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_remote_interactive_reaper.py +0 -0
  706. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_repo_edit_2220.py +0 -0
  707. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_repo_graph_fleet_2237.py +0 -0
  708. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_repo_onboard_2220.py +0 -0
  709. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_report_result_push.py +0 -0
  710. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_reports.py +0 -0
  711. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_retry.py +0 -0
  712. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_retry_advisory_1606.py +0 -0
  713. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_retry_type_1636.py +0 -0
  714. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_revalidate.py +0 -0
  715. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review.py +0 -0
  716. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_end_review_without_verdict.py +0 -0
  717. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_parse_failure_diagnostic.py +0 -0
  718. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_reaffirm.py +0 -0
  719. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_state.py +0 -0
  720. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_verdict_backstop.py +0 -0
  721. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_verdict_override_audit.py +0 -0
  722. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_verdict_relay.py +0 -0
  723. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_review_zero_commits.py +0 -0
  724. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_scoped_review_wiring.py +0 -0
  725. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_scorecard.py +0 -0
  726. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_self_health.py +0 -0
  727. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_serve.py +0 -0
  728. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_serve_app_board_trim.py +0 -0
  729. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_session.py +0 -0
  730. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_slice_issue_attribution.py +0 -0
  731. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_smoke.py +0 -0
  732. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_smoke_live_checkout_restore.py +0 -0
  733. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_smoke_workflow.py +0 -0
  734. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_spend_ceiling.py +0 -0
  735. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_spend_ceiling_coordinator.py +0 -0
  736. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_split.py +0 -0
  737. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_split_work.py +0 -0
  738. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_stage_projection.py +0 -0
  739. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_stalled_pipeline.py +0 -0
  740. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_state.py +0 -0
  741. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_state_review_findings_daemon.py +0 -0
  742. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_status_fleet_footer.py +0 -0
  743. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_stop_1567.py +0 -0
  744. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_stuck.py +0 -0
  745. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_terminal_command.py +0 -0
  746. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_test_author.py +0 -0
  747. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_test_chat.py +0 -0
  748. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_test_orchestrator.py +0 -0
  749. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_test_report.py +0 -0
  750. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_test_verdict_parsing.py +0 -0
  751. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_test_verdict_transcript_floor.py +0 -0
  752. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_thin_client_config_load_1080.py +0 -0
  753. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_thin_client_daemon_routing_906.py +0 -0
  754. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_tmux_host.py +0 -0
  755. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_tmux_session.py +0 -0
  756. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_transcript_floor.py +0 -0
  757. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_usage.py +0 -0
  758. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_usage_limits.py +0 -0
  759. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_usage_rollup.py +0 -0
  760. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_venv_live_install_2121.py +0 -0
  761. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_version_single_source.py +0 -0
  762. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_watch.py +0 -0
  763. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  764. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_worker_events.py +0 -0
  765. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_worker_image_pin_sync.py +0 -0
  766. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_worker_safety.py +0 -0
  767. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_worker_test_scoping.py +0 -0
  768. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_worktree.py +0 -0
  769. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  770. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/Cargo.lock +0 -0
  771. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/Cargo.toml +0 -0
  772. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/cargo-config-local-quadraui.toml.example +0 -0
  773. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/audit.rs +0 -0
  774. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/chat.rs +0 -0
  775. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/data.rs +0 -0
  776. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/doc_tabs.rs +0 -0
  777. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/drive.rs +0 -0
  778. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/drive_queue.rs +0 -0
  779. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/escalation.rs +0 -0
  780. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/events.rs +0 -0
  781. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/fixtures.rs +0 -0
  782. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/fleet_health.rs +0 -0
  783. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/fleet_sessions.rs +0 -0
  784. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/fleet_terminals.rs +0 -0
  785. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/format.rs +0 -0
  786. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/milestone_dag.rs +0 -0
  787. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/mod.rs +0 -0
  788. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/msv.rs +0 -0
  789. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/plans.rs +0 -0
  790. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/render.rs +0 -0
  791. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/reports.rs +0 -0
  792. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/sessions.rs +0 -0
  793. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/settings_ui.rs +0 -0
  794. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/sidebar.rs +0 -0
  795. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/terminal.rs +0 -0
  796. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/types.rs +0 -0
  797. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/app/workspace.rs +0 -0
  798. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/bin/gtk.rs +0 -0
  799. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/lib.rs +0 -0
  800. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/main.rs +0 -0
  801. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/src/settings.rs +0 -0
  802. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/tests/acceptance.rs +0 -0
  803. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/tui/tests/cli.rs +0 -0
  804. {code_coordinator-0.5.211 → code_coordinator-0.5.213}/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.211
3
+ Version: 0.5.213
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.211
3
+ Version: 0.5.213
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.211",
2
+ "tag": "0.5.213",
3
3
  "distance": 0,
4
- "node": "g69492bc482e0d53d98048d02518e14923db70112",
4
+ "node": "ga9e3937295f13339509408e4a07ca7e7028b9987",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-21"
@@ -2350,6 +2350,162 @@ def _run_merge_only_candidates(plan: TickPlan, config_path: Path | None) -> None
2350
2350
  click.echo(f"merge-only: {reason}")
2351
2351
 
2352
2352
 
2353
+ def _run_auto_revalidate_checks_stale(config_path: Path | None) -> None:
2354
+ """#2535: best-effort auto-fire of the CI-staleness rerun for merge-queue
2355
+ entries blocked SOLELY on stale CI checks against an already-approved
2356
+ review — closing the gap where nothing periodic ever calls a live
2357
+ ``coord merge`` or ``coord merge --revalidate`` on such an entry's
2358
+ behalf, so it just sits until an operator notices ``--dry-run``'s
2359
+ ``checks_stale`` line and reruns by hand (the trigger: #2530's Gate-A
2360
+ PR #2534 sat blocked 2026-08-21 on nothing but 210 unrelated merges
2361
+ having landed since its CI last ran).
2362
+
2363
+ Deliberately narrow — this is NOT ``merge.auto_drain`` reopened (that
2364
+ flag stays ``False`` by design; see ``docs/DRIVE_QUEUE.md`` and the
2365
+ 2026-06-07 incident it guards against). This step never merges anything
2366
+ and never touches an entry blocked on review, a real CI failure, or a
2367
+ conflict — it only triggers a ``gh run rerun`` for the exact shape
2368
+ :func:`coord.merge_queue.ci_revalidation_candidates` already scopes
2369
+ ``--revalidate``'s CI arm to (#1851/#1925): ``PENDING``, review
2370
+ approved, smoke fresh, CI checks green but predating the current base.
2371
+
2372
+ BOUNDED, shared with the live path. Draws from the SAME
2373
+ ``ci_stale_reruns``/``MAX_CI_STALE_RERUNS`` budget
2374
+ :func:`coord.merge_queue.process`'s own #2197 auto-rerun already spends
2375
+ from — a live ``coord merge`` attempt and this tick share one ceiling,
2376
+ never two independent ones that could double the effective retry count.
2377
+ An entry that has already exhausted the budget (on a prior live attempt
2378
+ or a prior tick) is left for a human exactly as #2197 already leaves it;
2379
+ this function never fires a further rerun past the cap, though it does
2380
+ keep recording the escalation (below) for as long as the entry stays
2381
+ stuck, so a human watching the audit trail sees it, not just the first
2382
+ tick that hit the ceiling.
2383
+
2384
+ Cost-visible (#1632's posture): every triggered rerun is a real CI run
2385
+ on GitHub's own runners, recorded via :func:`coord.audit.record_audit`
2386
+ (operational tier) so an operator can see the auto-fired count — same
2387
+ spirit as the notifier being advisory rather than silent, never a
2388
+ silent background spend.
2389
+
2390
+ Deliberately NOT behind a new config flag — this reuses exactly the
2391
+ bound and the counter #2197 already established for "an automatic CI
2392
+ rerun triggered by staleness"; the only thing new here is a periodic
2393
+ caller for the case nothing was already about to call ``process()``
2394
+ live. If that judgment turns out to be wrong in practice, the fix is a
2395
+ ``merge.auto_revalidate_stale_ci`` off-switch, not removing the
2396
+ dedicated budget this already shares.
2397
+
2398
+ Best-effort like every other optional step in this tick (conflict
2399
+ reconciliation in ``_auto_drain_tick``, the merge-only fast path above):
2400
+ a failure here must never abort the rest of the tick. Skipped entirely
2401
+ on a thin client — this daemon-host tick is the only place it ever
2402
+ runs, same guard :func:`_fetch_live_ci_gate`/
2403
+ :func:`_run_merge_only_candidates` use.
2404
+ """
2405
+ from coord.board_service import resolve as resolve_board_service # noqa: PLC0415
2406
+
2407
+ if resolve_board_service() is not None:
2408
+ return
2409
+
2410
+ try:
2411
+ from coord import github_ops as _gh_ops # noqa: PLC0415
2412
+ from coord import merge_queue as _mq # noqa: PLC0415
2413
+ from coord.audit import record_audit # noqa: PLC0415
2414
+ from coord.ci_store import build_ci_store # noqa: PLC0415
2415
+ from coord.commands._common import _load_config # noqa: PLC0415
2416
+ from coord.state import load_board as _load_board # noqa: PLC0415
2417
+
2418
+ cfg = _load_config(config_path)
2419
+ board = _load_board()
2420
+ ci_store = build_ci_store(
2421
+ cfg.ci_store.type, host=cfg.ci_store.host, token_env=cfg.ci_store.token_env,
2422
+ )
2423
+ if ci_store is None or not ci_store.is_available:
2424
+ return
2425
+ items = _mq.load_queue()
2426
+ candidates = _mq.ci_revalidation_candidates(items, board, cfg, ci_store, _gh_ops)
2427
+ except Exception: # noqa: BLE001 — best-effort, see docstring
2428
+ return
2429
+
2430
+ if not candidates:
2431
+ return
2432
+
2433
+ touched: list = []
2434
+ for entry in candidates:
2435
+ label = f"{entry.repo_name} #{entry.issue_number} ({entry.branch})"
2436
+ if entry.ci_stale_reruns >= _mq.MAX_CI_STALE_RERUNS:
2437
+ # Budget already spent (on a previous tick, or a previous live
2438
+ # `coord merge` attempt) — #2197's own terminal wording is
2439
+ # already on the entry from whichever call last evaluated it.
2440
+ # Nothing new to trigger; still worth one audit row per tick so
2441
+ # an operator watching the trail sees this has been sitting
2442
+ # exhausted, not silently forgotten.
2443
+ record_audit(
2444
+ tier="operational", category="merge",
2445
+ event_type="merge_checks_stale_auto_revalidate_exhausted",
2446
+ actor="drive-queue-tick",
2447
+ summary=(
2448
+ f"auto-revalidate: {label} still checks_stale after "
2449
+ f"{entry.ci_stale_reruns}/{_mq.MAX_CI_STALE_RERUNS} "
2450
+ "auto-reruns — needs a human (`coord merge --revalidate` "
2451
+ "or `coord merge --only`)"
2452
+ ),
2453
+ repo=entry.repo_name, issue=entry.issue_number,
2454
+ assignment_id=entry.assignment_id,
2455
+ details={
2456
+ "pr_number": entry.pr_number,
2457
+ "ci_stale_reruns": entry.ci_stale_reruns,
2458
+ },
2459
+ )
2460
+ continue
2461
+ try:
2462
+ reran = ci_store.rerun_for_pr(entry.repo_github, entry.pr_number)
2463
+ except Exception as exc: # noqa: BLE001 — one entry's failure must not sink the rest
2464
+ click.echo(
2465
+ f"auto-revalidate: could not re-run CI for {label}: {exc}", err=True
2466
+ )
2467
+ continue
2468
+ entry.ci_stale_reruns += 1
2469
+ entry.error = (
2470
+ f"{_mq.CI_PENDING_PREFIX} re-run triggered for CI checks that "
2471
+ "predate the current base (#2535 auto-revalidate "
2472
+ f"{entry.ci_stale_reruns}/{_mq.MAX_CI_STALE_RERUNS} "
2473
+ f"{'triggered' if reran else 'failed to trigger'})"
2474
+ )
2475
+ touched.append(entry)
2476
+ click.echo(
2477
+ f"auto-revalidate: {'triggered' if reran else 'FAILED to trigger'} "
2478
+ f"a CI re-run for {label} (checks_stale, review already approved) "
2479
+ f"— {entry.ci_stale_reruns}/{_mq.MAX_CI_STALE_RERUNS}"
2480
+ )
2481
+ record_audit(
2482
+ tier="operational", category="merge",
2483
+ event_type="merge_checks_stale_auto_revalidate",
2484
+ actor="drive-queue-tick",
2485
+ summary=(
2486
+ f"auto-revalidate: {'triggered' if reran else 'FAILED to trigger'} "
2487
+ f"a CI re-run for {label} — {entry.ci_stale_reruns}/"
2488
+ f"{_mq.MAX_CI_STALE_RERUNS}"
2489
+ ),
2490
+ repo=entry.repo_name, issue=entry.issue_number,
2491
+ assignment_id=entry.assignment_id,
2492
+ details={"pr_number": entry.pr_number, "reran": reran},
2493
+ )
2494
+
2495
+ if not touched:
2496
+ return
2497
+
2498
+ try:
2499
+ from coord import merge_queue as _mq # noqa: PLC0415
2500
+
2501
+ fresh = _mq.load_queue()
2502
+ by_id = {e.assignment_id: e for e in touched}
2503
+ merged = [by_id.get(item.assignment_id, item) for item in fresh]
2504
+ _mq.save_queue(merged)
2505
+ except Exception: # noqa: BLE001 — best-effort persistence; next tick recomputes
2506
+ pass
2507
+
2508
+
2353
2509
  def _run_resume_probe(entry: QueueEntry) -> ProbeResult:
2354
2510
  """Run one entry's ``--resume-when`` probe with a hard timeout.
2355
2511
 
@@ -2730,6 +2886,15 @@ def drive_queue_tick(
2730
2886
  if not reconcile_only:
2731
2887
  _run_merge_only_candidates(plan, config_path)
2732
2888
 
2889
+ # #2535: independent of the drive-queue plan above (this scans the
2890
+ # MERGE queue directly, not drive-queue rows) — a bounded, best-effort
2891
+ # CI re-run for any entry blocked solely on stale-but-green checks
2892
+ # with an already-approved review. Same `not reconcile_only` posture
2893
+ # as the merge-only fast path just above: a `gh run rerun` is a real
2894
+ # external action that mode promises not to take.
2895
+ if not reconcile_only:
2896
+ _run_auto_revalidate_checks_stale(config_path)
2897
+
2733
2898
  # #2235 Phase 0: record every entry this tick moved INTO or OUT OF
2734
2899
  # `blocked`/`parked`, with the reason the queue stated and — for a
2735
2900
  # release — what the release itself reveals about the true cause.
@@ -393,8 +393,16 @@ Phase 0 steps 1–2 and Phase 1 step 6 above are also reachable by right-clickin
393
393
  not a live session). The CLI's own claim-detection refuses a duplicate dispatch while one is
394
394
  already in flight. This *is* Phase 0 step 1.
395
395
  - **"View Gate A mock (PR)"** 👁 → opens that worker's PR in the browser so a human can read
396
- `contract.md` + the rendered mock(s). Disabled until a PR exists. **Merging that PR does not
397
- satisfy Gate A** (#2063) — it is only how you *see* what you are signing off on.
396
+ `contract.md` and review/merge the branch. Disabled until a PR exists. **This does not show the
397
+ rendered mock(s)** (#2501) — GitHub's "Files changed" view renders `.html` as a source diff,
398
+ never a live page; use "View Gate A mock (local)" below for that. **Merging that PR does not
399
+ satisfy Gate A** (#2063) — it is only how you review/merge what you are signing off on.
400
+ - **"View Gate A mock (local)"** 👁 → the actual mock viewer (#2501). Fast-forward-pulls the local
401
+ checkout's default branch (never forcing, never touching a dirty or diverged tree — aborts with
402
+ a toast instead, same as everywhere else this repo touches git destructively) and then opens
403
+ `tests/acceptance/ms-NN/mocks/` from disk in the OS's default browser, where `.html` actually
404
+ renders. Disabled until that mocks directory exists locally. Opens `mocks/index.html` once #2512
405
+ ships it; falls back to opening the mocks directory itself until then.
398
406
  - **"Approve Gate A"** ✓ → `coord gate-a --approved <repo> <tracking_issue>` — records the verdict
399
407
  that actually satisfies Gate A. Sits directly beside the 👁 on purpose: reviewing and recording
400
408
  are one gesture.
@@ -2166,6 +2166,149 @@ def test_a_parked_merge_only_race_falls_back_to_an_ordinary_relaunch(
2166
2166
  assert len(merge_only_runs.merge) == 1, merge_only_runs.merge
2167
2167
 
2168
2168
 
2169
+ # ── #2535: auto-fire a CI re-run for a merge-queue entry blocked SOLELY on
2170
+ # stale-but-green checks with an already-approved review — no drive-queue row
2171
+ # needed at all, since this scans the merge queue directly. Fixtures below are
2172
+ # deliberately self-contained (not `live_ci_backend`, which fixes the base
2173
+ # timestamp to always read FRESH — the opposite of what a staleness scenario
2174
+ # needs, and whose fake CI stand-in has no `rerun_for_pr` to assert calls on).
2175
+
2176
+
2177
+ def _seed_pending_merge_row(
2178
+ coord_db, issue: int, *, pr_number: int, ci_stale_reruns: int = 0
2179
+ ) -> None:
2180
+ """A bare `merge_queue` row — no drive-queue counterpart — PENDING, with
2181
+ a PR number (required for `ci_revalidation_candidates` to consider it at
2182
+ all) and an optional pre-spent `ci_stale_reruns` budget."""
2183
+ coord_db.execute(
2184
+ "INSERT INTO merge_queue "
2185
+ "(assignment_id, repo_name, repo_github, branch, target_branch, "
2186
+ " issue_number, issue_title, state, pr_number, enqueued_at, "
2187
+ " ci_stale_reruns) "
2188
+ "VALUES (?, ?, ?, ?, ?, ?, ?, 'pending', ?, ?, ?)",
2189
+ (
2190
+ f"w{issue}", REPO, "john/claude-coordinator", f"work-{issue}", "main",
2191
+ issue, f"issue {issue}", pr_number, time.time(), ci_stale_reruns,
2192
+ ),
2193
+ )
2194
+ coord_db.commit()
2195
+
2196
+
2197
+ class _FakeStaleCi:
2198
+ """Stands in for the live backend, like `live_ci_backend`'s `_FakeLiveCi`
2199
+ — but with a `rerun_for_pr` that records its calls (#2182's fake has
2200
+ none, since nothing before #2535 ever needed the tick to trigger one)."""
2201
+
2202
+ is_available = True
2203
+
2204
+ def __init__(self, rerun_calls: list) -> None:
2205
+ self._rerun_calls = rerun_calls
2206
+
2207
+ def list_checks_for_pr(self, repo: str, number: int) -> list:
2208
+ from coord.ci_store import CheckRun
2209
+
2210
+ return [CheckRun(
2211
+ name="build", status="completed", conclusion="success",
2212
+ url="", run_id="1", started_at=100.0, completed_at=160.0,
2213
+ )]
2214
+
2215
+ def expects_checks(self, repo: str, number: int) -> bool:
2216
+ return True
2217
+
2218
+ def rerun_for_pr(self, repo: str, number: int) -> bool:
2219
+ self._rerun_calls.append((repo, number))
2220
+ return True
2221
+
2222
+
2223
+ @pytest.fixture
2224
+ def stale_ci_backend(monkeypatch):
2225
+ """Fakes the #1851 staleness shape directly: a green check that
2226
+ `started_at` well BEFORE the base's own commit timestamp — the base
2227
+ moved out from under an already-green PR. Returns the list of
2228
+ `(repo, pr_number)` pairs `rerun_for_pr` was called with.
2229
+ """
2230
+ import coord.ci_store as ci_store_module
2231
+ import coord.github_ops as github_ops
2232
+
2233
+ rerun_calls: list[tuple[str, int]] = []
2234
+ monkeypatch.setattr(
2235
+ ci_store_module, "build_ci_store", lambda t, **_kw: _FakeStaleCi(rerun_calls)
2236
+ )
2237
+ # The check above started at 100.0; the base's own commit landed at
2238
+ # 1000.0 — well AFTER, so `_ci_checks_are_stale` reads True.
2239
+ monkeypatch.setattr(
2240
+ github_ops, "get_branch_commit_timestamp", lambda repo, branch: 1000.0
2241
+ )
2242
+ monkeypatch.setattr(github_ops, "get_pr_commit_messages", lambda repo, n: [])
2243
+ monkeypatch.setattr(github_ops, "check_pr_mergeable", lambda repo, n: None)
2244
+ return rerun_calls
2245
+
2246
+
2247
+ def test_auto_revalidate_fires_a_ci_rerun_for_an_entry_blocked_solely_on_stale_checks(
2248
+ cli_no_gates, coord_db, stale_ci_backend,
2249
+ ):
2250
+ """The #2530/#2534 shape, unattended: a PENDING entry with a PR, review
2251
+ already satisfied (`cli_no_gates` disables the review requirement —
2252
+ the same minimal "sole blocker is CI" shape
2253
+ `TestCiRevalidationCandidates` uses in tests/test_merge_queue.py), and
2254
+ CI checks that are green but predate the current base. The tick fires
2255
+ the re-run itself — no drive-queue row, no operator running
2256
+ `coord merge --revalidate` by hand.
2257
+ """
2258
+ _seed_pending_merge_row(coord_db, 2534, pr_number=42)
2259
+
2260
+ result = cli_no_gates("tick")
2261
+ assert result.exit_code == 0, result.output
2262
+
2263
+ assert stale_ci_backend == [("john/claude-coordinator", 42)]
2264
+ row = coord_db.execute(
2265
+ "SELECT ci_stale_reruns, error FROM merge_queue WHERE issue_number = ?",
2266
+ (2534,),
2267
+ ).fetchone()
2268
+ assert row["ci_stale_reruns"] == 1
2269
+ assert row["error"].startswith("CI running:")
2270
+ assert "#2535" in row["error"]
2271
+
2272
+ from coord.audit import query_audit_log
2273
+
2274
+ entries = query_audit_log(event_type="merge_checks_stale_auto_revalidate")["entries"]
2275
+ assert len(entries) == 1
2276
+ assert entries[0]["issue"] == 2534
2277
+ assert entries[0]["repo"] == REPO
2278
+
2279
+
2280
+ def test_auto_revalidate_never_exceeds_the_shared_budget(
2281
+ cli_no_gates, coord_db, stale_ci_backend,
2282
+ ):
2283
+ """Budget already spent (whether by a prior tick or a prior live
2284
+ `coord merge` attempt makes no difference — it's the same counter): no
2285
+ NEW rerun fires, but the exhaustion is still recorded so a human
2286
+ watching the audit trail sees it."""
2287
+ from coord.merge_queue import MAX_CI_STALE_RERUNS
2288
+
2289
+ _seed_pending_merge_row(
2290
+ coord_db, 2534, pr_number=42, ci_stale_reruns=MAX_CI_STALE_RERUNS
2291
+ )
2292
+
2293
+ result = cli_no_gates("tick")
2294
+ assert result.exit_code == 0, result.output
2295
+
2296
+ assert stale_ci_backend == [] # no new rerun triggered
2297
+ row = coord_db.execute(
2298
+ "SELECT ci_stale_reruns FROM merge_queue WHERE issue_number = ?",
2299
+ (2534,),
2300
+ ).fetchone()
2301
+ assert row["ci_stale_reruns"] == MAX_CI_STALE_RERUNS # unchanged
2302
+
2303
+ from coord.audit import query_audit_log
2304
+
2305
+ entries = query_audit_log(
2306
+ event_type="merge_checks_stale_auto_revalidate_exhausted"
2307
+ )["entries"]
2308
+ assert len(entries) == 1
2309
+ assert entries[0]["issue"] == 2534
2310
+
2311
+
2169
2312
  def test_a_repeatedly_dead_drive_still_reaches_blocked_and_escalates(
2170
2313
  cli, seed, launches, coord_db
2171
2314
  ):
@@ -233,10 +233,26 @@ COMMANDS_ALLOWLIST: dict[str, set[tuple[str, str]]] = {
233
233
  # (#1870), reaches it. Read-only: load_board only, no save_board, and the
234
234
  # whole block is wrapped in a fail-soft `except Exception: return {}` whose
235
235
  # empty result degrades to exactly the pre-#2350 `resumed` relaunch path.
236
+ # #2535-guarded: `_run_auto_revalidate_checks_stale` is the same shape and
237
+ # the same guard once more — it hands a board to
238
+ # `merge_queue.ci_revalidation_candidates` so the tick can fire the bounded
239
+ # CI re-run for a merge-queue entry blocked solely on stale-but-green
240
+ # checks against an already-approved review (PR #2534 sat there on nothing
241
+ # but 210 unrelated merges having landed since its CI last ran). The
242
+ # `if resolve_board_service() is not None: return` early return sits ABOVE
243
+ # the `from coord.state import load_board` import, so a thin client returns
244
+ # before the local read is even imported, let alone called; only the daemon
245
+ # host, where `coord drive-queue tick` runs and nowhere else (#1870),
246
+ # reaches it. Read-only with respect to the board: load_board only, no
247
+ # save_board (its one write is to the separate merge-queue table via
248
+ # `merge_queue.save_queue`, which the extended scan below already covers),
249
+ # and the whole block is wrapped in a fail-soft `except Exception: return`
250
+ # that degrades to exactly the pre-#2535 "wait for an operator" behaviour.
236
251
  "drive_queue.py": {
237
252
  ("_fetch_live_ci_gate", "load_board"),
238
253
  ("_fetch_live_blocked_gate", "load_board"),
239
254
  ("_fetch_merge_only_ready", "load_board"),
255
+ ("_run_auto_revalidate_checks_stale", "load_board"),
240
256
  ("drive_queue_diagnose", "build_board"),
241
257
  },
242
258
  # #1337: `coord test` no longer calls save_board at all — the verdict is
@@ -896,13 +896,32 @@ impl CoordApp {
896
896
  // headlessly (an independent mock-author agent renders the
897
897
  // viewable mock + writes tests/acceptance/ms-NN/contract.md —
898
898
  // the CLI's own claim-detection refuses a duplicate dispatch).
899
- // "View Gate A mock" opens that worker's PR in the browser
900
- // (same mechanism as the Done-lifecycle "Open PR" below) so a
901
- // human can read contract.md + the rendered mock(s) and
902
- // review/merge the branch — the Test → Review → Merge round
903
- // trip that constitutes sign-off — before `coord acceptance
904
- // author` (out of scope here) is run against the merged
905
- // contract.
899
+ // "View Gate A mock (PR)" opens that worker's PR in the
900
+ // browser (same mechanism as the Done-lifecycle "Open PR"
901
+ // below) so a human can read contract.md and review/merge
902
+ // the branch — the Test → Review → Merge round trip that
903
+ // constitutes sign-off — before `coord acceptance author`
904
+ // (out of scope here) is run against the merged contract.
905
+ // #2501: the PR route was NEVER a way to see the rendered
906
+ // mock(s) themselves — GitHub's "Files changed" view renders
907
+ // `.html` as a source diff, not a live page. "View Gate A
908
+ // mock (local)" sits beside it for that: it fast-forward-
909
+ // pulls the local checkout's default branch (never forcing,
910
+ // never touching a dirty tree — see
911
+ // `pull_default_branch_ff_only`) and then opens
912
+ // tests/acceptance/ms-NN/mocks/index.html from disk via a
913
+ // `file://` URL — a `.html` file IS MIME-associated with the
914
+ // OS's default browser, so this reliably renders there.
915
+ // #2512 amendment: until `mocks/index.html` exists (older
916
+ // checkouts, or a mock-author run predating #2512), this
917
+ // falls back to opening the raw `mocks/` DIRECTORY instead —
918
+ // a directory has no such MIME association, so on most
919
+ // desktops that `file://` URL opens in the OS's file
920
+ // manager, not the browser; the operator is one extra click
921
+ // (pick an `.html` file) from the rendered mock, not looking
922
+ // at it directly. Interim and acceptable per that amendment,
923
+ // but worth being precise about here rather than implying
924
+ // both paths land in the browser equally.
906
925
  items.push(ContextMenuItem::action(
907
926
  "dispatch-gate-a-mock",
908
927
  "Dispatch Gate A mock",
@@ -912,6 +931,14 @@ impl CoordApp {
912
931
  view_gate_a_item.disabled =
913
932
  epic_issue.and_then(|iss| self.pipeline_pr_number(iss)).is_none();
914
933
  items.push(view_gate_a_item);
934
+ let mut view_gate_a_local_item = ContextMenuItem::action(
935
+ "view-gate-a-mock-local",
936
+ "View Gate A mock (local)",
937
+ );
938
+ view_gate_a_local_item.disabled = !epic_issue
939
+ .map(|iss| self.gate_a_mocks_dir_exists_for(iss))
940
+ .unwrap_or(false);
941
+ items.push(view_gate_a_local_item);
915
942
  // #2063: the sign-off itself, right beside the 👁 that opens
916
943
  // the thing being signed off on — reviewing and recording are
917
944
  // one gesture. Until now "merging that PR is what satisfies
@@ -6982,6 +7009,16 @@ impl CoordApp {
6982
7009
  }
6983
7010
  true
6984
7011
  }
7012
+ // #2501: local counterpart to "view-gate-a-mock" — pulls the
7013
+ // local checkout's default branch (fast-forward only) and opens
7014
+ // the rendered mock(s) from disk, since the PR route can never
7015
+ // actually show them (GitHub renders `.html` as source, not a
7016
+ // live page). All toasting on abort/failure happens inside
7017
+ // `dispatch_view_gate_a_mock_local_for_selected_pipeline_row`.
7018
+ "view-gate-a-mock-local" => {
7019
+ self.dispatch_view_gate_a_mock_local_for_selected_pipeline_row();
7020
+ true
7021
+ }
6985
7022
  // #2063: record the human Gate-A verdict. `--approved` is what
6986
7023
  // unblocks the milestone's issues; `--changes` records a
6987
7024
  // rejection so the refusal downstream can say what to fix