code-coordinator 0.5.278__tar.gz → 0.5.280__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 (885) hide show
  1. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/.github/workflows/publish.yml +55 -50
  2. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/PKG-INFO +1 -1
  3. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/code_coordinator.egg-info/PKG-INFO +1 -1
  4. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/code_coordinator.egg-info/SOURCES.txt +1 -1
  5. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/code_coordinator.egg-info/scm_file_list.json +1 -1
  6. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/code_coordinator.egg-info/scm_version.json +2 -2
  7. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/release.py +55 -11
  8. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/tui.py +168 -38
  9. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/decomposition_chat.py +100 -9
  10. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/deploy_lane_facts.py +13 -0
  11. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/release_propagate.py +112 -2
  12. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/release_verify.py +23 -11
  13. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/tui_release.py +100 -24
  14. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/next_release_tag.py +86 -59
  15. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_auto_release_publish_2035.py +11 -6
  16. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_release_propagate.py +91 -0
  17. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_tui_update.py +273 -50
  18. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_decomposition_chat.py +121 -11
  19. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_next_release_tag.py +49 -34
  20. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_release_propagate.py +102 -0
  21. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_release_unified_1242.py +143 -76
  22. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_release_verify.py +73 -10
  23. code_coordinator-0.5.280/tui/.github/workflows/release-tui.yml +327 -0
  24. code_coordinator-0.5.278/.github/workflows/release-tui.yml +0 -239
  25. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/.claude/commands/board.md +0 -0
  26. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/.claude/commands/complete-session.md +0 -0
  27. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/.claude/commands/coordinator.md +0 -0
  28. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/.githooks/_lib.sh +0 -0
  29. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/.githooks/post-checkout +0 -0
  30. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/.githooks/post-commit +0 -0
  31. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/.githooks/post-merge +0 -0
  32. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  33. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/.github/coord-ci-acceptance.yml +0 -0
  34. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/.github/workflows/auto-release.yml +0 -0
  35. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/.github/workflows/cargo-test.yml +0 -0
  36. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/.github/workflows/test.yml +0 -0
  37. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/.gitignore +0 -0
  38. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/CLAUDE.md +0 -0
  39. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/GOAL.md +0 -0
  40. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/LICENSE +0 -0
  41. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/MANIFEST.in +0 -0
  42. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/README.md +0 -0
  43. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/code_coordinator.egg-info/dependency_links.txt +0 -0
  44. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/code_coordinator.egg-info/entry_points.txt +0 -0
  45. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/code_coordinator.egg-info/requires.txt +0 -0
  46. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/code_coordinator.egg-info/top_level.txt +0 -0
  47. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/__init__.py +0 -0
  48. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/_board_mapping.py +0 -0
  49. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/acceptance.py +0 -0
  50. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/acceptance_drivers.py +0 -0
  51. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/agent.py +0 -0
  52. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/agent_app.py +0 -0
  53. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/agent_update.py +0 -0
  54. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/agents/opencode/.gitignore +0 -0
  55. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/agents/opencode/agents/work.md +0 -0
  56. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/agents/opencode/routing.jsonc +0 -0
  57. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/approved_work.py +0 -0
  58. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/audit.py +0 -0
  59. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/auto_loop.py +0 -0
  60. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/block_log.py +0 -0
  61. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/board_bool_guard.py +0 -0
  62. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/board_schema.py +0 -0
  63. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/board_service.py +0 -0
  64. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/board_wire.py +0 -0
  65. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/brain.py +0 -0
  66. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/branch_model.py +0 -0
  67. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/bug_intake.py +0 -0
  68. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/cargo_cache.py +0 -0
  69. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/ci_fix.py +0 -0
  70. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/ci_github.py +0 -0
  71. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/ci_gitlab.py +0 -0
  72. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/ci_store.py +0 -0
  73. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/claim.py +0 -0
  74. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/cli.py +0 -0
  75. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/client.py +0 -0
  76. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/__init__.py +0 -0
  77. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/_common.py +0 -0
  78. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/acceptance.py +0 -0
  79. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/agent_ops.py +0 -0
  80. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/audit.py +0 -0
  81. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/chat.py +0 -0
  82. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/dispatch.py +0 -0
  83. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/dispatch_workers.py +0 -0
  84. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/drive.py +0 -0
  85. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/drive_queue.py +0 -0
  86. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/gate_a.py +0 -0
  87. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/gates.py +0 -0
  88. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/issues.py +0 -0
  89. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/lifecycle.py +0 -0
  90. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/merge.py +0 -0
  91. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/milestone.py +0 -0
  92. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/plan_followup.py +0 -0
  93. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/plans.py +0 -0
  94. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/portal.py +0 -0
  95. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/pr.py +0 -0
  96. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/repo.py +0 -0
  97. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/report.py +0 -0
  98. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/review.py +0 -0
  99. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/scorecard.py +0 -0
  100. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/sessions.py +0 -0
  101. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/setup.py +0 -0
  102. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/status.py +0 -0
  103. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/store_migrate.py +0 -0
  104. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/terminal.py +0 -0
  105. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/commands/test_gate.py +0 -0
  106. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/comments.py +0 -0
  107. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/config.py +0 -0
  108. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/config_reload.py +0 -0
  109. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/confirm_test.py +0 -0
  110. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/conflict_fix.py +0 -0
  111. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/dao.py +0 -0
  112. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/dashboard/__init__.py +0 -0
  113. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/dashboard/fixture.py +0 -0
  114. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/dashboard/index.html +0 -0
  115. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/dashboard/server.py +0 -0
  116. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/dashboard/terminal.py +0 -0
  117. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/db.py +0 -0
  118. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/dead_end.py +0 -0
  119. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/README.md +0 -0
  120. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-agent.service +0 -0
  121. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-db-backup.service +0 -0
  122. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-db-backup.sh +0 -0
  123. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-db-backup.timer +0 -0
  124. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-drive-queue.service +0 -0
  125. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-drive-queue.timer +0 -0
  126. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-failure-notify.service +0 -0
  127. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-fleet-watchdog.service +0 -0
  128. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  129. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-notify.service +0 -0
  130. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-notify.timer +0 -0
  131. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-release-propagate.service +0 -0
  132. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-release-propagate.timer +0 -0
  133. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-release-window.service +0 -0
  134. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-release-window.timer +0 -0
  135. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-serve.service +0 -0
  136. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-web-dist-build.service +0 -0
  137. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-web-dist-build.timer +0 -0
  138. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy/coord-web.service +0 -0
  139. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy_manifest.py +0 -0
  140. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deploy_units.py +0 -0
  141. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/deps.py +0 -0
  142. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/diagnose.py +0 -0
  143. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/dispatch.py +0 -0
  144. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/dist_name.py +0 -0
  145. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/drive.py +0 -0
  146. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/drive_queue.py +0 -0
  147. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/drive_state.py +0 -0
  148. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/events.py +0 -0
  149. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/failure_class.py +0 -0
  150. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/filelock.py +0 -0
  151. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/fleet_config_health.py +0 -0
  152. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/forge_availability.py +0 -0
  153. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/freshness.py +0 -0
  154. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/gate_a.py +0 -0
  155. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/gate_b.py +0 -0
  156. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/gate_snapshot.py +0 -0
  157. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/gates.py +0 -0
  158. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/github_ops.py +0 -0
  159. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/github_throttle.py +0 -0
  160. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/goal.py +0 -0
  161. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/graph_health.py +0 -0
  162. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/__init__.py +0 -0
  163. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/aggregate.py +0 -0
  164. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/__init__.py +0 -0
  165. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/agent_install.py +0 -0
  166. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/cargo_targets.py +0 -0
  167. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/claude_binary.py +0 -0
  168. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/coord_web_ci_pin.py +0 -0
  169. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/disk.py +0 -0
  170. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/fleet_board.py +0 -0
  171. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  172. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/fleet_phantom.py +0 -0
  173. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/fleet_unit_drift.py +0 -0
  174. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/graph.py +0 -0
  175. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/graphify_cli.py +0 -0
  176. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/index_lock.py +0 -0
  177. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/issues_sync_staleness.py +0 -0
  178. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/plan_usage.py +0 -0
  179. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/release_cordon.py +0 -0
  180. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/repo_state.py +0 -0
  181. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/spawned_coord.py +0 -0
  182. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/stalled_pipeline.py +0 -0
  183. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/timer_active.py +0 -0
  184. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/toolchain.py +0 -0
  185. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/unit_drift.py +0 -0
  186. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/unit_enablement.py +0 -0
  187. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/checks/worktrees.py +0 -0
  188. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/cli.py +0 -0
  189. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/context.py +0 -0
  190. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/fleet_snapshot.py +0 -0
  191. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/models.py +0 -0
  192. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/pypi.py +0 -0
  193. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/registry.py +0 -0
  194. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/render.py +0 -0
  195. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/health/units.py +0 -0
  196. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/hooks.py +0 -0
  197. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/housekeeping.py +0 -0
  198. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/interactive.py +0 -0
  199. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/issue_store.py +0 -0
  200. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/issues_sync_status.py +0 -0
  201. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/liveness_auditor.py +0 -0
  202. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/machine_pause.py +0 -0
  203. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/merge_queue.py +0 -0
  204. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/milestone_chat.py +0 -0
  205. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/milestone_dispatch.py +0 -0
  206. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/milestone_gate.py +0 -0
  207. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/milestone_order.py +0 -0
  208. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/mock_author.py +0 -0
  209. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/models.py +0 -0
  210. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/network.py +0 -0
  211. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/new_issue_chat.py +0 -0
  212. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/notifier/__init__.py +0 -0
  213. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/notifier/baseline.py +0 -0
  214. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/notifier/cli.py +0 -0
  215. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/notifier/collect.py +0 -0
  216. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/notifier/digest.py +0 -0
  217. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/notifier/models.py +0 -0
  218. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/notifier/predicate.py +0 -0
  219. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/notifier/service.py +0 -0
  220. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/notifier/store.py +0 -0
  221. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/notifier/transport.py +0 -0
  222. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/notify.py +0 -0
  223. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/openapi.py +0 -0
  224. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/overlap_fence.py +0 -0
  225. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/overlap_predict.py +0 -0
  226. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/parentage.py +0 -0
  227. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/parentage_github.py +0 -0
  228. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/pipeline.py +0 -0
  229. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/plan_parser.py +0 -0
  230. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/plans.py +0 -0
  231. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/platform_paths.py +0 -0
  232. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/portal_bridge.py +0 -0
  233. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/portal_store.py +0 -0
  234. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/portal_sync.py +0 -0
  235. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/pr_body_lint.py +0 -0
  236. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/prereqs.py +0 -0
  237. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/progress.py +0 -0
  238. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/providers/__init__.py +0 -0
  239. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/providers/base.py +0 -0
  240. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/providers/claude.py +0 -0
  241. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/providers/claude_pty.py +0 -0
  242. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/providers/opencode.py +0 -0
  243. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/queue_diagnose.py +0 -0
  244. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/reconcile.py +0 -0
  245. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/reconcile_tick.py +0 -0
  246. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/refine_chat.py +0 -0
  247. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/release_cordon.py +0 -0
  248. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/release_window.py +0 -0
  249. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/repo_edit.py +0 -0
  250. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/repo_onboard.py +0 -0
  251. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/reports.py +0 -0
  252. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/rest_schema.py +0 -0
  253. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/revalidate.py +0 -0
  254. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/review.py +0 -0
  255. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/scorecard.py +0 -0
  256. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/self_health.py +0 -0
  257. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/serve_app.py +0 -0
  258. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  259. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  260. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  261. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  262. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  263. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/skills/portal-followup/SKILL.md +0 -0
  264. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/skills/release-now/SKILL.md +0 -0
  265. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  266. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  267. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/skills/update-issue/SKILL.md +0 -0
  268. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/smoke.py +0 -0
  269. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/spend_ceiling.py +0 -0
  270. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/split_work.py +0 -0
  271. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/sql.py +0 -0
  272. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/stage_projection.py +0 -0
  273. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/state.py +0 -0
  274. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/store_migrate.py +0 -0
  275. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/test_author.py +0 -0
  276. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/test_chat.py +0 -0
  277. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/test_orchestrator.py +0 -0
  278. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/test_report.py +0 -0
  279. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/usage.py +0 -0
  280. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/usage_limits.py +0 -0
  281. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/usage_rollup.py +0 -0
  282. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coord/worker_events.py +0 -0
  283. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/coordinator.example.yml +0 -0
  284. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-agent.service +0 -0
  285. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-db-backup.service +0 -0
  286. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-db-backup.sh +0 -0
  287. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-db-backup.timer +0 -0
  288. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-drive-queue.service +0 -0
  289. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-drive-queue.timer +0 -0
  290. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-failure-notify.service +0 -0
  291. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-failure-notify.sh +0 -0
  292. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-fleet-watchdog.service +0 -0
  293. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-fleet-watchdog.timer +0 -0
  294. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-notify.service +0 -0
  295. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-notify.timer +0 -0
  296. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-release-propagate.service +0 -0
  297. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-release-propagate.timer +0 -0
  298. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-release-window.service +0 -0
  299. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-release-window.timer +0 -0
  300. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-serve.service +0 -0
  301. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-web-dist-build.service +0 -0
  302. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-web-dist-build.sh +0 -0
  303. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-web-dist-build.timer +0 -0
  304. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-web-rollback.sh +0 -0
  305. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/coord-web.service +0 -0
  306. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/deploy/node-shim.sh +0 -0
  307. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  308. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/ADR_COORD_WEB_CI.md +0 -0
  309. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/ADR_COORD_WEB_DIST.md +0 -0
  310. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/AGENT_OPERATIONS.md +0 -0
  311. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/ARCHITECTURE.md +0 -0
  312. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/ARCH_SECURITY_GATES.md +0 -0
  313. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/COCKPIT.md +0 -0
  314. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/CONTROL_CENTER.md +0 -0
  315. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/COST_DISCIPLINE.md +0 -0
  316. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/CROSS_PLATFORM.md +0 -0
  317. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/CUSTOMER_FACING_APPS.md +0 -0
  318. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/CUSTOMER_PORTAL.md +0 -0
  319. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/DRIVE_QUEUE.md +0 -0
  320. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/EPHEMERAL_WORKERS.md +0 -0
  321. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/FORGE_MIGRATION.md +0 -0
  322. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/GRAPHIFY_SETUP.md +0 -0
  323. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/ISSUE_GUIDANCE.md +0 -0
  324. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/MAC_MINI.md +0 -0
  325. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  326. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/NOTIFIER.md +0 -0
  327. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/OPENCODE_VERIFICATION.md +0 -0
  328. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/OPERATING_GOTCHAS.md +0 -0
  329. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/OPERATOR_GUIDES.md +0 -0
  330. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/ORACLE_LOOP.md +0 -0
  331. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/PHONE_WEBAPP.md +0 -0
  332. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/PIPELINE_V2.md +0 -0
  333. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/PLATFORM_EVOLUTION.md +0 -0
  334. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/SECOND_BACKEND.md +0 -0
  335. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/STORE_SERVICE.md +0 -0
  336. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  337. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/WEB_CONTROL_CENTER.md +0 -0
  338. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/WSL_WINDOWS_WORKER.md +0 -0
  339. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/mocks/web/README.md +0 -0
  340. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/mocks/web/_tokens.css +0 -0
  341. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/mocks/web/issue-detail.html +0 -0
  342. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/mocks/web/pipeline-narrow.html +0 -0
  343. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/docs/mocks/web/pipeline-wide.html +0 -0
  344. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/graphify-out/.gitignore +0 -0
  345. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/install-agent.sh +0 -0
  346. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/pyproject.toml +0 -0
  347. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/audit_review_verdict_overrides.py +0 -0
  348. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  349. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/azure-workers/build-worker-image.sh +0 -0
  350. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/azure-workers/coordinator-machine.py +0 -0
  351. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/azure-workers/epic-down.sh +0 -0
  352. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/azure-workers/epic-up.sh +0 -0
  353. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/azure-workers/preflight.sh +0 -0
  354. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/azure-workers/provision-worker.sh +0 -0
  355. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  356. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  357. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/azure-workers/verify-github-token.sh +0 -0
  358. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/check_gh_argv_containment.py +0 -0
  359. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/codegen.py +0 -0
  360. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/coord-test-runner.sh +0 -0
  361. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/coord-venv-rollback.sh +0 -0
  362. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/drive-batch.sh +0 -0
  363. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/fleet_watchdog.py +0 -0
  364. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/gen_board_fixture.py +0 -0
  365. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/gen_mock_index.py +0 -0
  366. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/run_tests_in_populated_home.sh +0 -0
  367. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/run_tests_without_gh.sh +0 -0
  368. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/smoke_437_interactive.py +0 -0
  369. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/verify_878_review_capture.py +0 -0
  370. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/verify_release_published.py +0 -0
  371. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/scripts/verify_release_wheel.py +0 -0
  372. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/setup.cfg +0 -0
  373. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/SMOKE_SET.md +0 -0
  374. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/__init__.py +0 -0
  375. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/acceptance/ms-37/conftest.py +0 -0
  376. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/acceptance/ms-37/contract.md +0 -0
  377. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/acceptance/ms-37/manifest.yml +0 -0
  378. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  379. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  380. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/acceptance/ms-51/contract.md +0 -0
  381. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  382. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  383. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/acceptance/ms-51/manifest.yml +0 -0
  384. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  385. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/acceptance/ms-51/tsconfig.json +0 -0
  386. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  387. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/backends.py +0 -0
  388. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/conftest.py +0 -0
  389. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/board-pipeline-basic.json +0 -0
  390. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  391. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  392. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  393. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  394. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/playwright/all_pass.json +0 -0
  395. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  396. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/playwright/mixed_fail.json +0 -0
  397. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  398. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  399. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/playwright/skip.json +0 -0
  400. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/playwright/truncated.json +0 -0
  401. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  402. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  403. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  404. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  405. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  406. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  407. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  408. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  409. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_acceptance.py +0 -0
  410. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_acceptance_drivers.py +0 -0
  411. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent.py +0 -0
  412. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_api_error.py +0 -0
  413. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_app.py +0 -0
  414. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_branch_base.py +0 -0
  415. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_branch_capture.py +0 -0
  416. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_config_free_1712.py +0 -0
  417. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_deploy_units_endpoint.py +0 -0
  418. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_dirty_worktree.py +0 -0
  419. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  420. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_graph_self_heal.py +0 -0
  421. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_health_h3.py +0 -0
  422. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_idle_restart.py +0 -0
  423. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_push_failure.py +0 -0
  424. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_reap.py +0 -0
  425. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_repos_and_pull.py +0 -0
  426. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_restart_services_endpoint.py +0 -0
  427. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_skills_self_heal.py +0 -0
  428. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_startup_diagnostics.py +0 -0
  429. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_update.py +0 -0
  430. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_update_bluegreen.py +0 -0
  431. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_usage_limit.py +0 -0
  432. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_agent_zero_commit.py +0 -0
  433. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_ambient_home_isolation.py +0 -0
  434. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_approve_dependency_busy_2804.py +0 -0
  435. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_approve_reject_plan.py +0 -0
  436. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_approve_usage_gate.py +0 -0
  437. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_approved_work_2532.py +0 -0
  438. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_assignment_already_recorded_daemon.py +0 -0
  439. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_audit_log.py +0 -0
  440. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_audit_outcome.py +0 -0
  441. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_audit_query.py +0 -0
  442. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_auto_loop.py +0 -0
  443. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_backend_selection.py +0 -0
  444. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_base_checkout_restore.py +0 -0
  445. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_block_log.py +0 -0
  446. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_board_cap_762.py +0 -0
  447. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_board_fixture.py +0 -0
  448. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_board_read_path.py +0 -0
  449. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_board_schema.py +0 -0
  450. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_board_service.py +0 -0
  451. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_board_state.py +0 -0
  452. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_board_wire.py +0 -0
  453. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_brain.py +0 -0
  454. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_branch_model.py +0 -0
  455. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_bug_intake.py +0 -0
  456. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_build_worker_image_env_update.py +0 -0
  457. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cargo_cache.py +0 -0
  458. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_check_gh_argv_containment.py +0 -0
  459. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_ci_acceptance_gate_1950.py +0 -0
  460. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_ci_fix.py +0 -0
  461. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_ci_gitlab.py +0 -0
  462. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_ci_parity_2091.py +0 -0
  463. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_ci_store.py +0 -0
  464. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_claim.py +0 -0
  465. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_claude_md_budget.py +0 -0
  466. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_acceptance.py +0 -0
  467. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_assign.py +0 -0
  468. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  469. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_assign_interactive_remote.py +0 -0
  470. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_assign_provider.py +0 -0
  471. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  472. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_audit.py +0 -0
  473. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_chat_continue.py +0 -0
  474. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_decide.py +0 -0
  475. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_diagnose_config_provenance.py +0 -0
  476. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_diagnose_forge_availability.py +0 -0
  477. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_diagnose_graph.py +0 -0
  478. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_diagnose_self.py +0 -0
  479. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_doctor.py +0 -0
  480. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_doctor_config_free_1801.py +0 -0
  481. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  482. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_drive.py +0 -0
  483. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_drive_queue.py +0 -0
  484. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_escalate.py +0 -0
  485. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_fix_headless_review.py +0 -0
  486. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_gate_a.py +0 -0
  487. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_install_drift.py +0 -0
  488. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_install_skills.py +0 -0
  489. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_issue_comment.py +0 -0
  490. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_issue_create_label.py +0 -0
  491. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_issue_reopen.py +0 -0
  492. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_issue_view_list.py +0 -0
  493. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_merge.py +0 -0
  494. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_milestone_assign.py +0 -0
  495. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_milestone_capture.py +0 -0
  496. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_milestone_chat_add_child.py +0 -0
  497. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_milestone_dispatch.py +0 -0
  498. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_milestone_gate_b.py +0 -0
  499. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_milestone_gate_c.py +0 -0
  500. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_milestone_order.py +0 -0
  501. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  502. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_milestone_ship.py +0 -0
  503. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_network.py +0 -0
  504. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_new_issue_chat.py +0 -0
  505. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_plans.py +0 -0
  506. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_portal.py +0 -0
  507. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_pr.py +0 -0
  508. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_pull_artifact.py +0 -0
  509. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_queue.py +0 -0
  510. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_reattach_sessions.py +0 -0
  511. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_refine_board.py +0 -0
  512. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_release_preflight.py +0 -0
  513. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_release_window.py +0 -0
  514. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_repo_2220.py +0 -0
  515. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  516. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_scorecard.py +0 -0
  517. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_set_review_findings.py +0 -0
  518. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_status_advisory_terminal.py +0 -0
  519. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_status_contested_tag.py +0 -0
  520. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_status_merge_queue.py +0 -0
  521. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_status_provider.py +0 -0
  522. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_status_review_finalizing.py +0 -0
  523. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_status_test_failed_tag.py +0 -0
  524. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_status_usage_limit.py +0 -0
  525. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_sync_comments_873.py +0 -0
  526. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_test_plan.py +0 -0
  527. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_track.py +0 -0
  528. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cli_wait.py +0 -0
  529. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_client_base_install.py +0 -0
  530. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_commands_common.py +0 -0
  531. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_comments.py +0 -0
  532. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_completion_summary.py +0 -0
  533. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_config.py +0 -0
  534. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_config_acceptance.py +0 -0
  535. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_config_audit.py +0 -0
  536. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_config_pricing.py +0 -0
  537. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  538. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_config_usage_gate.py +0 -0
  539. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_confirm_test.py +0 -0
  540. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_conflict_fix.py +0 -0
  541. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_conflict_fix_semantic.py +0 -0
  542. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  543. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_coord_test.py +0 -0
  544. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_coord_test_runner_baseline.py +0 -0
  545. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_coord_test_runner_populated_home.py +0 -0
  546. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_coord_test_runner_routing.py +0 -0
  547. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_coord_test_runner_toolchain.py +0 -0
  548. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_coord_uat.py +0 -0
  549. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_coord_web_sse_restart_live.py +0 -0
  550. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_coordinator_machine.py +0 -0
  551. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_cross_platform_imports.py +0 -0
  552. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_dao.py +0 -0
  553. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_dashboard.py +0 -0
  554. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_dashboard_fixture.py +0 -0
  555. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_dashboard_terminal.py +0 -0
  556. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_dashboard_terminal_live.py +0 -0
  557. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_db.py +0 -0
  558. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_dead_end.py +0 -0
  559. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_deploy_coord_db_backup.py +0 -0
  560. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_deploy_coord_web_dist.py +0 -0
  561. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_deploy_coord_web_rollback.py +0 -0
  562. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_deploy_drive_queue_unit.py +0 -0
  563. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_deploy_failure_notify_unit.py +0 -0
  564. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_deploy_manifest.py +0 -0
  565. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_deploy_notify_unit.py +0 -0
  566. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_deploy_units_lane.py +0 -0
  567. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_deploy_web_unit.py +0 -0
  568. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_deps.py +0 -0
  569. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_diagnose.py +0 -0
  570. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_dispatch.py +0 -0
  571. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_dispatch_target_validation.py +0 -0
  572. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_dist_name.py +0 -0
  573. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_done_housekeeping.py +0 -0
  574. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_drive.py +0 -0
  575. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_drive_queue.py +0 -0
  576. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_drive_queue_blocked_rendering.py +0 -0
  577. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_drive_queue_launch_argv.py +0 -0
  578. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  579. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_drive_queue_roll_pending.py +0 -0
  580. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  581. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_drive_state.py +0 -0
  582. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_drive_tmux.py +0 -0
  583. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_epic_up_capability_detection.py +0 -0
  584. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  585. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_epic_up_image_provenance.py +0 -0
  586. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_errors.py +0 -0
  587. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_events.py +0 -0
  588. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_failure_class.py +0 -0
  589. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_filelock.py +0 -0
  590. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  591. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_fix_of_force_override.py +0 -0
  592. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_fleet_config_health.py +0 -0
  593. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_fleet_health_probes.py +0 -0
  594. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_fleet_health_snapshot.py +0 -0
  595. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_fleet_watchdog.py +0 -0
  596. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_forge_availability.py +0 -0
  597. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_freshness.py +0 -0
  598. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_gate_a.py +0 -0
  599. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_gate_b.py +0 -0
  600. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_gate_snapshot_staleness.py +0 -0
  601. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_gates.py +0 -0
  602. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  603. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_gen_mock_index.py +0 -0
  604. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_generated_rust_fixture.py +0 -0
  605. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_generated_types_fixture.py +0 -0
  606. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_github_ops.py +0 -0
  607. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_github_throttle.py +0 -0
  608. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_goal.py +0 -0
  609. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_graph_health.py +0 -0
  610. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_graph_selfheal_absent_2237.py +0 -0
  611. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_handoff.py +0 -0
  612. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_checks.py +0 -0
  613. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_cli.py +0 -0
  614. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_cli_graph.py +0 -0
  615. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_config.py +0 -0
  616. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_context.py +0 -0
  617. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_coord_web_ci_pin.py +0 -0
  618. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_deploy_lane_facts.py +0 -0
  619. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_fix.py +0 -0
  620. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_incident_regression.py +0 -0
  621. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_issues_sync_staleness.py +0 -0
  622. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_pypi.py +0 -0
  623. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_registry.py +0 -0
  624. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_release_cordon_probe.py +0 -0
  625. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_timer_active.py +0 -0
  626. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_toolchain.py +0 -0
  627. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_unit_drift.py +0 -0
  628. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_health_unit_enablement.py +0 -0
  629. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_hooks.py +0 -0
  630. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_human_attended_437.py +0 -0
  631. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_init.py +0 -0
  632. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_integration.py +0 -0
  633. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_interactive_briefing_echo.py +0 -0
  634. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_interactive_pane_log_2541.py +0 -0
  635. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_interactive_prefill_state.py +0 -0
  636. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_interactive_session_relaunch.py +0 -0
  637. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_interactive_test_verdict_backstop.py +0 -0
  638. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_interactive_token_attribution.py +0 -0
  639. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_interactive_worktree.py +0 -0
  640. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_issue_store_seam.py +0 -0
  641. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_issues_sync_status.py +0 -0
  642. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_liveness_auditor.py +0 -0
  643. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_liveness_notify.py +0 -0
  644. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_lock_contention_ratchet.py +0 -0
  645. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_machine_pause.py +0 -0
  646. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_merge_queue.py +0 -0
  647. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_merge_verify.py +0 -0
  648. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_milestone_chat.py +0 -0
  649. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_milestone_dispatch.py +0 -0
  650. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_milestone_gate.py +0 -0
  651. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_milestone_order.py +0 -0
  652. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_milestone_seam.py +0 -0
  653. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_mock_author.py +0 -0
  654. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_model_tiering.py +0 -0
  655. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_models.py +0 -0
  656. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_models_config_labels.py +0 -0
  657. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_needs_attention.py +0 -0
  658. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_network.py +0 -0
  659. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_new_issue_chat.py +0 -0
  660. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_node_shim.py +0 -0
  661. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_notifier_baseline.py +0 -0
  662. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_notifier_cli.py +0 -0
  663. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_notifier_collect.py +0 -0
  664. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_notifier_config.py +0 -0
  665. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_notifier_drive_seam.py +0 -0
  666. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_notifier_isolation.py +0 -0
  667. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_notifier_predicate.py +0 -0
  668. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_notifier_quiet_hours.py +0 -0
  669. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_notifier_service.py +0 -0
  670. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_notify.py +0 -0
  671. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_notify_drain.py +0 -0
  672. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_openapi.py +0 -0
  673. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_operational_defaults.py +0 -0
  674. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_overlap_fence.py +0 -0
  675. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_overlap_predict.py +0 -0
  676. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_packaged_deploy_units.py +0 -0
  677. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_parentage.py +0 -0
  678. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_paste_landed.py +0 -0
  679. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  680. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_pipeline.py +0 -0
  681. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_plan_followup_approve_plan_command.py +0 -0
  682. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_plan_followup_pr_command.py +0 -0
  683. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_plan_followup_review_command.py +0 -0
  684. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_plan_only.py +0 -0
  685. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_plan_parser.py +0 -0
  686. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_platform_paths.py +0 -0
  687. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_portal_bridge.py +0 -0
  688. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_portal_config.py +0 -0
  689. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_portal_store.py +0 -0
  690. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_portal_sync.py +0 -0
  691. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_pr_body_lint.py +0 -0
  692. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_prereqs.py +0 -0
  693. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_production_db_guard.py +0 -0
  694. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_progress.py +0 -0
  695. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_provider_seam.py +0 -0
  696. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_providers.py +0 -0
  697. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_providers_config_labels.py +0 -0
  698. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_providers_pty.py +0 -0
  699. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_quiet_hours.py +0 -0
  700. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_quiet_hours_store_2146.py +0 -0
  701. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_reap_merged_sessions.py +0 -0
  702. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_reap_stale_interactive_tick.py +0 -0
  703. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_reconcile.py +0 -0
  704. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_reconcile_branch.py +0 -0
  705. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_reconcile_completions.py +0 -0
  706. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  707. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_reconcile_merges.py +0 -0
  708. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_reconcile_no_agent_record.py +0 -0
  709. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_reconcile_tick.py +0 -0
  710. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_reconcile_usage_limit_done.py +0 -0
  711. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_refine_chat.py +0 -0
  712. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_release_cordon_2101.py +0 -0
  713. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  714. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_release_cordon_deadlock_2240.py +0 -0
  715. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_release_cordon_stuck_2490.py +0 -0
  716. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_release_propagate_threshold.py +0 -0
  717. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_release_roll_between_legs_2854.py +0 -0
  718. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_release_roll_window_handoff.py +0 -0
  719. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_release_window.py +0 -0
  720. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_remote_auto_prune.py +0 -0
  721. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_remote_interactive_reaper.py +0 -0
  722. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_repo_add.py +0 -0
  723. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_repo_edit_2220.py +0 -0
  724. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_repo_graph_fleet_2237.py +0 -0
  725. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_repo_onboard_2220.py +0 -0
  726. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_report_result_push.py +0 -0
  727. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_reports.py +0 -0
  728. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_retry.py +0 -0
  729. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_retry_advisory_1606.py +0 -0
  730. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_retry_type_1636.py +0 -0
  731. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_revalidate.py +0 -0
  732. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_review.py +0 -0
  733. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_review_end_review_without_verdict.py +0 -0
  734. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_review_parse_failure_diagnostic.py +0 -0
  735. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_review_reaffirm.py +0 -0
  736. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_review_state.py +0 -0
  737. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_review_verdict_backstop.py +0 -0
  738. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_review_verdict_override_audit.py +0 -0
  739. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_review_verdict_relay.py +0 -0
  740. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_review_zero_commits.py +0 -0
  741. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_scoped_review_wiring.py +0 -0
  742. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_scorecard.py +0 -0
  743. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_self_health.py +0 -0
  744. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_serve.py +0 -0
  745. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_serve_app_board_trim.py +0 -0
  746. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_serve_rest_routes.py +0 -0
  747. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_session.py +0 -0
  748. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_slice_issue_attribution.py +0 -0
  749. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_smoke.py +0 -0
  750. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_smoke_live_checkout_restore.py +0 -0
  751. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_smoke_workflow.py +0 -0
  752. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_spend_ceiling.py +0 -0
  753. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_spend_ceiling_coordinator.py +0 -0
  754. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_split.py +0 -0
  755. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_split_work.py +0 -0
  756. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_sql_dialect.py +0 -0
  757. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_sqlite_connect_ratchet.py +0 -0
  758. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_stage_projection.py +0 -0
  759. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_stale_busy_reviewer_697.py +0 -0
  760. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_stalled_pipeline.py +0 -0
  761. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_state.py +0 -0
  762. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_state_review_findings_daemon.py +0 -0
  763. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_status_fleet_footer.py +0 -0
  764. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_stop_1567.py +0 -0
  765. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_store_contract.py +0 -0
  766. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_store_migrate.py +0 -0
  767. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_stuck.py +0 -0
  768. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  769. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_terminal_command.py +0 -0
  770. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_test_author.py +0 -0
  771. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_test_chat.py +0 -0
  772. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_test_orchestrator.py +0 -0
  773. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_test_report.py +0 -0
  774. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_test_verdict_parsing.py +0 -0
  775. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_test_verdict_transcript_floor.py +0 -0
  776. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_text_io_encoding_audit.py +0 -0
  777. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_thin_client_board_audit.py +0 -0
  778. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_thin_client_config_load_1080.py +0 -0
  779. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_thin_client_daemon_routing_906.py +0 -0
  780. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_tmux_host.py +0 -0
  781. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_tmux_session.py +0 -0
  782. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_transcript_floor.py +0 -0
  783. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_usage.py +0 -0
  784. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_usage_limits.py +0 -0
  785. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_usage_rollup.py +0 -0
  786. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_venv_live_install_2121.py +0 -0
  787. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_version_single_source.py +0 -0
  788. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_watch.py +0 -0
  789. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  790. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_worker_env_venv_isolation.py +0 -0
  791. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_worker_events.py +0 -0
  792. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_worker_image_pin_sync.py +0 -0
  793. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_worker_safety.py +0 -0
  794. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_worker_test_scoping.py +0 -0
  795. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_worktree.py +0 -0
  796. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  797. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/test_write_parity.py +0 -0
  798. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tests/write_parity.py +0 -0
  799. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/Cargo.lock +0 -0
  800. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/Cargo.toml +0 -0
  801. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/cargo-config-local-quadraui.toml.example +0 -0
  802. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/approved.rs +0 -0
  803. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/audit.rs +0 -0
  804. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/chat.rs +0 -0
  805. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/data.rs +0 -0
  806. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/dialogs.rs +0 -0
  807. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/doc_tabs.rs +0 -0
  808. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/drive.rs +0 -0
  809. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/drive_queue.rs +0 -0
  810. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/escalation.rs +0 -0
  811. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/events.rs +0 -0
  812. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/fixtures.rs +0 -0
  813. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/fleet_health.rs +0 -0
  814. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/fleet_sessions.rs +0 -0
  815. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/fleet_terminals.rs +0 -0
  816. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/format.rs +0 -0
  817. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/milestone_dag.rs +0 -0
  818. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/mod.rs +0 -0
  819. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/msv.rs +0 -0
  820. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/pipeline.rs +0 -0
  821. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/plans.rs +0 -0
  822. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/render.rs +0 -0
  823. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/reports.rs +0 -0
  824. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/sessions.rs +0 -0
  825. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/settings_ui.rs +0 -0
  826. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/sidebar.rs +0 -0
  827. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/terminal.rs +0 -0
  828. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/tests.rs +0 -0
  829. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/types/generated.rs +0 -0
  830. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/types.rs +0 -0
  831. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/app/workspace.rs +0 -0
  832. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/bin/gtk.rs +0 -0
  833. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/commands.rs +0 -0
  834. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/lib.rs +0 -0
  835. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/main.rs +0 -0
  836. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/src/settings.rs +0 -0
  837. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-33/audit_1039.rs +0 -0
  838. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-33/contract.md +0 -0
  839. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-33/manifest.yml +0 -0
  840. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  841. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  842. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  843. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  844. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-38/contract.md +0 -0
  845. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-38/manifest.yml +0 -0
  846. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  847. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  848. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  849. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  850. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  851. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  852. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  853. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  854. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  855. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  856. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  857. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  858. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  859. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/contract.md +0 -0
  860. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  861. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/manifest.yml +0 -0
  862. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  863. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  864. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  865. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  866. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  867. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  868. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  869. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  870. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  871. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  872. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  873. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
  874. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-67/contract.md +0 -0
  875. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
  876. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-67/manifest.yml +0 -0
  877. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
  878. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
  879. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
  880. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
  881. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
  882. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
  883. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/acceptance.rs +0 -0
  884. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/cli.rs +0 -0
  885. {code_coordinator-0.5.278 → code_coordinator-0.5.280}/tui/tests/fixtures/board_sample.json +0 -0
@@ -1,8 +1,25 @@
1
- name: Release (wheel + coord-tui binaries)
1
+ name: Release (wheel)
2
2
 
3
3
  # #1242 (PKG-6): ONE `v*` tag produces ONE GitHub Release carrying the whole
4
4
  # system at one version — the PyPI wheel (with the `[server]` extra
5
- # declared), the coord-tui binaries, and generated release notes.
5
+ # declared) and generated release notes.
6
+ #
7
+ # #2898 (phase 3 of #2894): "the whole system" no longer includes coord-tui,
8
+ # for the same reason #2009 removed the phone webapp — it is its own repo
9
+ # now, with its own `v*` tag namespace and its own Releases. This workflow
10
+ # used to call `.github/workflows/release-tui.yml` as a reusable workflow
11
+ # (`build-tui`) and gate `release` on its binaries; both are gone, and
12
+ # `verify-assets` no longer looks for `coord-tui-*` at all. That is the
13
+ # point of criterion 1: tagging `v*` HERE must produce a wheel and no
14
+ # coord-tui binaries, and must not fail for their absence.
15
+ #
16
+ # The tui half now lives in coord-tui's repo, staged in this tree at
17
+ # `tui/.github/workflows/release-tui.yml` until the #2894 move story carries
18
+ # it over. It fires on its own `v*` push and creates its own Release. One
19
+ # tag cannot stamp two repos, so the two version lines are independent by
20
+ # construction: coord `v0.5.x` alongside coord-tui `v0.2.y` is correct, and
21
+ # `coord tui update` / `coord release verify` are taught that in
22
+ # `coord/tui_release.py` and `coord/release_propagate.py`.
6
23
  #
7
24
  # #2009 (epic #2002): "the whole system" no longer includes the phone webapp.
8
25
  # It used to: `build-wheel` ran `npm ci && npm run build` in
@@ -33,14 +50,16 @@ name: Release (wheel + coord-tui binaries)
33
50
  # binaries only, with the actual Python package reachable solely from
34
51
  # PyPI.
35
52
  #
36
- # Now release-tui.yml is a *reusable* workflow (`workflow_call`) that this
37
- # one calls, so both halves are jobs of a single run, and exactly one job
38
- # — `release`, at the bottom — creates the GitHub Release.
53
+ # The fix made release-tui.yml a *reusable* workflow this one called, so
54
+ # both halves were jobs of a single run. Post-#2898 the two workflows are
55
+ # in different repos entirely, which removes the shared-Release race at the
56
+ # root: `release`, at the bottom, is still the only job here that creates a
57
+ # GitHub Release, and it is now the only release-creating step in this repo
58
+ # full stop.
39
59
  #
40
60
  # Version single-sourcing (#1238, PKG-2): nothing here hardcodes a version.
41
- # The wheel's comes from setuptools-scm reading the tag; coord-tui's comes
42
- # from the same tag, passed down to release-tui.yml by `plan` below. The
43
- # `build-wheel` and `verify-assets` jobs are the gates that they agree.
61
+ # The wheel's comes from setuptools-scm reading the tag, and `build-wheel`'s
62
+ # `scripts/verify_release_wheel.py` step is the gate that it took.
44
63
  #
45
64
  # Release muscle-memory: push a `vX.Y.Z` tag. Do NOT commit a version bump —
46
65
  # there is no version literal left to bump.
@@ -73,9 +92,9 @@ on:
73
92
  inputs:
74
93
  dry_run_tag:
75
94
  description: >-
76
- Dry-run version tag. Builds the wheel and every
77
- coord-tui target, verifies each is stamped with this version and
78
- that the complete asset set is present — then STOPS. No PyPI
95
+ Dry-run version tag. Builds the wheel, verifies it is stamped with
96
+ this version and that the complete asset set is present — then
97
+ STOPS. No PyPI
79
98
  upload, no GitHub Release, no tag pushed. This is how you validate
80
99
  a change to this workflow, since a real run publishes immutably to
81
100
  PyPI. Must be PEP 440-parseable once the leading `v` is stripped
@@ -149,8 +168,9 @@ jobs:
149
168
  # are independent refs). Refuse to publish from a tag whose commit never
150
169
  # actually landed on main — PyPI releases are immutable, so failing here is
151
170
  # far cheaper than a bad publish. Every build job in this run gates on this
152
- # one, including the coord-tui build (which used to carry its own copy of
153
- # this check back when it was independently triggered by the tag push).
171
+ # one. (#2898: the coord-tui build is gone from this workflow entirely, and
172
+ # carries its own copy of this check again now that its own repo's
173
+ # release-tui.yml is triggered by its own tag push.)
154
174
  #
155
175
  # Skipped for dry runs, which build whatever ref they were dispatched
156
176
  # against and never publish anything.
@@ -159,9 +179,11 @@ jobs:
159
179
  if: needs.plan.outputs.dry_run != 'true'
160
180
  runs-on: ubuntu-latest
161
181
  outputs:
162
- # Does THIS tag's release range ship PyPI wheel content? (#2102) A
163
- # `tui/`-only range still gets here — it still cuts a tag and a
164
- # GitHub Release — but publish-pypi below skips the upload for it.
182
+ # Does THIS tag's release range ship PyPI wheel content? (#2102)
183
+ # #2898: `tui/` is no longer a shipping prefix in this repo at all
184
+ # (scripts/next_release_tag.py) — it has its own channel — so a
185
+ # hand-pushed tag over a non-wheel range still cuts a tag and a GitHub
186
+ # Release here, and publish-pypi below skips the upload for it.
165
187
  wheel: ${{ steps.wheel.outputs.wheel }}
166
188
  steps:
167
189
  - uses: actions/checkout@v4
@@ -264,29 +286,13 @@ jobs:
264
286
  path: dist/*
265
287
  if-no-files-found: error
266
288
 
267
- # PKG-3's build matrix, called as a reusable workflow so its binaries are
268
- # artifacts of *this* run and land in the same Release as the wheel. The
269
- # tag is passed explicitly rather than left to `github.ref_name` inside the
270
- # callee: "everything at one version" should be a value handed down from
271
- # one place, not re-derived independently in two.
272
- build-tui:
273
- needs: [plan, verify-tag]
274
- if: ${{ always() && needs.plan.result == 'success' && (needs.verify-tag.result == 'success' || needs.verify-tag.result == 'skipped') }}
275
- uses: ./.github/workflows/release-tui.yml
276
- with:
277
- tag: ${{ needs.plan.outputs.tag }}
278
- # Same reason build-wheel pins it (#2035): under `workflow_call` the
279
- # default ref is the caller's branch, so the binaries would be built
280
- # from main's tip and stamped with the tag's version.
281
- ref: ${{ needs.plan.outputs.ref }}
282
-
283
289
  # The acceptance gate, and the reason a dry run is worth running: prove the
284
- # single asset set is complete BEFORE anything irreversible happens. Runs
290
+ # asset set is complete BEFORE anything irreversible happens. Runs
285
291
  # identically in both modes.
286
292
  verify-assets:
287
293
  # `plan` is already a transitive dependency, but `needs.plan.outputs` is
288
294
  # only readable from a *direct* `needs` entry.
289
- needs: [plan, build-wheel, build-tui]
295
+ needs: [plan, build-wheel]
290
296
  runs-on: ubuntu-latest
291
297
  steps:
292
298
  - uses: actions/download-artifact@v4
@@ -295,9 +301,17 @@ jobs:
295
301
 
296
302
  - name: Collect and check the release asset set
297
303
  shell: bash
304
+ # #2898: `coord-tui-*` is gone from BOTH the collect glob and the
305
+ # completeness loop below, and its absence must not be treated as an
306
+ # incomplete release — that is criterion 1 of #2898. coord-tui's
307
+ # binaries are published by coord-tui's own repo's release-tui.yml
308
+ # onto ITS Release, which is what `coord tui update` now resolves
309
+ # (coord/tui_release.py's DEFAULT_REPO). Re-adding a `coord-tui-*`
310
+ # check here would fail every release in this repo forever, since
311
+ # nothing in this run builds one any more.
298
312
  run: |
299
313
  mkdir -p release-assets
300
- find artifacts -type f \( -name '*.whl' -o -name '*.tar.gz' -o -name 'coord-tui-*' \) \
314
+ find artifacts -type f \( -name '*.whl' -o -name '*.tar.gz' \) \
301
315
  -exec cp {} release-assets/ \;
302
316
  ls -la release-assets
303
317
 
@@ -307,15 +321,6 @@ jobs:
307
321
  compgen -G 'release-assets/*.whl' > /dev/null || missing="$missing wheel"
308
322
  compgen -G 'release-assets/*.tar.gz' > /dev/null || missing="$missing sdist"
309
323
 
310
- # release-tui.yml's non-best-effort matrix legs — the stated
311
- # acceptance bar. Windows is deliberately absent: it is
312
- # `best_effort: true` there, so a Windows-only build hiccup must
313
- # not withhold an otherwise-complete release. `coord tui update`
314
- # (coord/tui_release.py) resolves exactly these asset names.
315
- for target in x86_64-linux x86_64-macos aarch64-macos; do
316
- [ -f "release-assets/coord-tui-$target" ] || missing="$missing coord-tui-$target"
317
- done
318
-
319
324
  if [ -n "$missing" ]; then
320
325
  echo "::error::Release ${{ needs.plan.outputs.tag }} would be incomplete — missing:$missing"
321
326
  exit 1
@@ -327,10 +332,10 @@ jobs:
327
332
  path: release-assets/*
328
333
  if-no-files-found: error
329
334
 
330
- # #2102: skipped for a `tui/`-only range. Nothing changed in the wheel this
335
+ # #2102: skipped for a range with no wheel content. Nothing changed in the wheel this
331
336
  # run built (it's still built and still attached to the GitHub Release
332
337
  # below, byte-identical to its predecessor apart from the version string),
333
- # so there is nothing to publish — a `tui/`-only merge must not mint a PyPI
338
+ # so there is nothing to publish — such a merge must not mint a PyPI
334
339
  # upload, and `verify-tag`'s `wheel` output (computed from the tag alone,
335
340
  # independent of how it was triggered) is what decides. Failing OPEN: an
336
341
  # empty/unset output (a value neither 'true' nor 'false') still publishes —
@@ -363,9 +368,9 @@ jobs:
363
368
  # run — `verify-assets` above already proved what it would have published.
364
369
  #
365
370
  # `always()` + the explicit `publish-pypi` result check (#2102): a
366
- # `tui/`-only range SKIPS publish-pypi above rather than failing it, and a
371
+ # wheel-less range SKIPS publish-pypi above rather than failing it, and a
367
372
  # skipped `needs` job would otherwise skip every job downstream of it by
368
- # default — which would leave `tui/`-only ranges cutting no GitHub Release
373
+ # default — which would leave such ranges cutting no GitHub Release
369
374
  # at all, the opposite of what this issue asks for. `success` still gates
370
375
  # normally for a mixed range that actually published.
371
376
  release:
@@ -407,7 +412,7 @@ jobs:
407
412
  # call — because the defect it guards is a property of the release path,
408
413
  # not of any one trigger.
409
414
  #
410
- # #2102: for a `tui/`-only range this no longer means "servable from
415
+ # #2102: for a range with no wheel content this no longer means "servable from
411
416
  # PyPI" — publish-pypi deliberately skipped, so polling the index would
412
417
  # wait 600s and then fail loudly for a wheel that was never supposed to
413
418
  # exist. The post-condition instead becomes "the GitHub Release exists
@@ -447,7 +452,7 @@ jobs:
447
452
  set -euo pipefail
448
453
  args=(--tag "$TAG" --github-repo "${{ github.repository }}" --timeout 600 --interval 15)
449
454
  if [ "$WHEEL" = "false" ]; then
450
- echo "::notice::$TAG shipped no PyPI wheel (tui/-only range, #2102) — checking the GitHub Release only."
455
+ echo "::notice::$TAG shipped no PyPI wheel (no wheel content in range, #2102) — checking the GitHub Release only."
451
456
  args+=(--skip-pypi)
452
457
  fi
453
458
  python scripts/verify_release_published.py "${args[@]}"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.278
3
+ Version: 0.5.280
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.278
3
+ Version: 0.5.280
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
@@ -19,7 +19,6 @@ pyproject.toml
19
19
  .github/workflows/auto-release.yml
20
20
  .github/workflows/cargo-test.yml
21
21
  .github/workflows/publish.yml
22
- .github/workflows/release-tui.yml
23
22
  .github/workflows/test.yml
24
23
  code_coordinator.egg-info/PKG-INFO
25
24
  code_coordinator.egg-info/SOURCES.txt
@@ -796,6 +795,7 @@ tests/fixtures/test_report/pytest_no_parseable_failures.txt
796
795
  tui/Cargo.lock
797
796
  tui/Cargo.toml
798
797
  tui/cargo-config-local-quadraui.toml.example
798
+ tui/.github/workflows/release-tui.yml
799
799
  tui/src/commands.rs
800
800
  tui/src/lib.rs
801
801
  tui/src/main.rs
@@ -12,7 +12,6 @@
12
12
  ".github/workflows/auto-release.yml",
13
13
  ".github/workflows/cargo-test.yml",
14
14
  ".github/workflows/publish.yml",
15
- ".github/workflows/release-tui.yml",
16
15
  ".github/workflows/test.yml",
17
16
  ".gitignore",
18
17
  "CLAUDE.md",
@@ -787,6 +786,7 @@
787
786
  "tests/test_worktree_rmtree_chokepoint.py",
788
787
  "tests/test_write_parity.py",
789
788
  "tests/write_parity.py",
789
+ "tui/.github/workflows/release-tui.yml",
790
790
  "tui/Cargo.lock",
791
791
  "tui/Cargo.toml",
792
792
  "tui/cargo-config-local-quadraui.toml.example",
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.278",
2
+ "tag": "0.5.280",
3
3
  "distance": 0,
4
- "node": "g48a103653f92fb9bbe1d34fe447e9857faca1819",
4
+ "node": "g440329673aaafcfbce9c973d90c42a775bc081e0",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-29"
@@ -1302,8 +1302,13 @@ def release_propagate( # noqa: PLR0912, PLR0915 — a pipeline; the decisions a
1302
1302
 
1303
1303
  if dry_run:
1304
1304
  for roll in rolls:
1305
+ # #2898: the channel travels with the plan entry so `--dry-run`
1306
+ # names both channels distinctly (rendered by
1307
+ # `rp.render_record`), rather than showing a `tui` lane under a
1308
+ # coordinator version it does not actually roll to.
1305
1309
  record.lanes.append(
1306
1310
  {"lane": roll.lane, "host": roll.host, "ok": None,
1311
+ "channel": roll.channel,
1307
1312
  "detail": f"would roll ({roll.rationale})"}
1308
1313
  )
1309
1314
  if rolls:
@@ -1388,9 +1393,11 @@ def release_propagate( # noqa: PLR0912, PLR0915 — a pipeline; the decisions a
1388
1393
  elif roll.lane == rp.LANE_UNITS:
1389
1394
  ok, detail = _roll_units(machine, agent_port=AGENT_PORT)
1390
1395
  else:
1391
- ok, detail = _roll_tui(
1392
- machine, target_version=record.target_version, local_name=local_name
1393
- )
1396
+ # #2898: no target_version — the tui lane resolves its own
1397
+ # channel's latest (see _roll_tui). record.target_version names a
1398
+ # tag in the coordinator's channel, which coord-tui's Releases
1399
+ # have never heard of.
1400
+ ok, detail = _roll_tui(machine, local_name=local_name)
1394
1401
 
1395
1402
  # #2052: `ok is None` from a lane executor means "there is no channel
1396
1403
  # for this lane on this host" — not a failure, and emphatically not
@@ -1398,7 +1405,8 @@ def release_propagate( # noqa: PLR0912, PLR0915 — a pipeline; the decisions a
1398
1405
  # coord-tui binary is the canonical case: propagation itself reports
1399
1406
  # there is no remote install path, so counting its staleness as
1400
1407
  # grounds for rolling back a good python roll is a category error.
1401
- entry = {"lane": roll.lane, "host": roll.host, "ok": ok, "detail": detail}
1408
+ entry = {"lane": roll.lane, "host": roll.host, "ok": ok,
1409
+ "channel": roll.channel, "detail": detail}
1402
1410
  if ok is None:
1403
1411
  entry["unrollable"] = True
1404
1412
  record.lanes.append(entry)
@@ -2264,9 +2272,7 @@ def _roll_units(machine, *, agent_port: int) -> tuple[bool | None, str]:
2264
2272
  return ok, "; ".join(parts)
2265
2273
 
2266
2274
 
2267
- def _roll_tui(
2268
- machine, *, target_version: str, local_name: str | None
2269
- ) -> tuple[bool | None, str]:
2275
+ def _roll_tui(machine, *, local_name: str | None) -> tuple[bool | None, str]:
2270
2276
  """`coord tui update` — local host only, and honest about the rest.
2271
2277
 
2272
2278
  ``coord-tui`` is a binary in each host's ``~/.local/bin``; there is no
@@ -2280,27 +2286,65 @@ def _roll_tui(
2280
2286
  ``--rollback-on-red`` used as grounds to revert three good python rolls.
2281
2287
  A lane that reports "there is no remote install path" in its own failure
2282
2288
  message cannot also be evidence that this run went wrong.
2289
+
2290
+ #2898 — NO ``--version`` ANY MORE, AND THAT IS THE POINT.
2291
+ This used to run ``coord tui update --version <this run's target>``, which
2292
+ was correct while one tag stamped both repos (#1242). After the #2894
2293
+ split that argument names a tag in the *coordinator's* channel, which
2294
+ coord-tui's Releases have never heard of: passing it would 404 on every
2295
+ run, and the propagation would report a failed tui lane forever for a
2296
+ fleet that is in fact perfectly current. Bare ``coord tui update``
2297
+ resolves coord-tui's OWN latest release
2298
+ (:func:`coord.tui_release.fetch_latest_release_tag`) — that is the
2299
+ :data:`~coord.release_propagate.CHANNEL_TUI` channel doing its own version
2300
+ selection, not this run guessing across a channel boundary.
2283
2301
  """
2284
2302
  import subprocess # noqa: PLC0415
2285
2303
 
2304
+ from coord import release_propagate as rp # noqa: PLC0415
2305
+
2286
2306
  if local_name is None or machine.name != local_name:
2287
2307
  return None, (
2288
2308
  f"coord-tui is a per-host binary with no remote install path — run "
2289
- f"`coord tui update --version {target_version}` on {machine.name}"
2309
+ f"`coord tui update` on {machine.name} ({rp.CHANNEL_TUI} channel)"
2290
2310
  )
2291
2311
  try:
2292
2312
  proc = subprocess.run(
2293
- [sys.executable, "-m", "coord.cli", "tui", "update",
2294
- "--version", target_version],
2313
+ [sys.executable, "-m", "coord.cli", "tui", "update"],
2295
2314
  capture_output=True, text=True, timeout=300,
2296
2315
  )
2297
2316
  except Exception as exc: # noqa: BLE001
2298
2317
  return False, f"{type(exc).__name__}: {exc}"
2299
2318
  if proc.returncode == 0:
2300
- return True, f"coord-tui now v{target_version}"
2319
+ installed = _installed_tui_version(proc.stdout)
2320
+ return True, (
2321
+ f"coord-tui now {installed} ({rp.CHANNEL_TUI} channel)"
2322
+ if installed
2323
+ else f"coord-tui updated from the {rp.CHANNEL_TUI} channel"
2324
+ )
2301
2325
  return False, (proc.stderr or proc.stdout or f"exit {proc.returncode}").strip()[:300]
2302
2326
 
2303
2327
 
2328
+ def _installed_tui_version(stdout: str) -> str | None:
2329
+ """The version `coord tui update` reported, parsed back out of its output.
2330
+
2331
+ #2898: the caller no longer *chooses* the version — coord-tui's own
2332
+ channel does — so the only way to journal what actually landed is to read
2333
+ it back. Both of that command's terminal lines carry it: ``coord-tui is
2334
+ already vX -- nothing to do`` (the idempotent path) and ``Installed
2335
+ <path> -- coord-tui reports X.`` (the install path). Returns ``None``
2336
+ rather than guessing if neither matches; the roll still counts as
2337
+ successful, it is just journalled without a number.
2338
+ """
2339
+ for line in reversed(stdout.splitlines()):
2340
+ line = line.strip()
2341
+ if "coord-tui reports " in line:
2342
+ return line.split("coord-tui reports ", 1)[1].strip().rstrip(".") or None
2343
+ if line.startswith("coord-tui is already "):
2344
+ return line.split("coord-tui is already ", 1)[1].split()[0].strip() or None
2345
+ return None
2346
+
2347
+
2304
2348
  def _get(url: str, *, timeout: float) -> tuple[int | None, dict]:
2305
2349
  """GET JSON, tolerantly. ``(status, body)`` — never raises."""
2306
2350
  import httpx # noqa: PLC0415