code-coordinator 0.5.207__tar.gz → 0.5.210__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 (798) hide show
  1. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/.gitignore +5 -0
  2. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/CLAUDE.md +14 -0
  3. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/PKG-INFO +1 -1
  4. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/code_coordinator.egg-info/PKG-INFO +1 -1
  5. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/code_coordinator.egg-info/scm_version.json +2 -2
  6. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/confirm_test.py +47 -5
  7. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/dashboard/fixture.py +67 -0
  8. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/dashboard/server.py +269 -1
  9. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_confirm_test.py +107 -0
  10. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_dashboard.py +95 -0
  11. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_dashboard_fixture.py +105 -0
  12. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_notify.py +58 -0
  13. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/drive_queue.rs +260 -23
  14. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/tests.rs +34 -14
  15. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/.claude/commands/board.md +0 -0
  16. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/.claude/commands/complete-session.md +0 -0
  17. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/.claude/commands/coordinator.md +0 -0
  18. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/.githooks/_lib.sh +0 -0
  19. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/.githooks/post-checkout +0 -0
  20. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/.githooks/post-commit +0 -0
  21. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/.githooks/post-merge +0 -0
  22. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  23. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/.github/coord-ci-acceptance.yml +0 -0
  24. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/.github/workflows/auto-release.yml +0 -0
  25. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/.github/workflows/cargo-test.yml +0 -0
  26. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/.github/workflows/publish.yml +0 -0
  27. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/.github/workflows/release-tui.yml +0 -0
  28. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/.github/workflows/test.yml +0 -0
  29. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/GOAL.md +0 -0
  30. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/LICENSE +0 -0
  31. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/MANIFEST.in +0 -0
  32. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/README.md +0 -0
  33. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/code_coordinator.egg-info/SOURCES.txt +0 -0
  34. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/code_coordinator.egg-info/dependency_links.txt +0 -0
  35. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/code_coordinator.egg-info/entry_points.txt +0 -0
  36. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/code_coordinator.egg-info/requires.txt +0 -0
  37. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/code_coordinator.egg-info/scm_file_list.json +0 -0
  38. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/code_coordinator.egg-info/top_level.txt +0 -0
  39. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/__init__.py +0 -0
  40. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/_board_mapping.py +0 -0
  41. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/acceptance.py +0 -0
  42. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/acceptance_drivers.py +0 -0
  43. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/agent.py +0 -0
  44. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/agent_app.py +0 -0
  45. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/agent_update.py +0 -0
  46. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/agents/opencode/.gitignore +0 -0
  47. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/agents/opencode/agents/work.md +0 -0
  48. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/agents/opencode/routing.jsonc +0 -0
  49. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/audit.py +0 -0
  50. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/auto_loop.py +0 -0
  51. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/block_log.py +0 -0
  52. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/board_bool_guard.py +0 -0
  53. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/board_service.py +0 -0
  54. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/board_wire.py +0 -0
  55. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/brain.py +0 -0
  56. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/branch_model.py +0 -0
  57. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/bug_intake.py +0 -0
  58. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/cargo_cache.py +0 -0
  59. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/ci_fix.py +0 -0
  60. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/ci_github.py +0 -0
  61. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/ci_gitlab.py +0 -0
  62. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/ci_store.py +0 -0
  63. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/claim.py +0 -0
  64. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/cli.py +0 -0
  65. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/client.py +0 -0
  66. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/__init__.py +0 -0
  67. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/_common.py +0 -0
  68. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/acceptance.py +0 -0
  69. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/agent_ops.py +0 -0
  70. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/audit.py +0 -0
  71. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/chat.py +0 -0
  72. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/dispatch.py +0 -0
  73. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/dispatch_workers.py +0 -0
  74. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/drive.py +0 -0
  75. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/drive_queue.py +0 -0
  76. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/gate_a.py +0 -0
  77. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/gates.py +0 -0
  78. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/issues.py +0 -0
  79. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/lifecycle.py +0 -0
  80. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/merge.py +0 -0
  81. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/milestone.py +0 -0
  82. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/plan_followup.py +0 -0
  83. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/plans.py +0 -0
  84. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/portal.py +0 -0
  85. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/release.py +0 -0
  86. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/repo.py +0 -0
  87. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/report.py +0 -0
  88. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/review.py +0 -0
  89. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/scorecard.py +0 -0
  90. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/sessions.py +0 -0
  91. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/setup.py +0 -0
  92. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/status.py +0 -0
  93. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/terminal.py +0 -0
  94. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/test_gate.py +0 -0
  95. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/commands/tui.py +0 -0
  96. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/comments.py +0 -0
  97. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/config.py +0 -0
  98. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/config_reload.py +0 -0
  99. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/conflict_fix.py +0 -0
  100. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/dao.py +0 -0
  101. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/dashboard/__init__.py +0 -0
  102. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/dashboard/index.html +0 -0
  103. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/dashboard/terminal.py +0 -0
  104. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/db.py +0 -0
  105. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/dead_end.py +0 -0
  106. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/README.md +0 -0
  107. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-agent.service +0 -0
  108. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-db-backup.service +0 -0
  109. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-db-backup.sh +0 -0
  110. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-db-backup.timer +0 -0
  111. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-drive-queue.service +0 -0
  112. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-drive-queue.timer +0 -0
  113. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-notify.service +0 -0
  114. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-notify.timer +0 -0
  115. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-release-propagate.service +0 -0
  116. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-release-propagate.timer +0 -0
  117. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-release-window.service +0 -0
  118. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-release-window.timer +0 -0
  119. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-serve.service +0 -0
  120. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-web-dist-build.service +0 -0
  121. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-web-dist-build.timer +0 -0
  122. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy/coord-web.service +0 -0
  123. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy_manifest.py +0 -0
  124. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deploy_units.py +0 -0
  125. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/deps.py +0 -0
  126. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/diagnose.py +0 -0
  127. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/dispatch.py +0 -0
  128. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/dist_name.py +0 -0
  129. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/drive.py +0 -0
  130. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/drive_queue.py +0 -0
  131. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/drive_state.py +0 -0
  132. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/events.py +0 -0
  133. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/failure_class.py +0 -0
  134. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/filelock.py +0 -0
  135. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/fleet_config_health.py +0 -0
  136. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/forge_availability.py +0 -0
  137. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/freshness.py +0 -0
  138. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/gate_a.py +0 -0
  139. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/gate_b.py +0 -0
  140. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/gate_snapshot.py +0 -0
  141. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/gates.py +0 -0
  142. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/github_ops.py +0 -0
  143. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/goal.py +0 -0
  144. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/graph_health.py +0 -0
  145. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/__init__.py +0 -0
  146. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/aggregate.py +0 -0
  147. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/__init__.py +0 -0
  148. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/agent_install.py +0 -0
  149. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/cargo_targets.py +0 -0
  150. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/claude_binary.py +0 -0
  151. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/coord_web_ci_pin.py +0 -0
  152. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/deploy_lane_facts.py +0 -0
  153. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/disk.py +0 -0
  154. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/fleet_board.py +0 -0
  155. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  156. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/fleet_phantom.py +0 -0
  157. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/fleet_unit_drift.py +0 -0
  158. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/graph.py +0 -0
  159. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/graphify_cli.py +0 -0
  160. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/index_lock.py +0 -0
  161. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/plan_usage.py +0 -0
  162. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/repo_state.py +0 -0
  163. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/spawned_coord.py +0 -0
  164. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/timer_active.py +0 -0
  165. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/toolchain.py +0 -0
  166. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/unit_drift.py +0 -0
  167. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/unit_enablement.py +0 -0
  168. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/checks/worktrees.py +0 -0
  169. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/cli.py +0 -0
  170. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/context.py +0 -0
  171. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/fleet_snapshot.py +0 -0
  172. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/models.py +0 -0
  173. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/pypi.py +0 -0
  174. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/registry.py +0 -0
  175. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/render.py +0 -0
  176. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/health/units.py +0 -0
  177. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/hooks.py +0 -0
  178. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/housekeeping.py +0 -0
  179. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/interactive.py +0 -0
  180. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/issue_store.py +0 -0
  181. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/liveness_auditor.py +0 -0
  182. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/machine_pause.py +0 -0
  183. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/merge_queue.py +0 -0
  184. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/milestone_chat.py +0 -0
  185. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/milestone_dispatch.py +0 -0
  186. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/milestone_gate.py +0 -0
  187. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/milestone_order.py +0 -0
  188. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/mock_author.py +0 -0
  189. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/models.py +0 -0
  190. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/network.py +0 -0
  191. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/new_issue_chat.py +0 -0
  192. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/notifier/__init__.py +0 -0
  193. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/notifier/baseline.py +0 -0
  194. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/notifier/cli.py +0 -0
  195. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/notifier/collect.py +0 -0
  196. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/notifier/digest.py +0 -0
  197. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/notifier/models.py +0 -0
  198. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/notifier/predicate.py +0 -0
  199. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/notifier/service.py +0 -0
  200. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/notifier/store.py +0 -0
  201. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/notifier/transport.py +0 -0
  202. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/notify.py +0 -0
  203. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/openapi.py +0 -0
  204. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/overlap_fence.py +0 -0
  205. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/overlap_predict.py +0 -0
  206. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/parentage.py +0 -0
  207. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/parentage_github.py +0 -0
  208. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/pipeline.py +0 -0
  209. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/plan_parser.py +0 -0
  210. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/plans.py +0 -0
  211. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/platform_paths.py +0 -0
  212. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/portal_bridge.py +0 -0
  213. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/portal_store.py +0 -0
  214. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/portal_sync.py +0 -0
  215. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/pr_body_lint.py +0 -0
  216. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/prereqs.py +0 -0
  217. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/progress.py +0 -0
  218. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/providers/__init__.py +0 -0
  219. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/providers/base.py +0 -0
  220. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/providers/claude.py +0 -0
  221. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/providers/claude_pty.py +0 -0
  222. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/providers/opencode.py +0 -0
  223. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/queue_diagnose.py +0 -0
  224. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/reconcile.py +0 -0
  225. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/reconcile_tick.py +0 -0
  226. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/refine_chat.py +0 -0
  227. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/release_cordon.py +0 -0
  228. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/release_propagate.py +0 -0
  229. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/release_verify.py +0 -0
  230. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/release_window.py +0 -0
  231. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/repo_edit.py +0 -0
  232. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/repo_onboard.py +0 -0
  233. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/reports.py +0 -0
  234. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/revalidate.py +0 -0
  235. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/review.py +0 -0
  236. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/scorecard.py +0 -0
  237. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/self_health.py +0 -0
  238. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/serve_app.py +0 -0
  239. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  240. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  241. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  242. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  243. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  244. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/skills/portal-followup/SKILL.md +0 -0
  245. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  246. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  247. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/skills/update-issue/SKILL.md +0 -0
  248. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/smoke.py +0 -0
  249. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/spend_ceiling.py +0 -0
  250. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/split_work.py +0 -0
  251. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/stage_projection.py +0 -0
  252. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/state.py +0 -0
  253. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/test_author.py +0 -0
  254. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/test_chat.py +0 -0
  255. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/test_orchestrator.py +0 -0
  256. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/test_report.py +0 -0
  257. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/tui_release.py +0 -0
  258. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/usage.py +0 -0
  259. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/usage_limits.py +0 -0
  260. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/usage_rollup.py +0 -0
  261. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coord/worker_events.py +0 -0
  262. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/coordinator.example.yml +0 -0
  263. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-agent.service +0 -0
  264. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-db-backup.service +0 -0
  265. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-db-backup.sh +0 -0
  266. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-db-backup.timer +0 -0
  267. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-drive-queue.service +0 -0
  268. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-drive-queue.timer +0 -0
  269. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-notify.service +0 -0
  270. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-notify.timer +0 -0
  271. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-release-propagate.service +0 -0
  272. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-release-propagate.timer +0 -0
  273. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-release-window.service +0 -0
  274. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-release-window.timer +0 -0
  275. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-serve.service +0 -0
  276. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-web-dist-build.service +0 -0
  277. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-web-dist-build.sh +0 -0
  278. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-web-dist-build.timer +0 -0
  279. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-web-rollback.sh +0 -0
  280. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/coord-web.service +0 -0
  281. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/deploy/node-shim.sh +0 -0
  282. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  283. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/ADR_COORD_WEB_CI.md +0 -0
  284. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/ADR_COORD_WEB_DIST.md +0 -0
  285. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/AGENT_OPERATIONS.md +0 -0
  286. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/ARCHITECTURE.md +0 -0
  287. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/ARCH_SECURITY_GATES.md +0 -0
  288. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/COCKPIT.md +0 -0
  289. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/CONTROL_CENTER.md +0 -0
  290. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/COST_DISCIPLINE.md +0 -0
  291. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/CROSS_PLATFORM.md +0 -0
  292. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/CUSTOMER_PORTAL.md +0 -0
  293. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/DRIVE_QUEUE.md +0 -0
  294. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/EPHEMERAL_WORKERS.md +0 -0
  295. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/FORGE_MIGRATION.md +0 -0
  296. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/GRAPHIFY_SETUP.md +0 -0
  297. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/ISSUE_GUIDANCE.md +0 -0
  298. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/MAC_MINI.md +0 -0
  299. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  300. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/NOTIFIER.md +0 -0
  301. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/OPENCODE_VERIFICATION.md +0 -0
  302. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/OPERATING_GOTCHAS.md +0 -0
  303. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/ORACLE_LOOP.md +0 -0
  304. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/PHONE_WEBAPP.md +0 -0
  305. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/PIPELINE_V2.md +0 -0
  306. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/PLATFORM_EVOLUTION.md +0 -0
  307. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/SECOND_BACKEND.md +0 -0
  308. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/STORE_SERVICE.md +0 -0
  309. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  310. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/WEB_CONTROL_CENTER.md +0 -0
  311. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/WSL_WINDOWS_WORKER.md +0 -0
  312. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/mocks/web/README.md +0 -0
  313. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/mocks/web/_tokens.css +0 -0
  314. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/mocks/web/issue-detail.html +0 -0
  315. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/mocks/web/pipeline-narrow.html +0 -0
  316. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/docs/mocks/web/pipeline-wide.html +0 -0
  317. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/graphify-out/.gitignore +0 -0
  318. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/install-agent.sh +0 -0
  319. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/pyproject.toml +0 -0
  320. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/audit_review_verdict_overrides.py +0 -0
  321. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  322. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/azure-workers/build-worker-image.sh +0 -0
  323. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/azure-workers/coordinator-machine.py +0 -0
  324. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/azure-workers/epic-down.sh +0 -0
  325. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/azure-workers/epic-up.sh +0 -0
  326. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/azure-workers/preflight.sh +0 -0
  327. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/azure-workers/provision-worker.sh +0 -0
  328. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  329. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  330. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/azure-workers/verify-github-token.sh +0 -0
  331. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/check_gh_argv_containment.py +0 -0
  332. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/codegen.py +0 -0
  333. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/coord-test-runner.sh +0 -0
  334. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/drive-batch.sh +0 -0
  335. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/gen_board_fixture.py +0 -0
  336. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/gen_mock_index.py +0 -0
  337. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/next_release_tag.py +0 -0
  338. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/run_tests_in_populated_home.sh +0 -0
  339. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/run_tests_without_gh.sh +0 -0
  340. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/smoke_437_interactive.py +0 -0
  341. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/verify_878_review_capture.py +0 -0
  342. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/verify_release_published.py +0 -0
  343. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/scripts/verify_release_wheel.py +0 -0
  344. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/setup.cfg +0 -0
  345. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/SMOKE_SET.md +0 -0
  346. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/__init__.py +0 -0
  347. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  348. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-33/contract.md +0 -0
  349. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-33/manifest.yml +0 -0
  350. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  351. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  352. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  353. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  354. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-37/conftest.py +0 -0
  355. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-37/contract.md +0 -0
  356. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-37/manifest.yml +0 -0
  357. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  358. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  359. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-38/contract.md +0 -0
  360. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-38/manifest.yml +0 -0
  361. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  362. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  363. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  364. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  365. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  366. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  367. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  368. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  369. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  370. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  371. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-51/contract.md +0 -0
  372. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  373. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  374. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-51/manifest.yml +0 -0
  375. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  376. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-51/tsconfig.json +0 -0
  377. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  378. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  379. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  380. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/contract.md +0 -0
  381. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  382. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/manifest.yml +0 -0
  383. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  384. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  385. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  386. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  387. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  388. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  389. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  390. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  391. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  392. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  393. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  394. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  395. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/conftest.py +0 -0
  396. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/board-pipeline-basic.json +0 -0
  397. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  398. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  399. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  400. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  401. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/playwright/all_pass.json +0 -0
  402. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  403. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/playwright/mixed_fail.json +0 -0
  404. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  405. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  406. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/playwright/skip.json +0 -0
  407. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/playwright/truncated.json +0 -0
  408. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  409. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  410. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  411. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  412. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  413. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  414. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  415. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  416. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_acceptance.py +0 -0
  417. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_acceptance_drivers.py +0 -0
  418. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent.py +0 -0
  419. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_api_error.py +0 -0
  420. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_app.py +0 -0
  421. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_branch_base.py +0 -0
  422. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_branch_capture.py +0 -0
  423. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_config_free_1712.py +0 -0
  424. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_deploy_units_endpoint.py +0 -0
  425. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_dirty_worktree.py +0 -0
  426. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  427. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_graph_self_heal.py +0 -0
  428. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_health_h3.py +0 -0
  429. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_idle_restart.py +0 -0
  430. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_push_failure.py +0 -0
  431. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_reap.py +0 -0
  432. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_repos_and_pull.py +0 -0
  433. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_restart_services_endpoint.py +0 -0
  434. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_skills_self_heal.py +0 -0
  435. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_startup_diagnostics.py +0 -0
  436. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_update.py +0 -0
  437. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_update_bluegreen.py +0 -0
  438. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_usage_limit.py +0 -0
  439. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_agent_zero_commit.py +0 -0
  440. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_ambient_home_isolation.py +0 -0
  441. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_approve_reject_plan.py +0 -0
  442. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_approve_usage_gate.py +0 -0
  443. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_assignment_already_recorded_daemon.py +0 -0
  444. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_audit_log.py +0 -0
  445. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_audit_outcome.py +0 -0
  446. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_audit_query.py +0 -0
  447. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_auto_loop.py +0 -0
  448. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_auto_release_publish_2035.py +0 -0
  449. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_base_checkout_restore.py +0 -0
  450. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_block_log.py +0 -0
  451. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_board_cap_762.py +0 -0
  452. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_board_fixture.py +0 -0
  453. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_board_read_path.py +0 -0
  454. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_board_service.py +0 -0
  455. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_board_state.py +0 -0
  456. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_board_wire.py +0 -0
  457. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_brain.py +0 -0
  458. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_branch_model.py +0 -0
  459. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_bug_intake.py +0 -0
  460. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_build_worker_image_env_update.py +0 -0
  461. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cargo_cache.py +0 -0
  462. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_check_gh_argv_containment.py +0 -0
  463. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_ci_acceptance_gate_1950.py +0 -0
  464. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_ci_fix.py +0 -0
  465. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_ci_gitlab.py +0 -0
  466. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_ci_parity_2091.py +0 -0
  467. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_ci_store.py +0 -0
  468. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_claim.py +0 -0
  469. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_acceptance.py +0 -0
  470. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_assign.py +0 -0
  471. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  472. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_assign_interactive_remote.py +0 -0
  473. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_assign_provider.py +0 -0
  474. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  475. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_audit.py +0 -0
  476. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_chat_continue.py +0 -0
  477. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_decide.py +0 -0
  478. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_diagnose_config_provenance.py +0 -0
  479. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_diagnose_forge_availability.py +0 -0
  480. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_diagnose_graph.py +0 -0
  481. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_diagnose_self.py +0 -0
  482. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_doctor.py +0 -0
  483. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_doctor_config_free_1801.py +0 -0
  484. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  485. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_drive.py +0 -0
  486. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_drive_queue.py +0 -0
  487. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_escalate.py +0 -0
  488. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_fix_headless_review.py +0 -0
  489. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_gate_a.py +0 -0
  490. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_install_drift.py +0 -0
  491. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_install_skills.py +0 -0
  492. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_issue_create_label.py +0 -0
  493. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_issue_reopen.py +0 -0
  494. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_merge.py +0 -0
  495. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_milestone_assign.py +0 -0
  496. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_milestone_capture.py +0 -0
  497. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_milestone_chat_add_child.py +0 -0
  498. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_milestone_dispatch.py +0 -0
  499. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_milestone_gate_b.py +0 -0
  500. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_milestone_gate_c.py +0 -0
  501. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_milestone_order.py +0 -0
  502. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  503. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_milestone_ship.py +0 -0
  504. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_network.py +0 -0
  505. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_new_issue_chat.py +0 -0
  506. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_plans.py +0 -0
  507. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_portal.py +0 -0
  508. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_pull_artifact.py +0 -0
  509. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_queue.py +0 -0
  510. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_reattach_sessions.py +0 -0
  511. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_refine_board.py +0 -0
  512. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_release_preflight.py +0 -0
  513. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_release_propagate.py +0 -0
  514. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_release_window.py +0 -0
  515. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_repo_2220.py +0 -0
  516. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_scorecard.py +0 -0
  517. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_set_review_findings.py +0 -0
  518. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_status_advisory_terminal.py +0 -0
  519. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_status_merge_queue.py +0 -0
  520. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_status_provider.py +0 -0
  521. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_status_review_finalizing.py +0 -0
  522. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_status_test_failed_tag.py +0 -0
  523. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_status_usage_limit.py +0 -0
  524. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_sync_comments_873.py +0 -0
  525. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_test_plan.py +0 -0
  526. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_track.py +0 -0
  527. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_tui_update.py +0 -0
  528. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cli_wait.py +0 -0
  529. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_client_base_install.py +0 -0
  530. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_comments.py +0 -0
  531. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_completion_summary.py +0 -0
  532. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_config.py +0 -0
  533. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_config_acceptance.py +0 -0
  534. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_config_audit.py +0 -0
  535. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_config_pricing.py +0 -0
  536. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  537. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_config_usage_gate.py +0 -0
  538. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_conflict_fix.py +0 -0
  539. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_conflict_fix_semantic.py +0 -0
  540. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_coord_test.py +0 -0
  541. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_coord_test_runner_baseline.py +0 -0
  542. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_coord_test_runner_populated_home.py +0 -0
  543. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_coord_test_runner_routing.py +0 -0
  544. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_coord_test_runner_toolchain.py +0 -0
  545. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_coord_web_sse_restart_live.py +0 -0
  546. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_coordinator_machine.py +0 -0
  547. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_cross_platform_imports.py +0 -0
  548. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_dashboard_terminal.py +0 -0
  549. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_dashboard_terminal_live.py +0 -0
  550. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_db.py +0 -0
  551. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_dead_end.py +0 -0
  552. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_deploy_coord_db_backup.py +0 -0
  553. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_deploy_coord_web_dist.py +0 -0
  554. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_deploy_coord_web_rollback.py +0 -0
  555. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_deploy_drive_queue_unit.py +0 -0
  556. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_deploy_manifest.py +0 -0
  557. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_deploy_units_lane.py +0 -0
  558. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_deploy_web_unit.py +0 -0
  559. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_deps.py +0 -0
  560. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_diagnose.py +0 -0
  561. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_dispatch.py +0 -0
  562. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_dispatch_target_validation.py +0 -0
  563. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_dist_name.py +0 -0
  564. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_done_housekeeping.py +0 -0
  565. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_drive.py +0 -0
  566. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_drive_queue.py +0 -0
  567. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_drive_state.py +0 -0
  568. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_drive_tmux.py +0 -0
  569. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_epic_up_capability_detection.py +0 -0
  570. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  571. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_epic_up_image_provenance.py +0 -0
  572. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_errors.py +0 -0
  573. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_events.py +0 -0
  574. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_failure_class.py +0 -0
  575. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_filelock.py +0 -0
  576. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  577. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_fix_of_force_override.py +0 -0
  578. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_fleet_config_health.py +0 -0
  579. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_fleet_health_probes.py +0 -0
  580. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_fleet_health_snapshot.py +0 -0
  581. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_forge_availability.py +0 -0
  582. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_freshness.py +0 -0
  583. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_gate_a.py +0 -0
  584. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_gate_b.py +0 -0
  585. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_gate_snapshot_staleness.py +0 -0
  586. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_gates.py +0 -0
  587. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  588. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_gen_mock_index.py +0 -0
  589. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_generated_types_fixture.py +0 -0
  590. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_github_ops.py +0 -0
  591. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_goal.py +0 -0
  592. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_graph_health.py +0 -0
  593. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_graph_selfheal_absent_2237.py +0 -0
  594. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_handoff.py +0 -0
  595. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_health_checks.py +0 -0
  596. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_health_cli.py +0 -0
  597. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_health_cli_graph.py +0 -0
  598. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_health_config.py +0 -0
  599. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_health_context.py +0 -0
  600. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_health_coord_web_ci_pin.py +0 -0
  601. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_health_deploy_lane_facts.py +0 -0
  602. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_health_incident_regression.py +0 -0
  603. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_health_pypi.py +0 -0
  604. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_health_registry.py +0 -0
  605. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_health_timer_active.py +0 -0
  606. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_health_toolchain.py +0 -0
  607. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_health_unit_drift.py +0 -0
  608. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_health_unit_enablement.py +0 -0
  609. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_hooks.py +0 -0
  610. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_human_attended_437.py +0 -0
  611. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_init.py +0 -0
  612. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_integration.py +0 -0
  613. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_interactive_briefing_echo.py +0 -0
  614. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_interactive_prefill_state.py +0 -0
  615. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_interactive_session_relaunch.py +0 -0
  616. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_interactive_test_verdict_backstop.py +0 -0
  617. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_interactive_token_attribution.py +0 -0
  618. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_interactive_worktree.py +0 -0
  619. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_issue_store_seam.py +0 -0
  620. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_liveness_auditor.py +0 -0
  621. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_liveness_notify.py +0 -0
  622. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_machine_pause.py +0 -0
  623. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_merge_queue.py +0 -0
  624. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_merge_verify.py +0 -0
  625. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_milestone_chat.py +0 -0
  626. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_milestone_dispatch.py +0 -0
  627. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_milestone_gate.py +0 -0
  628. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_milestone_order.py +0 -0
  629. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_milestone_seam.py +0 -0
  630. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_mock_author.py +0 -0
  631. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_model_tiering.py +0 -0
  632. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_models.py +0 -0
  633. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_models_config_labels.py +0 -0
  634. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_needs_attention.py +0 -0
  635. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_network.py +0 -0
  636. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_new_issue_chat.py +0 -0
  637. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_next_release_tag.py +0 -0
  638. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_node_shim.py +0 -0
  639. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_notifier_baseline.py +0 -0
  640. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_notifier_cli.py +0 -0
  641. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_notifier_collect.py +0 -0
  642. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_notifier_config.py +0 -0
  643. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_notifier_drive_seam.py +0 -0
  644. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_notifier_isolation.py +0 -0
  645. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_notifier_predicate.py +0 -0
  646. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_notifier_quiet_hours.py +0 -0
  647. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_notifier_service.py +0 -0
  648. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_notify_drain.py +0 -0
  649. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_openapi.py +0 -0
  650. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_operational_defaults.py +0 -0
  651. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_overlap_fence.py +0 -0
  652. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_overlap_predict.py +0 -0
  653. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_packaged_deploy_units.py +0 -0
  654. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_parentage.py +0 -0
  655. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_paste_landed.py +0 -0
  656. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_pipeline.py +0 -0
  657. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_plan_followup_approve_plan_command.py +0 -0
  658. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_plan_followup_pr_command.py +0 -0
  659. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_plan_followup_review_command.py +0 -0
  660. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_plan_only.py +0 -0
  661. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_plan_parser.py +0 -0
  662. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_platform_paths.py +0 -0
  663. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_portal_bridge.py +0 -0
  664. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_portal_config.py +0 -0
  665. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_portal_store.py +0 -0
  666. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_portal_sync.py +0 -0
  667. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_pr_body_lint.py +0 -0
  668. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_prereqs.py +0 -0
  669. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_production_db_guard.py +0 -0
  670. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_progress.py +0 -0
  671. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_provider_seam.py +0 -0
  672. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_providers.py +0 -0
  673. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_providers_config_labels.py +0 -0
  674. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_providers_pty.py +0 -0
  675. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_quiet_hours.py +0 -0
  676. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_quiet_hours_store_2146.py +0 -0
  677. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_reap_merged_sessions.py +0 -0
  678. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_reap_stale_interactive_tick.py +0 -0
  679. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_reconcile.py +0 -0
  680. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_reconcile_branch.py +0 -0
  681. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_reconcile_completions.py +0 -0
  682. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_reconcile_merges.py +0 -0
  683. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_reconcile_no_agent_record.py +0 -0
  684. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_reconcile_tick.py +0 -0
  685. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_reconcile_usage_limit_done.py +0 -0
  686. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_refine_chat.py +0 -0
  687. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_release_cordon_2101.py +0 -0
  688. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  689. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_release_cordon_deadlock_2240.py +0 -0
  690. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_release_cordon_stuck_2490.py +0 -0
  691. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_release_propagate.py +0 -0
  692. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_release_unified_1242.py +0 -0
  693. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_release_verify.py +0 -0
  694. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_release_window.py +0 -0
  695. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_remote_auto_prune.py +0 -0
  696. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_remote_interactive_reaper.py +0 -0
  697. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_repo_edit_2220.py +0 -0
  698. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_repo_graph_fleet_2237.py +0 -0
  699. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_repo_onboard_2220.py +0 -0
  700. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_report_result_push.py +0 -0
  701. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_reports.py +0 -0
  702. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_retry.py +0 -0
  703. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_retry_advisory_1606.py +0 -0
  704. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_retry_type_1636.py +0 -0
  705. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_revalidate.py +0 -0
  706. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_review.py +0 -0
  707. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_review_end_review_without_verdict.py +0 -0
  708. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_review_parse_failure_diagnostic.py +0 -0
  709. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_review_reaffirm.py +0 -0
  710. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_review_state.py +0 -0
  711. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_review_verdict_backstop.py +0 -0
  712. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_review_verdict_override_audit.py +0 -0
  713. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_review_verdict_relay.py +0 -0
  714. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_review_zero_commits.py +0 -0
  715. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_scoped_review_wiring.py +0 -0
  716. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_scorecard.py +0 -0
  717. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_self_health.py +0 -0
  718. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_serve.py +0 -0
  719. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_serve_app_board_trim.py +0 -0
  720. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_session.py +0 -0
  721. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_slice_issue_attribution.py +0 -0
  722. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_smoke.py +0 -0
  723. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_smoke_live_checkout_restore.py +0 -0
  724. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_smoke_workflow.py +0 -0
  725. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_spend_ceiling.py +0 -0
  726. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_spend_ceiling_coordinator.py +0 -0
  727. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_split.py +0 -0
  728. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_split_work.py +0 -0
  729. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_stage_projection.py +0 -0
  730. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_stalled_pipeline.py +0 -0
  731. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_state.py +0 -0
  732. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_state_review_findings_daemon.py +0 -0
  733. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_status_fleet_footer.py +0 -0
  734. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_stop_1567.py +0 -0
  735. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_stuck.py +0 -0
  736. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_terminal_command.py +0 -0
  737. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_test_author.py +0 -0
  738. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_test_chat.py +0 -0
  739. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_test_orchestrator.py +0 -0
  740. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_test_report.py +0 -0
  741. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_test_verdict_parsing.py +0 -0
  742. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_test_verdict_transcript_floor.py +0 -0
  743. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_thin_client_board_audit.py +0 -0
  744. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_thin_client_config_load_1080.py +0 -0
  745. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_thin_client_daemon_routing_906.py +0 -0
  746. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_tmux_host.py +0 -0
  747. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_tmux_session.py +0 -0
  748. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_transcript_floor.py +0 -0
  749. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_usage.py +0 -0
  750. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_usage_limits.py +0 -0
  751. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_usage_rollup.py +0 -0
  752. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_venv_live_install_2121.py +0 -0
  753. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_version_single_source.py +0 -0
  754. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_watch.py +0 -0
  755. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  756. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_worker_events.py +0 -0
  757. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_worker_image_pin_sync.py +0 -0
  758. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_worker_safety.py +0 -0
  759. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_worker_test_scoping.py +0 -0
  760. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_worktree.py +0 -0
  761. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  762. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/Cargo.lock +0 -0
  763. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/Cargo.toml +0 -0
  764. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/cargo-config-local-quadraui.toml.example +0 -0
  765. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/audit.rs +0 -0
  766. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/chat.rs +0 -0
  767. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/data.rs +0 -0
  768. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/dialogs.rs +0 -0
  769. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/doc_tabs.rs +0 -0
  770. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/drive.rs +0 -0
  771. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/escalation.rs +0 -0
  772. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/events.rs +0 -0
  773. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/fixtures.rs +0 -0
  774. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/fleet_health.rs +0 -0
  775. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/fleet_sessions.rs +0 -0
  776. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/fleet_terminals.rs +0 -0
  777. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/format.rs +0 -0
  778. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/milestone_dag.rs +0 -0
  779. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/mod.rs +0 -0
  780. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/msv.rs +0 -0
  781. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/pipeline.rs +0 -0
  782. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/plans.rs +0 -0
  783. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/render.rs +0 -0
  784. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/reports.rs +0 -0
  785. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/sessions.rs +0 -0
  786. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/settings_ui.rs +0 -0
  787. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/sidebar.rs +0 -0
  788. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/terminal.rs +0 -0
  789. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/types.rs +0 -0
  790. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/app/workspace.rs +0 -0
  791. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/bin/gtk.rs +0 -0
  792. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/commands.rs +0 -0
  793. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/lib.rs +0 -0
  794. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/main.rs +0 -0
  795. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/src/settings.rs +0 -0
  796. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/tests/acceptance.rs +0 -0
  797. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/tests/cli.rs +0 -0
  798. {code_coordinator-0.5.207 → code_coordinator-0.5.210}/tui/tests/fixtures/board_sample.json +0 -0
@@ -18,3 +18,8 @@ tui/*.out
18
18
  # tui/cargo-config-local-quadraui.toml.example) — never commit a
19
19
  # machine-local co-development override.
20
20
  tui/.cargo/config.toml
21
+
22
+ # scratch $HOME created inside disposable worktrees by the CI-mode
23
+ # acceptance runner (scripts/coord-test-runner.sh) — never meant to
24
+ # leave the throwaway worktree, let alone land in git history (#2527).
25
+ .coord-ci-home/
@@ -10,6 +10,20 @@ CLI tool + per-machine agent server that coordinates Claude Code workers across
10
10
  > [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md#design-decisions--the-settled-rationale).
11
11
  > Keep it that way: if a new rule does not change what a worker does, it belongs in `docs/`.
12
12
 
13
+ > **Operator sessions: dispatch, don't do.** If you're the interactive coordinator session —
14
+ > not a dispatched `type=work`/`review` leg — and the user asks for a change in any repo listed
15
+ > in `coordinator.yml`, don't edit that repo's tree yourself: file a GitHub issue and `coord
16
+ > drive-queue add` it. That gets the change tested, independently reviewed, merged, and
17
+ > deployed; hand-editing it here skips all four. (Doc-only edits to *this* repo are the
18
+ > documented exception for *who* does the work — see
19
+ > [`docs/COST_DISCIPLINE.md`](docs/COST_DISCIPLINE.md) — **not** for *how* it lands: every commit
20
+ > on `main`, doc-only ones included, is squash-merged from a branch's PR, never pushed to `main`
21
+ > directly. Use `EnterWorktree`, branch, commit, push, open the PR, let it merge, then
22
+ > `ExitWorktree`.) Caught 2026-08-21: this exact rule used to live inline here, got moved to
23
+ > that linked doc by #2195, and was then skipped — an operator session hand-implemented a
24
+ > natal-chart feature directly instead of dispatching it. If you're a worker or reviewer leg,
25
+ > this paragraph isn't for you.
26
+
13
27
  ## Current Goal — read first
14
28
 
15
29
  **[`GOAL.md`](GOAL.md) holds the current north-star objective** — the living, cross-repo / cross-machine goal that should bias all planning, triage, and dispatch. It is meta-level (above any single issue, repo, or session) and changes as priorities evolve: read it first, plan against it, and keep it current. `coordinator.yml` is the source of truth for *topology*; `GOAL.md` is the source of truth for *intent*.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.207
3
+ Version: 0.5.210
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.207
3
+ Version: 0.5.210
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.207",
2
+ "tag": "0.5.210",
3
3
  "distance": 0,
4
- "node": "gc33012740fef085a15f6c4a34f631d39225f18b3",
4
+ "node": "gd5dc3b7d2bb67fd517cd7ac495abb3076f2017e4",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-21"
@@ -82,7 +82,12 @@ saying so:
82
82
  that lesson is not re-learned here;
83
83
  * a timeout (:data:`~coord.revalidate.KIND_TIMEOUT`) — a hung or merely slow
84
84
  suite says nothing about the branch. Classifying a timeout as a refutation
85
- would let a too-tight ceiling fail every branch in the fleet, so it does not.
85
+ would let a too-tight ceiling fail every branch in the fleet, so it does not;
86
+ * an external signal killing the confirmation subprocess (:data:`KIND_SIGNAL`,
87
+ #2527) — a negative ``returncode`` from `subprocess.run` (e.g. ``-15`` for
88
+ SIGTERM), most often a `coord-agent`/`coord-serve` restart landing mid-run.
89
+ The command never ran to completion, exactly like a timeout, so it gets the
90
+ identical inconclusive treatment rather than being read as "ran and failed".
86
91
 
87
92
  That asymmetry is the safety property: the worst case of a broken confirmation
88
93
  environment is that the Test stage behaves exactly as it did before this module
@@ -181,6 +186,17 @@ DISABLE_ENV_VAR = "COORD_CONFIRM_TEST_VERDICT"
181
186
  _FALSEY = frozenset({"0", "false", "no", "off", ""})
182
187
  _TRUTHY = frozenset({"1", "true", "yes", "on"})
183
188
 
189
+ #: #2527: a confirmation subprocess terminated by an external signal (a
190
+ #: coord-agent/coord-serve restart, a manual ``kill``, anything that delivers
191
+ #: a signal rather than letting the command run to completion) — not
192
+ #: :data:`KIND_TIMEOUT` (this module's own deadline) but the same shape from
193
+ #: the branch's point of view: the suite never got a chance to finish, so
194
+ #: nothing was learned about it. `subprocess.run` surfaces this as a negative
195
+ #: ``returncode`` (``-signal.SIGTERM`` == ``-15``) through its normal return
196
+ #: path rather than raising, which is exactly what let it slip past the
197
+ #: existing ``TimeoutExpired`` carve-out and get misread as "ran and failed".
198
+ KIND_SIGNAL = "signal"
199
+
184
200
  #: The only kinds that may overturn a PASS claim: a build or test command that
185
201
  #: ran to completion and returned nonzero. Nothing weaker. See the module
186
202
  #: docstring's fail-direction section — this frozenset IS that safety property.
@@ -188,7 +204,7 @@ REFUTING_KINDS = frozenset({KIND_BUILD, KIND_SUITE})
188
204
 
189
205
  #: Kinds meaning "the check could not reach a verdict". The caller falls back to
190
206
  #: the worker's own claim on any of these, which is pre-#2464 behaviour.
191
- INCONCLUSIVE_KINDS = frozenset({KIND_SETUP, KIND_INFRA, KIND_TIMEOUT})
207
+ INCONCLUSIVE_KINDS = frozenset({KIND_SETUP, KIND_INFRA, KIND_TIMEOUT, KIND_SIGNAL})
192
208
 
193
209
 
194
210
  # ── Per-pass budget (#2464-review) ──────────────────────────────────────────
@@ -477,10 +493,35 @@ def _classify_failure(
477
493
  ) -> ConfirmationResult:
478
494
  """Turn a nonzero build/test exit into the right kind.
479
495
 
480
- Order matters and mirrors :func:`coord.revalidate.revalidate`: infra first
481
- (the suite never ran), then baseline-red (it ran, but the branch is not at
482
- fault), and only what is left over is a genuine refutation.
496
+ Order matters and mirrors :func:`coord.revalidate.revalidate`: signal-kill
497
+ first (#2527 — the command never ran to completion at all, so there is
498
+ nothing left to classify), then infra (the suite never ran), then
499
+ baseline-red (it ran, but the branch is not at fault), and only what is
500
+ left over is a genuine refutation.
483
501
  """
502
+ if returncode < 0:
503
+ # #2527: a negative returncode means `subprocess.run` reports the
504
+ # child was killed BY a signal, not that it ran and exited nonzero —
505
+ # e.g. `-15` for SIGTERM from a `coord-agent`/`coord-serve` restart
506
+ # landing mid-confirmation, or a manual `kill`. Same fail-direction
507
+ # as `subprocess.TimeoutExpired` just above this function's callers:
508
+ # a command that never finished says nothing about the branch, so
509
+ # this must stay inconclusive — never `REFUTING_KINDS` — no matter
510
+ # how "nonzero" the raw exit code looks.
511
+ return ConfirmationResult(
512
+ kind=KIND_SIGNAL,
513
+ reason=(
514
+ f"confirmation {stage} command was killed by signal "
515
+ f"{-returncode} (exit {returncode}) rather than running to "
516
+ "completion — like a timeout, a command that never finished "
517
+ "says nothing about the branch, so this is not a refutation "
518
+ "(#2527)"
519
+ ),
520
+ output=_tail(output),
521
+ command=command,
522
+ returncode=returncode,
523
+ worktree=worktree,
524
+ )
484
525
  infra = is_infrastructure_failure(returncode, output)
485
526
  baseline = not infra and is_baseline_red_failure(returncode, output)
486
527
  if infra:
@@ -780,6 +821,7 @@ __all__ = [
780
821
  "CONFIRM_PASS_BUDGET_SECONDS",
781
822
  "DISABLE_ENV_VAR",
782
823
  "INCONCLUSIVE_KINDS",
824
+ "KIND_SIGNAL",
783
825
  "NOTIFY_BASE_CLIENT_TIMEOUT_SECONDS",
784
826
  "REFUTING_KINDS",
785
827
  "ConfirmationResult",
@@ -36,6 +36,8 @@ Fixture schema (every key optional except ``board``)::
36
36
  "machines": [ {...GET /api/machines entry...} ],
37
37
  "sessions": [ {...GET /api/sessions entry...} ],
38
38
  "drive_queue": [ {...coord.state._decode_drive_queue_row shape...} ],
39
+ "report_catalogue": {"reports": [ {...coord.reports.ReportDef.to_dict()...} ]},
40
+ "report_results": {"issue-activity": {...coord.reports.ReportResult.to_dict()...}},
39
41
  "review_findings": {"rev-1": {"verdict": "approve", "body": "..."}},
40
42
  "diffs": {"work-1": "diff --git ..."},
41
43
  "chat_reply": "canned /api/chat response text",
@@ -60,6 +62,7 @@ from __future__ import annotations
60
62
 
61
63
  import copy
62
64
  import json
65
+ from collections.abc import Mapping
63
66
  from dataclasses import MISSING, asdict, dataclass, field, fields
64
67
  from pathlib import Path
65
68
  from typing import Any
@@ -156,6 +159,12 @@ class FixtureServer:
156
159
  machines_raw: list = field(default_factory=list)
157
160
  sessions_raw: list = field(default_factory=list)
158
161
  drive_queue_raw: list = field(default_factory=list)
162
+ #: #2492 RPT-1: `GET /api/report`'s catalogue. `None` (the default) falls
163
+ #: back to the real `coord.reports.catalogue()` — see `report_catalogue()`.
164
+ report_catalogue_raw: dict | None = None
165
+ #: #2492 RPT-1: seeded `GET /api/report/{id}` results, keyed by report id
166
+ #: — see `report_result()`.
167
+ report_results_raw: dict = field(default_factory=dict)
159
168
  review_findings_raw: dict = field(default_factory=dict)
160
169
  diffs: dict = field(default_factory=dict)
161
170
  chat_reply: str = "fixture mode: the coordinator assistant is not wired up."
@@ -210,6 +219,51 @@ class FixtureServer:
210
219
  rows = [r for r in rows if r.get("repo_name") == repo_name]
211
220
  return rows
212
221
 
222
+ def report_catalogue(self) -> dict[str, Any]:
223
+ """The seeded ``GET /api/report`` catalogue (#2492 RPT-1).
224
+
225
+ Unlike the board/drive-queue, ``coord.reports.catalogue()`` is pure
226
+ in-process metadata (report ids/titles/param definitions) — never a
227
+ DB read — so it is already deterministic without seeding. A fixture
228
+ overrides it only when a test wants a different catalogue than
229
+ production's (e.g. a smaller one for a focused scenario); absent an
230
+ override, this falls back to the real registry so `report_result()`
231
+ below (which validates against seeded results, not the catalogue)
232
+ stays the only place a report fixture is actually required.
233
+ """
234
+ if self.report_catalogue_raw is not None:
235
+ return copy.deepcopy(self.report_catalogue_raw)
236
+ from coord import reports as _reports # noqa: PLC0415
237
+
238
+ return _reports.catalogue()
239
+
240
+ def report_result(
241
+ self, report_id: str, params: Mapping[str, Any] | None = None
242
+ ) -> dict[str, Any]:
243
+ """The seeded ``ReportResult``-shaped dict for *report_id* (#2492 RPT-1).
244
+
245
+ Keyed by report id only — one canned result per id, mirroring how
246
+ ``diffs`` is one canned string per assignment id rather than
247
+ branching on request details. ``params`` is accepted only for
248
+ signature symmetry with ``coord.reports.run_report(report_id,
249
+ params)``; a fixture that needs a param-sensitive variant seeds a
250
+ distinct fixture file per scenario, same as every other accessor
251
+ here.
252
+
253
+ Raises the real :class:`coord.reports.UnknownReportError` for a
254
+ report id with no seeded result, so ``GET /api/report/{id}`` returns
255
+ the byte-identical 404 shape in fixture and live mode.
256
+ """
257
+ from coord import reports as _reports # noqa: PLC0415
258
+
259
+ entry = self.report_results_raw.get(report_id)
260
+ if entry is None:
261
+ raise _reports.UnknownReportError(
262
+ f"unknown report {report_id!r} — known reports: "
263
+ f"{', '.join(sorted(self.report_results_raw))}"
264
+ )
265
+ return copy.deepcopy(entry)
266
+
213
267
  def review_findings(self, assignment_id: str) -> tuple[str, str] | None:
214
268
  """Stand-in for ``coord.state.load_assignment_review_findings``.
215
269
 
@@ -353,6 +407,17 @@ def parse_fixture(raw: Any, *, path: Path | None = None) -> FixtureServer:
353
407
  if not all(isinstance(v, str) for v in diffs.values()):
354
408
  raise FixtureError("fixture 'diffs' values must be strings")
355
409
 
410
+ report_catalogue_raw = raw.get("report_catalogue")
411
+ if report_catalogue_raw is not None and not isinstance(report_catalogue_raw, dict):
412
+ raise FixtureError(
413
+ "fixture 'report_catalogue' must be a mapping (the GET /api/report response shape)"
414
+ )
415
+ report_results_raw = _as_dict(raw.get("report_results"), "report_results")
416
+ if not all(isinstance(v, dict) for v in report_results_raw.values()):
417
+ raise FixtureError(
418
+ "fixture 'report_results' values must be mappings (ReportResult wire shape)"
419
+ )
420
+
356
421
  server = FixtureServer(
357
422
  board_payload=board_payload,
358
423
  merge_queue_raw=_as_list(raw.get("merge_queue"), "merge_queue"),
@@ -360,6 +425,8 @@ def parse_fixture(raw: Any, *, path: Path | None = None) -> FixtureServer:
360
425
  machines_raw=_as_list(raw.get("machines"), "machines"),
361
426
  sessions_raw=_as_list(raw.get("sessions"), "sessions"),
362
427
  drive_queue_raw=_as_list(raw.get("drive_queue"), "drive_queue"),
428
+ report_catalogue_raw=report_catalogue_raw,
429
+ report_results_raw=report_results_raw,
363
430
  review_findings_raw=_as_dict(raw.get("review_findings"), "review_findings"),
364
431
  diffs=diffs,
365
432
  events=_parse_events(raw.get("events")),
@@ -15,7 +15,13 @@ from pathlib import Path
15
15
  import httpx
16
16
  from starlette.applications import Starlette
17
17
  from starlette.requests import Request
18
- from starlette.responses import FileResponse, HTMLResponse, JSONResponse, StreamingResponse
18
+ from starlette.responses import (
19
+ FileResponse,
20
+ HTMLResponse,
21
+ JSONResponse,
22
+ Response,
23
+ StreamingResponse,
24
+ )
19
25
  from starlette.routing import Mount, Route, WebSocketRoute
20
26
  from starlette.staticfiles import StaticFiles
21
27
  from starlette.websockets import WebSocket, WebSocketDisconnect
@@ -449,6 +455,119 @@ def openapi_spec() -> dict:
449
455
  "summary": drive_queue_summary_ref,
450
456
  },
451
457
  }
458
+ # #2492 RPT-1: the report engine's wire types. `dataclass_schema` walks
459
+ # `coord.reports` dataclasses straight (like `DriveQueueSummary` above)
460
+ # for the ones its generic dataclass -> JSON-Schema walk actually
461
+ # supports (`RowIdentity`/`ColumnMeta`/`ChartSeries` have no `tuple[...]`
462
+ # or `Callable` fields). `ReportParam`/`ReportDef`/`ChartSpec`/
463
+ # `ReportResult` do — `ReportParam.validate`/`ReportDef.run` are
464
+ # deliberately non-wire (excluded from their own `to_dict()`), and
465
+ # `coord/openapi.py:json_schema_for` has no mapping for `Callable` or
466
+ # `tuple[...]` at all (`ChartSpec.series`, `ReportResult.window`,
467
+ # `ReportDef.params`, `ReportParam.choices` are all tuples on the
468
+ # dataclass but lists on the wire) — so those four are hand-built here,
469
+ # matching each type's own `to_dict()` field-for-field, the same way
470
+ # `board_response`/`session_response` below are hand-built rather than
471
+ # derived. Registered as named `components` refs either way (not inlined
472
+ # like `board_response`) because these are reused across both report
473
+ # routes and are what #1550's TS codegen (`scripts/codegen.py`) emits an
474
+ # `interface` for.
475
+ from coord.reports import ChartSeries, ColumnMeta, RowIdentity # noqa: PLC0415 — mirrors serve_app.py's lazy `reports` import
476
+
477
+ row_identity_ref = dataclass_schema(RowIdentity, components)
478
+ column_meta_ref = dataclass_schema(ColumnMeta, components)
479
+ chart_series_ref = dataclass_schema(ChartSeries, components)
480
+ components["ReportParam"] = {
481
+ "type": "object",
482
+ "properties": {
483
+ "id": {"type": "string"},
484
+ "label": {"type": "string"},
485
+ "kind": {"type": "string", "description": "choice|text"},
486
+ "choices": {"type": "array", "items": {"type": "string"}},
487
+ "default": {"type": "string"},
488
+ "help": {"type": "string"},
489
+ "free_form": {
490
+ "type": "boolean",
491
+ "description": "choices are presets, not a whitelist",
492
+ },
493
+ },
494
+ "required": ["id", "label"],
495
+ }
496
+ report_param_ref = {"$ref": "#/components/schemas/ReportParam"}
497
+ components["ReportDef"] = {
498
+ "type": "object",
499
+ "properties": {
500
+ "id": {"type": "string"},
501
+ "title": {"type": "string"},
502
+ "description": {"type": "string"},
503
+ "params": {"type": "array", "items": report_param_ref},
504
+ "row_identity": {**row_identity_ref, "nullable": True},
505
+ },
506
+ "required": ["id", "title", "description", "params"],
507
+ }
508
+ report_def_ref = {"$ref": "#/components/schemas/ReportDef"}
509
+ components["ChartSpec"] = {
510
+ "type": "object",
511
+ "properties": {
512
+ "kind": {
513
+ "type": "string",
514
+ "description": "open vocabulary — bar|line|sparkline today",
515
+ },
516
+ "series": {"type": "array", "items": chart_series_ref},
517
+ "x": {"type": "string", "nullable": True},
518
+ "group_by": {"type": "string", "nullable": True},
519
+ "stacked": {"type": "boolean"},
520
+ "title": {"type": "string"},
521
+ "y_label": {"type": "string"},
522
+ },
523
+ "required": ["kind", "series"],
524
+ }
525
+ chart_spec_ref = {"$ref": "#/components/schemas/ChartSpec"}
526
+ components["ReportResult"] = {
527
+ "type": "object",
528
+ "properties": {
529
+ "report_id": {"type": "string"},
530
+ "generated_at": {"type": "number"},
531
+ "window": {"type": "array", "items": {"type": "number"}},
532
+ "columns": {"type": "array", "items": {"type": "string"}},
533
+ "column_meta": {"type": "array", "items": column_meta_ref},
534
+ "rows": {"type": "array", "items": {"type": "object"}},
535
+ "notes": {"type": "array", "items": {"type": "string"}},
536
+ "totals": {
537
+ "type": "object",
538
+ "nullable": True,
539
+ "description": (
540
+ "#1763: optional grand-total row keyed by the same "
541
+ "column ids as `rows`. `null` for reports with no "
542
+ "meaningful sum."
543
+ ),
544
+ },
545
+ "chart": {
546
+ **chart_spec_ref,
547
+ "nullable": True,
548
+ "description": (
549
+ "#2271: optional chart declaration — carries no numbers "
550
+ "of its own, the renderer reads the same `rows` the "
551
+ "table does."
552
+ ),
553
+ },
554
+ },
555
+ "required": [
556
+ "report_id",
557
+ "generated_at",
558
+ "window",
559
+ "columns",
560
+ "column_meta",
561
+ "rows",
562
+ "notes",
563
+ ],
564
+ }
565
+ report_result_ref = {"$ref": "#/components/schemas/ReportResult"}
566
+ report_catalogue_response = {
567
+ "type": "object",
568
+ "properties": {"reports": {"type": "array", "items": report_def_ref}},
569
+ "required": ["reports"],
570
+ }
452
571
  board_response = {
453
572
  "type": "object",
454
573
  "properties": {
@@ -580,6 +699,70 @@ def openapi_spec() -> dict:
580
699
  },
581
700
  }
582
701
  },
702
+ "/api/report": {
703
+ "get": {
704
+ "summary": (
705
+ "#2492: the report catalogue — ids, titles, descriptions "
706
+ "and full parameter metadata (kind/choices/default), so "
707
+ "a client builds its parameter form from here rather "
708
+ "than hardcoding it"
709
+ ),
710
+ "responses": {
711
+ "200": {
712
+ "description": "OK",
713
+ "content": {
714
+ "application/json": {"schema": report_catalogue_response}
715
+ },
716
+ }
717
+ },
718
+ }
719
+ },
720
+ "/api/report/{report_id}": {
721
+ "get": {
722
+ "summary": (
723
+ "#2492: run a report and return its ReportResult. "
724
+ "Read-only — no board write, no reconcile side effect. "
725
+ "Query parameters are the report's own params (see "
726
+ "GET /api/report)"
727
+ ),
728
+ "parameters": [
729
+ _dashboard_path_param("report_id", "report id from the catalogue"),
730
+ {
731
+ "name": "format",
732
+ "in": "query",
733
+ "required": False,
734
+ "schema": {"type": "string", "enum": ["json", "csv"]},
735
+ "description": (
736
+ "#1765: response encoding. Absent/`json` returns "
737
+ "the ReportResult unchanged; `csv` returns "
738
+ "text/csv (raw values, `#`-prefixed notes) with "
739
+ "a Content-Disposition filename."
740
+ ),
741
+ },
742
+ ],
743
+ "responses": {
744
+ "200": {
745
+ "description": "OK",
746
+ "content": {
747
+ "application/json": {"schema": report_result_ref},
748
+ "text/csv": {
749
+ "schema": {"type": "string"},
750
+ "description": (
751
+ "`?format=csv`. Header row labelled from "
752
+ "`column_meta`, one row per `rows` entry "
753
+ "with raw values, `notes` as leading `#` "
754
+ "lines."
755
+ ),
756
+ },
757
+ },
758
+ },
759
+ "400": {
760
+ "description": "Unknown parameter / bad parameter value / unknown format"
761
+ },
762
+ "404": {"description": "Unknown report id"},
763
+ },
764
+ }
765
+ },
583
766
  "/api/approve": {
584
767
  "post": {
585
768
  "summary": "Dispatch one or more proposals by id",
@@ -923,6 +1106,22 @@ def build_app(
923
1106
  }
924
1107
  raise ValueError(f"unknown drive-queue action: {action!r}")
925
1108
 
1109
+ def _report_catalogue() -> dict:
1110
+ """The report engine's catalogue — seeded fixture or the real
1111
+ registry (#2492).
1112
+
1113
+ Unlike ``_read_drive_queue()``, there is no daemon-vs-local split to
1114
+ resolve here: ``coord.reports.catalogue()`` is pure in-process
1115
+ metadata (report ids/titles/param definitions), never a DB read, so
1116
+ live mode calls it directly — same as ``coord/serve_app.py``'s own
1117
+ ``get_report_catalogue``.
1118
+ """
1119
+ if _fixture is not None:
1120
+ return _fixture.report_catalogue()
1121
+ from coord import reports as _reports # noqa: PLC0415
1122
+
1123
+ return _reports.catalogue()
1124
+
926
1125
  # ── Real-time event bus ────────────────────────────────────────────────
927
1126
  event_source = EventSource()
928
1127
 
@@ -1395,6 +1594,73 @@ def build_app(
1395
1594
  )
1396
1595
  return JSONResponse({"ok": True})
1397
1596
 
1597
+ async def api_report_catalogue(request: Request) -> Response: # noqa: ARG001 — Starlette handler signature
1598
+ """GET /api/report — the report catalogue (#2492).
1599
+
1600
+ Mirrors ``coord/serve_app.py``'s ``get_report_catalogue`` almost
1601
+ verbatim, just routed through ``_report_catalogue()`` — the
1602
+ fixture-vs-live indirection every handler in this file goes through
1603
+ (see ``_read_board()``/``_read_drive_queue()``).
1604
+ """
1605
+ return JSONResponse(_report_catalogue())
1606
+
1607
+ async def api_report_run(request: Request) -> Response:
1608
+ """GET /api/report/{report_id}?... — run a report and return its
1609
+ ReportResult (#2492).
1610
+
1611
+ Mirrors ``coord/serve_app.py``'s ``get_report`` almost verbatim:
1612
+ ``format`` is popped before param validation (a rendering choice,
1613
+ not a report parameter — #1765), ``UnknownReportError`` -> 404,
1614
+ ``ReportError`` -> 400, anything else -> 503. ``run_report`` reads
1615
+ local state directly (audit_log/issues/assignments) same as the
1616
+ daemon does today, so live mode needs no board-daemon proxy either
1617
+ — only fixture mode swaps the source, via
1618
+ ``_fixture.report_result()``.
1619
+ """
1620
+ from starlette.concurrency import run_in_threadpool # noqa: PLC0415
1621
+
1622
+ from coord import reports as _reports # noqa: PLC0415
1623
+
1624
+ report_id = request.path_params["report_id"]
1625
+ params = dict(request.query_params)
1626
+ # #1765: `format` is a *rendering* choice, not a report parameter —
1627
+ # pop it before validation or `resolve_params` rejects it as an
1628
+ # unknown parameter.
1629
+ fmt = (params.pop("format", "") or "json").strip().lower()
1630
+ if fmt not in ("json", "csv"):
1631
+ return JSONResponse(
1632
+ {"error": f"unknown format {fmt!r} — allowed values: json, csv"},
1633
+ status_code=400,
1634
+ )
1635
+ try:
1636
+ if _fixture is not None:
1637
+ result = _fixture.report_result(report_id, params)
1638
+ else:
1639
+ result = await run_in_threadpool(_reports.run_report, report_id, params)
1640
+ except _reports.UnknownReportError as e:
1641
+ return JSONResponse({"error": str(e)}, status_code=404)
1642
+ except _reports.ReportError as e:
1643
+ return JSONResponse({"error": str(e)}, status_code=400)
1644
+ except Exception as e: # noqa: BLE001 — surface a clean 503 rather than a stack trace
1645
+ return JSONResponse(
1646
+ {"error": "report run failed", "detail": str(e)}, status_code=503
1647
+ )
1648
+ if fmt == "csv":
1649
+ # Same serializer the CLI calls, so `coord report run --format
1650
+ # csv` and this route emit identical bytes for identical params.
1651
+ return Response(
1652
+ _reports.result_to_csv(result),
1653
+ media_type="text/csv; charset=utf-8",
1654
+ headers={
1655
+ "Content-Disposition": (
1656
+ f'attachment; filename="{_reports.csv_filename(result)}"'
1657
+ )
1658
+ },
1659
+ )
1660
+ return JSONResponse(
1661
+ result.to_dict() if isinstance(result, _reports.ReportResult) else result
1662
+ )
1663
+
1398
1664
  async def api_approve(request: Request) -> JSONResponse:
1399
1665
  from coord.dispatch import dispatch, post_briefing, compute_do_not_touch
1400
1666
  from coord.state import (
@@ -2316,6 +2582,8 @@ def build_app(
2316
2582
  Route("/api/proposals", api_proposals, methods=["GET"]),
2317
2583
  Route("/api/drive-queue", api_drive_queue, methods=["GET"]),
2318
2584
  Route("/api/drive-queue/action", api_drive_queue_action, methods=["POST"]),
2585
+ Route("/api/report", api_report_catalogue, methods=["GET"]),
2586
+ Route("/api/report/{report_id}", api_report_run, methods=["GET"]),
2319
2587
  Route("/api/approve", api_approve, methods=["POST"]),
2320
2588
  Route("/api/reject", api_reject, methods=["POST"]),
2321
2589
  Route("/api/diff/{id}", api_diff, methods=["GET"]),