code-coordinator 0.5.305__tar.gz → 0.5.307__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 (864) hide show
  1. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/code_coordinator.egg-info/SOURCES.txt +1 -48
  4. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/code_coordinator.egg-info/scm_file_list.json +1 -48
  5. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/code_coordinator.egg-info/scm_version.json +2 -2
  6. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/release.py +27 -6
  7. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/dispatch.py +9 -4
  8. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/models.py +44 -0
  9. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/review.py +58 -0
  10. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_release_propagate.py +55 -0
  11. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_dispatch.py +31 -2
  12. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_models.py +41 -0
  13. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_operational_defaults.py +6 -2
  14. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_review.py +110 -0
  15. code_coordinator-0.5.305/tui/tests/acceptance/ms-33/audit_1039.rs +0 -430
  16. code_coordinator-0.5.305/tui/tests/acceptance/ms-33/contract.md +0 -276
  17. code_coordinator-0.5.305/tui/tests/acceptance/ms-33/manifest.yml +0 -26
  18. code_coordinator-0.5.305/tui/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -40
  19. code_coordinator-0.5.305/tui/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -40
  20. code_coordinator-0.5.305/tui/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -40
  21. code_coordinator-0.5.305/tui/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -40
  22. code_coordinator-0.5.305/tui/tests/acceptance/ms-38/contract.md +0 -356
  23. code_coordinator-0.5.305/tui/tests/acceptance/ms-38/manifest.yml +0 -77
  24. code_coordinator-0.5.305/tui/tests/acceptance/ms-38/mocks/plans-base.screen +0 -40
  25. code_coordinator-0.5.305/tui/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -40
  26. code_coordinator-0.5.305/tui/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -40
  27. code_coordinator-0.5.305/tui/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -40
  28. code_coordinator-0.5.305/tui/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -40
  29. code_coordinator-0.5.305/tui/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -40
  30. code_coordinator-0.5.305/tui/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -40
  31. code_coordinator-0.5.305/tui/tests/acceptance/ms-38/plans_detail_1122.rs +0 -417
  32. code_coordinator-0.5.305/tui/tests/acceptance/ms-38/plans_help_1124.rs +0 -399
  33. code_coordinator-0.5.305/tui/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -380
  34. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/board_split_2288.rs +0 -1383
  35. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/board_tabs_2282.rs +0 -852
  36. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -1049
  37. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/contract.md +0 -563
  38. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/detail_substate_2285.rs +0 -725
  39. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/manifest.yml +0 -1052
  40. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -40
  41. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -40
  42. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -40
  43. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -40
  44. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -40
  45. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -40
  46. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -40
  47. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -40
  48. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -778
  49. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -1040
  50. code_coordinator-0.5.305/tui/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -1105
  51. code_coordinator-0.5.305/tui/tests/acceptance/ms-67/approved_items_2532.rs +0 -689
  52. code_coordinator-0.5.305/tui/tests/acceptance/ms-67/contract.md +0 -518
  53. code_coordinator-0.5.305/tui/tests/acceptance/ms-67/manifest.d/2533.yml +0 -64
  54. code_coordinator-0.5.305/tui/tests/acceptance/ms-67/manifest.yml +0 -109
  55. code_coordinator-0.5.305/tui/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -40
  56. code_coordinator-0.5.305/tui/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -40
  57. code_coordinator-0.5.305/tui/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -40
  58. code_coordinator-0.5.305/tui/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -40
  59. code_coordinator-0.5.305/tui/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -40
  60. code_coordinator-0.5.305/tui/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -487
  61. code_coordinator-0.5.305/tui/tests/acceptance.rs +0 -53
  62. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/.claude/commands/board.md +0 -0
  63. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/.claude/commands/complete-session.md +0 -0
  64. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/.claude/commands/coordinator.md +0 -0
  65. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/.githooks/_lib.sh +0 -0
  66. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/.githooks/post-checkout +0 -0
  67. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/.githooks/post-commit +0 -0
  68. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/.githooks/post-merge +0 -0
  69. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  70. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/.github/coord-ci-acceptance.yml +0 -0
  71. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/.github/workflows/auto-release.yml +0 -0
  72. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/.github/workflows/publish.yml +0 -0
  73. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/.github/workflows/test.yml +0 -0
  74. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/.gitignore +0 -0
  75. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/CLAUDE.md +0 -0
  76. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/GOAL.md +0 -0
  77. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/LICENSE +0 -0
  78. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/MANIFEST.in +0 -0
  79. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/README.md +0 -0
  80. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/code_coordinator.egg-info/dependency_links.txt +0 -0
  81. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/code_coordinator.egg-info/entry_points.txt +0 -0
  82. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/code_coordinator.egg-info/requires.txt +0 -0
  83. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/code_coordinator.egg-info/top_level.txt +0 -0
  84. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/__init__.py +0 -0
  85. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/_board_mapping.py +0 -0
  86. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/acceptance.py +0 -0
  87. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/acceptance_drivers.py +0 -0
  88. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/agent.py +0 -0
  89. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/agent_app.py +0 -0
  90. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/agent_update.py +0 -0
  91. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/agents/opencode/.gitignore +0 -0
  92. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/agents/opencode/agents/work.md +0 -0
  93. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/agents/opencode/routing.jsonc +0 -0
  94. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/approved_work.py +0 -0
  95. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/audit.py +0 -0
  96. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/auto_loop.py +0 -0
  97. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/block_log.py +0 -0
  98. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/board_schema.py +0 -0
  99. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/board_service.py +0 -0
  100. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/board_wire.py +0 -0
  101. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/brain.py +0 -0
  102. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/branch_model.py +0 -0
  103. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/bug_intake.py +0 -0
  104. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/cargo_cache.py +0 -0
  105. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/ci_fix.py +0 -0
  106. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/ci_github.py +0 -0
  107. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/ci_gitlab.py +0 -0
  108. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/ci_store.py +0 -0
  109. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/claim.py +0 -0
  110. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/cli.py +0 -0
  111. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/client.py +0 -0
  112. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/__init__.py +0 -0
  113. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/_common.py +0 -0
  114. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/acceptance.py +0 -0
  115. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/agent_ops.py +0 -0
  116. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/audit.py +0 -0
  117. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/chat.py +0 -0
  118. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/dispatch.py +0 -0
  119. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/dispatch_workers.py +0 -0
  120. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/drive.py +0 -0
  121. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/drive_queue.py +0 -0
  122. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/gate_a.py +0 -0
  123. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/gates.py +0 -0
  124. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/issues.py +0 -0
  125. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/lifecycle.py +0 -0
  126. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/machine.py +0 -0
  127. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/merge.py +0 -0
  128. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/milestone.py +0 -0
  129. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/plan_followup.py +0 -0
  130. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/plans.py +0 -0
  131. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/portal.py +0 -0
  132. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/pr.py +0 -0
  133. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/repo.py +0 -0
  134. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/report.py +0 -0
  135. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/review.py +0 -0
  136. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/scorecard.py +0 -0
  137. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/sessions.py +0 -0
  138. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/setup.py +0 -0
  139. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/status.py +0 -0
  140. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/store_migrate.py +0 -0
  141. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/terminal.py +0 -0
  142. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/test_gate.py +0 -0
  143. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/commands/tui.py +0 -0
  144. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/comments.py +0 -0
  145. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/config.py +0 -0
  146. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/config_reload.py +0 -0
  147. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/confirm_test.py +0 -0
  148. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/conflict_fix.py +0 -0
  149. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/dao.py +0 -0
  150. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/dashboard/__init__.py +0 -0
  151. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/dashboard/fixture.py +0 -0
  152. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/dashboard/index.html +0 -0
  153. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/dashboard/server.py +0 -0
  154. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/dashboard/terminal.py +0 -0
  155. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/db.py +0 -0
  156. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/dead_end.py +0 -0
  157. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/decomposition_chat.py +0 -0
  158. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/README.md +0 -0
  159. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-agent.service +0 -0
  160. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-db-backup.service +0 -0
  161. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-db-backup.sh +0 -0
  162. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-db-backup.timer +0 -0
  163. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-drive-queue.service +0 -0
  164. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-drive-queue.timer +0 -0
  165. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-failure-notify.service +0 -0
  166. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-fleet-watchdog.service +0 -0
  167. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  168. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-notify.service +0 -0
  169. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-notify.timer +0 -0
  170. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-release-propagate.service +0 -0
  171. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-release-propagate.timer +0 -0
  172. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-release-window.service +0 -0
  173. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-release-window.timer +0 -0
  174. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-serve.service +0 -0
  175. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-web-dist-build.service +0 -0
  176. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-web-dist-build.timer +0 -0
  177. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy/coord-web.service +0 -0
  178. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy_manifest.py +0 -0
  179. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deploy_units.py +0 -0
  180. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deprecation_telemetry.py +0 -0
  181. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/deps.py +0 -0
  182. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/diagnose.py +0 -0
  183. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/dist_name.py +0 -0
  184. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/drive.py +0 -0
  185. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/drive_queue.py +0 -0
  186. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/drive_state.py +0 -0
  187. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/events.py +0 -0
  188. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/failure_class.py +0 -0
  189. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/filelock.py +0 -0
  190. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/fleet_config_health.py +0 -0
  191. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/forge_availability.py +0 -0
  192. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/freshness.py +0 -0
  193. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/gate_a.py +0 -0
  194. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/gate_b.py +0 -0
  195. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/gate_snapshot.py +0 -0
  196. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/gates.py +0 -0
  197. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/github_ops.py +0 -0
  198. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/github_throttle.py +0 -0
  199. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/goal.py +0 -0
  200. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/graph_health.py +0 -0
  201. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/__init__.py +0 -0
  202. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/aggregate.py +0 -0
  203. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/__init__.py +0 -0
  204. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/_ci_pin.py +0 -0
  205. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/agent_install.py +0 -0
  206. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/cargo_targets.py +0 -0
  207. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/claude_binary.py +0 -0
  208. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  209. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/coord_web_ci_pin.py +0 -0
  210. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/deploy_lane_facts.py +0 -0
  211. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/disk.py +0 -0
  212. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/fleet_board.py +0 -0
  213. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  214. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/fleet_phantom.py +0 -0
  215. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/fleet_unit_drift.py +0 -0
  216. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/graph.py +0 -0
  217. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/graphify_cli.py +0 -0
  218. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/index_lock.py +0 -0
  219. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/issues_sync_staleness.py +0 -0
  220. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/plan_usage.py +0 -0
  221. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/release_cordon.py +0 -0
  222. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/repo_state.py +0 -0
  223. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/spawned_coord.py +0 -0
  224. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/stalled_pipeline.py +0 -0
  225. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/timer_active.py +0 -0
  226. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/toolchain.py +0 -0
  227. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/unit_drift.py +0 -0
  228. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/unit_enablement.py +0 -0
  229. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/wedged_drive_queue.py +0 -0
  230. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/checks/worktrees.py +0 -0
  231. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/cli.py +0 -0
  232. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/context.py +0 -0
  233. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/fleet_snapshot.py +0 -0
  234. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/models.py +0 -0
  235. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/pypi.py +0 -0
  236. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/registry.py +0 -0
  237. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/render.py +0 -0
  238. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/health/units.py +0 -0
  239. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/hooks.py +0 -0
  240. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/housekeeping.py +0 -0
  241. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/interactive.py +0 -0
  242. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/issue_store.py +0 -0
  243. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/issues_sync_status.py +0 -0
  244. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/liveness_auditor.py +0 -0
  245. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/machine_onboard.py +0 -0
  246. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/machine_pause.py +0 -0
  247. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/merge_queue.py +0 -0
  248. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/milestone_chat.py +0 -0
  249. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/milestone_dispatch.py +0 -0
  250. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/milestone_gate.py +0 -0
  251. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/milestone_order.py +0 -0
  252. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/mock_author.py +0 -0
  253. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/network.py +0 -0
  254. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/new_issue_chat.py +0 -0
  255. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/notifier/__init__.py +0 -0
  256. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/notifier/baseline.py +0 -0
  257. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/notifier/cli.py +0 -0
  258. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/notifier/collect.py +0 -0
  259. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/notifier/digest.py +0 -0
  260. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/notifier/models.py +0 -0
  261. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/notifier/predicate.py +0 -0
  262. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/notifier/service.py +0 -0
  263. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/notifier/store.py +0 -0
  264. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/notifier/transport.py +0 -0
  265. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/notify.py +0 -0
  266. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/openapi.py +0 -0
  267. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/overlap_fence.py +0 -0
  268. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/overlap_predict.py +0 -0
  269. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/parentage.py +0 -0
  270. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/parentage_github.py +0 -0
  271. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/pipeline.py +0 -0
  272. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/plan_parser.py +0 -0
  273. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/plans.py +0 -0
  274. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/platform_paths.py +0 -0
  275. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/portal_bridge.py +0 -0
  276. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/portal_store.py +0 -0
  277. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/portal_sync.py +0 -0
  278. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/pr_body_lint.py +0 -0
  279. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/prereqs.py +0 -0
  280. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/progress.py +0 -0
  281. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/providers/__init__.py +0 -0
  282. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/providers/base.py +0 -0
  283. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/providers/claude.py +0 -0
  284. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/providers/claude_pty.py +0 -0
  285. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/providers/opencode.py +0 -0
  286. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/queue_diagnose.py +0 -0
  287. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/reconcile.py +0 -0
  288. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/reconcile_tick.py +0 -0
  289. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/refine_chat.py +0 -0
  290. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/release_cordon.py +0 -0
  291. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/release_propagate.py +0 -0
  292. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/release_verify.py +0 -0
  293. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/release_window.py +0 -0
  294. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/repo_edit.py +0 -0
  295. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/repo_onboard.py +0 -0
  296. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/reports.py +0 -0
  297. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/rest_schema.py +0 -0
  298. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/revalidate.py +0 -0
  299. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/scorecard.py +0 -0
  300. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/self_health.py +0 -0
  301. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/serve_app.py +0 -0
  302. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  303. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  304. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  305. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  306. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  307. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/skills/portal-followup/SKILL.md +0 -0
  308. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/skills/release-now/SKILL.md +0 -0
  309. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  310. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  311. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/skills/update-issue/SKILL.md +0 -0
  312. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/smoke.py +0 -0
  313. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/spend_ceiling.py +0 -0
  314. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/split_work.py +0 -0
  315. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/sql.py +0 -0
  316. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/stage_projection.py +0 -0
  317. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/state.py +0 -0
  318. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/store_migrate.py +0 -0
  319. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/test_author.py +0 -0
  320. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/test_chat.py +0 -0
  321. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/test_orchestrator.py +0 -0
  322. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/test_report.py +0 -0
  323. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/tui_release.py +0 -0
  324. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/usage.py +0 -0
  325. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/usage_limits.py +0 -0
  326. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/usage_rollup.py +0 -0
  327. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coord/worker_events.py +0 -0
  328. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/coordinator.example.yml +0 -0
  329. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-agent.service +0 -0
  330. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-db-backup.service +0 -0
  331. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-db-backup.sh +0 -0
  332. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-db-backup.timer +0 -0
  333. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-drive-queue.service +0 -0
  334. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-drive-queue.timer +0 -0
  335. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-failure-notify.service +0 -0
  336. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-failure-notify.sh +0 -0
  337. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-fleet-watchdog.service +0 -0
  338. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-fleet-watchdog.timer +0 -0
  339. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-notify.service +0 -0
  340. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-notify.timer +0 -0
  341. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-release-propagate.service +0 -0
  342. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-release-propagate.timer +0 -0
  343. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-release-window.service +0 -0
  344. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-release-window.timer +0 -0
  345. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-serve.service +0 -0
  346. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-web-dist-build.service +0 -0
  347. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-web-dist-build.sh +0 -0
  348. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-web-dist-build.timer +0 -0
  349. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-web-rollback.sh +0 -0
  350. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/coord-web.service +0 -0
  351. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/deploy/node-shim.sh +0 -0
  352. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/ADR_COORD_TUI_CI.md +0 -0
  353. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  354. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/ADR_COORD_WEB_CI.md +0 -0
  355. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/ADR_COORD_WEB_DIST.md +0 -0
  356. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  357. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/AGENT_OPERATIONS.md +0 -0
  358. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/ARCHITECTURE.md +0 -0
  359. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/ARCH_SECURITY_GATES.md +0 -0
  360. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/COCKPIT.md +0 -0
  361. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/CONTROL_CENTER.md +0 -0
  362. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/COST_DISCIPLINE.md +0 -0
  363. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/CROSS_PLATFORM.md +0 -0
  364. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/CUSTOMER_FACING_APPS.md +0 -0
  365. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/CUSTOMER_PORTAL.md +0 -0
  366. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/DRIVE_QUEUE.md +0 -0
  367. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/EPHEMERAL_WORKERS.md +0 -0
  368. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/FORGE_MIGRATION.md +0 -0
  369. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/GRAPHIFY_SETUP.md +0 -0
  370. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/ISSUE_GUIDANCE.md +0 -0
  371. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/MAC_MINI.md +0 -0
  372. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  373. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/NOTIFIER.md +0 -0
  374. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/OPENCODE_VERIFICATION.md +0 -0
  375. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/OPERATING_GOTCHAS.md +0 -0
  376. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/OPERATOR_GUIDES.md +0 -0
  377. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/ORACLE_LOOP.md +0 -0
  378. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/PHONE_WEBAPP.md +0 -0
  379. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/PIPELINE_V2.md +0 -0
  380. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/PLATFORM_EVOLUTION.md +0 -0
  381. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/SECOND_BACKEND.md +0 -0
  382. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/STORE_SERVICE.md +0 -0
  383. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  384. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/WEB_CONTROL_CENTER.md +0 -0
  385. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/WSL_WINDOWS_WORKER.md +0 -0
  386. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/mocks/web/README.md +0 -0
  387. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/mocks/web/_tokens.css +0 -0
  388. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/mocks/web/issue-detail.html +0 -0
  389. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/mocks/web/pipeline-narrow.html +0 -0
  390. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/docs/mocks/web/pipeline-wide.html +0 -0
  391. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/graphify-out/.gitignore +0 -0
  392. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/install-agent.sh +0 -0
  393. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/pyproject.toml +0 -0
  394. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/audit_review_verdict_overrides.py +0 -0
  395. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  396. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/azure-workers/build-worker-image.sh +0 -0
  397. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/azure-workers/coordinator-machine.py +0 -0
  398. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/azure-workers/epic-down.sh +0 -0
  399. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/azure-workers/epic-up.sh +0 -0
  400. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/azure-workers/preflight.sh +0 -0
  401. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/azure-workers/provision-worker.sh +0 -0
  402. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  403. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  404. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/azure-workers/verify-github-token.sh +0 -0
  405. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/check_gh_argv_containment.py +0 -0
  406. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/codegen.py +0 -0
  407. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/coord-test-runner.sh +0 -0
  408. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  409. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  410. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  411. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  412. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/coord-venv-rollback.sh +0 -0
  413. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/drive-batch.sh +0 -0
  414. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/extract-coord-tui.sh +0 -0
  415. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/fleet_watchdog.py +0 -0
  416. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/gen_board_fixture.py +0 -0
  417. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/gen_mock_index.py +0 -0
  418. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/next_release_tag.py +0 -0
  419. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/run_tests_in_populated_home.sh +0 -0
  420. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/run_tests_without_gh.sh +0 -0
  421. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/smoke_437_interactive.py +0 -0
  422. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/verify_878_review_capture.py +0 -0
  423. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/verify_release_published.py +0 -0
  424. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/scripts/verify_release_wheel.py +0 -0
  425. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/setup.cfg +0 -0
  426. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/SMOKE_SET.md +0 -0
  427. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/__init__.py +0 -0
  428. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/acceptance/ms-37/conftest.py +0 -0
  429. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/acceptance/ms-37/contract.md +0 -0
  430. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/acceptance/ms-37/manifest.yml +0 -0
  431. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  432. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  433. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/acceptance/ms-51/contract.md +0 -0
  434. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  435. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  436. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/acceptance/ms-51/manifest.yml +0 -0
  437. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  438. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/acceptance/ms-51/tsconfig.json +0 -0
  439. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  440. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/backends.py +0 -0
  441. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/conftest.py +0 -0
  442. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/board-pipeline-basic.json +0 -0
  443. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  444. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  445. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  446. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  447. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/playwright/all_pass.json +0 -0
  448. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  449. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/playwright/mixed_fail.json +0 -0
  450. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  451. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  452. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/playwright/skip.json +0 -0
  453. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/playwright/truncated.json +0 -0
  454. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  455. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  456. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  457. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  458. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  459. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  460. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  461. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  462. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_acceptance.py +0 -0
  463. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_acceptance_drivers.py +0 -0
  464. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent.py +0 -0
  465. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_api_error.py +0 -0
  466. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_app.py +0 -0
  467. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_branch_base.py +0 -0
  468. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_branch_capture.py +0 -0
  469. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_config_free_1712.py +0 -0
  470. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_deploy_units_endpoint.py +0 -0
  471. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_dirty_worktree.py +0 -0
  472. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  473. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_graph_self_heal.py +0 -0
  474. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_health_h3.py +0 -0
  475. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_idle_restart.py +0 -0
  476. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_push_failure.py +0 -0
  477. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_reap.py +0 -0
  478. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_repos_and_pull.py +0 -0
  479. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_restart_services_endpoint.py +0 -0
  480. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_skills_self_heal.py +0 -0
  481. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_startup_diagnostics.py +0 -0
  482. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_update.py +0 -0
  483. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_update_bluegreen.py +0 -0
  484. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_usage_limit.py +0 -0
  485. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_agent_zero_commit.py +0 -0
  486. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_ambient_home_isolation.py +0 -0
  487. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_approve_dependency_busy_2804.py +0 -0
  488. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_approve_reject_plan.py +0 -0
  489. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_approve_usage_gate.py +0 -0
  490. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_approved_work_2532.py +0 -0
  491. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_assignment_already_recorded_daemon.py +0 -0
  492. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_audit_log.py +0 -0
  493. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_audit_outcome.py +0 -0
  494. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_audit_query.py +0 -0
  495. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_auto_loop.py +0 -0
  496. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_auto_release_publish_2035.py +0 -0
  497. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_backend_selection.py +0 -0
  498. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_base_checkout_restore.py +0 -0
  499. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_block_log.py +0 -0
  500. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_board_cap_762.py +0 -0
  501. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_board_fixture.py +0 -0
  502. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_board_read_path.py +0 -0
  503. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_board_schema.py +0 -0
  504. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_board_service.py +0 -0
  505. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_board_state.py +0 -0
  506. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_board_wire.py +0 -0
  507. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_brain.py +0 -0
  508. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_branch_model.py +0 -0
  509. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_bug_intake.py +0 -0
  510. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_build_worker_image_env_update.py +0 -0
  511. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cargo_cache.py +0 -0
  512. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_check_gh_argv_containment.py +0 -0
  513. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_ci_acceptance_gate_1950.py +0 -0
  514. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_ci_fix.py +0 -0
  515. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_ci_gitlab.py +0 -0
  516. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_ci_parity_2091.py +0 -0
  517. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_ci_store.py +0 -0
  518. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_claim.py +0 -0
  519. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_claude_md_budget.py +0 -0
  520. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_acceptance.py +0 -0
  521. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_assign.py +0 -0
  522. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  523. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_assign_interactive_remote.py +0 -0
  524. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_assign_provider.py +0 -0
  525. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  526. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_audit.py +0 -0
  527. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_chat_continue.py +0 -0
  528. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_decide.py +0 -0
  529. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_diagnose_capability_rules.py +0 -0
  530. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_diagnose_config_provenance.py +0 -0
  531. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_diagnose_forge_availability.py +0 -0
  532. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_diagnose_graph.py +0 -0
  533. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_diagnose_self.py +0 -0
  534. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_doctor.py +0 -0
  535. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_doctor_config_free_1801.py +0 -0
  536. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  537. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_drive.py +0 -0
  538. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_drive_queue.py +0 -0
  539. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_escalate.py +0 -0
  540. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_fix_headless_review.py +0 -0
  541. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_gate_a.py +0 -0
  542. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_install_drift.py +0 -0
  543. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_install_skills.py +0 -0
  544. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_issue_comment.py +0 -0
  545. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_issue_create_label.py +0 -0
  546. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_issue_reopen.py +0 -0
  547. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_issue_view_list.py +0 -0
  548. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_merge.py +0 -0
  549. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_milestone_assign.py +0 -0
  550. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_milestone_capture.py +0 -0
  551. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_milestone_chat_add_child.py +0 -0
  552. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_milestone_dispatch.py +0 -0
  553. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_milestone_gate_b.py +0 -0
  554. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_milestone_gate_c.py +0 -0
  555. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_milestone_order.py +0 -0
  556. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  557. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_milestone_ship.py +0 -0
  558. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_network.py +0 -0
  559. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_new_issue_chat.py +0 -0
  560. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_plans.py +0 -0
  561. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_portal.py +0 -0
  562. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_pr.py +0 -0
  563. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_pull_artifact.py +0 -0
  564. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_queue.py +0 -0
  565. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_reattach_sessions.py +0 -0
  566. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_refine_board.py +0 -0
  567. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_release_preflight.py +0 -0
  568. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_release_window.py +0 -0
  569. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_repo_2220.py +0 -0
  570. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  571. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_scorecard.py +0 -0
  572. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_set_review_findings.py +0 -0
  573. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_status_advisory_terminal.py +0 -0
  574. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_status_contested_tag.py +0 -0
  575. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_status_merge_queue.py +0 -0
  576. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_status_provider.py +0 -0
  577. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_status_review_finalizing.py +0 -0
  578. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_status_test_failed_tag.py +0 -0
  579. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_status_usage_limit.py +0 -0
  580. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_sync_comments_873.py +0 -0
  581. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_test_plan.py +0 -0
  582. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_track.py +0 -0
  583. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_tui_update.py +0 -0
  584. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cli_wait.py +0 -0
  585. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_client_base_install.py +0 -0
  586. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_client_resource_migration_1946.py +0 -0
  587. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_commands_common.py +0 -0
  588. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_comments.py +0 -0
  589. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_completion_summary.py +0 -0
  590. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_config.py +0 -0
  591. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_config_acceptance.py +0 -0
  592. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_config_audit.py +0 -0
  593. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_config_pricing.py +0 -0
  594. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  595. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_config_usage_gate.py +0 -0
  596. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_confirm_test.py +0 -0
  597. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_conflict_fix.py +0 -0
  598. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_conflict_fix_semantic.py +0 -0
  599. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  600. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_coord_test.py +0 -0
  601. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  602. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_coord_test_runner_baseline.py +0 -0
  603. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_coord_test_runner_populated_home.py +0 -0
  604. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_coord_test_runner_routing.py +0 -0
  605. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_coord_test_runner_toolchain.py +0 -0
  606. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_coord_uat.py +0 -0
  607. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_coord_web_sse_restart_live.py +0 -0
  608. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_coordinator_machine.py +0 -0
  609. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_cross_platform_imports.py +0 -0
  610. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_dao.py +0 -0
  611. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_dashboard.py +0 -0
  612. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_dashboard_fixture.py +0 -0
  613. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_dashboard_terminal.py +0 -0
  614. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_dashboard_terminal_live.py +0 -0
  615. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_db.py +0 -0
  616. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_dead_end.py +0 -0
  617. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_decomposition_chat.py +0 -0
  618. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_deploy_coord_db_backup.py +0 -0
  619. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_deploy_coord_web_dist.py +0 -0
  620. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_deploy_coord_web_rollback.py +0 -0
  621. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_deploy_drive_queue_unit.py +0 -0
  622. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_deploy_failure_notify_unit.py +0 -0
  623. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_deploy_manifest.py +0 -0
  624. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_deploy_notify_unit.py +0 -0
  625. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_deploy_units_lane.py +0 -0
  626. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_deploy_web_unit.py +0 -0
  627. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_deprecation_telemetry.py +0 -0
  628. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_deps.py +0 -0
  629. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_diagnose.py +0 -0
  630. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_dispatch_target_validation.py +0 -0
  631. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_dist_name.py +0 -0
  632. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_done_housekeeping.py +0 -0
  633. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_drive.py +0 -0
  634. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_drive_queue.py +0 -0
  635. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_drive_queue_blocked_rendering.py +0 -0
  636. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_drive_queue_launch_argv.py +0 -0
  637. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  638. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_drive_queue_roll_pending.py +0 -0
  639. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  640. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_drive_state.py +0 -0
  641. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_drive_tmux.py +0 -0
  642. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_epic_up_capability_detection.py +0 -0
  643. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  644. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_epic_up_image_provenance.py +0 -0
  645. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_errors.py +0 -0
  646. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_events.py +0 -0
  647. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_failure_class.py +0 -0
  648. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_filelock.py +0 -0
  649. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  650. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_fix_of_force_override.py +0 -0
  651. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_fleet_config_health.py +0 -0
  652. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_fleet_health_probes.py +0 -0
  653. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_fleet_health_snapshot.py +0 -0
  654. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_fleet_watchdog.py +0 -0
  655. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_forge_availability.py +0 -0
  656. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_freshness.py +0 -0
  657. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_gate_a.py +0 -0
  658. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_gate_b.py +0 -0
  659. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_gate_snapshot_staleness.py +0 -0
  660. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_gates.py +0 -0
  661. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  662. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_gen_mock_index.py +0 -0
  663. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_generated_rust_fixture.py +0 -0
  664. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_generated_rust_requests.py +0 -0
  665. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_generated_types_fixture.py +0 -0
  666. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_github_ops.py +0 -0
  667. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_github_throttle.py +0 -0
  668. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_goal.py +0 -0
  669. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_graph_health.py +0 -0
  670. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_graph_selfheal_absent_2237.py +0 -0
  671. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_handoff.py +0 -0
  672. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_checks.py +0 -0
  673. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_cli.py +0 -0
  674. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_cli_graph.py +0 -0
  675. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_config.py +0 -0
  676. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_context.py +0 -0
  677. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_coord_tui_ci_pin.py +0 -0
  678. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_coord_web_ci_pin.py +0 -0
  679. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_deploy_lane_facts.py +0 -0
  680. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_fix.py +0 -0
  681. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_incident_regression.py +0 -0
  682. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_issues_sync_staleness.py +0 -0
  683. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_pypi.py +0 -0
  684. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_registry.py +0 -0
  685. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_release_cordon_probe.py +0 -0
  686. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_timer_active.py +0 -0
  687. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_toolchain.py +0 -0
  688. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_unit_drift.py +0 -0
  689. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_unit_enablement.py +0 -0
  690. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_health_wedged_drive_queue.py +0 -0
  691. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_hooks.py +0 -0
  692. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_human_attended_437.py +0 -0
  693. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_init.py +0 -0
  694. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_install_agent_venv_2911.py +0 -0
  695. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_integration.py +0 -0
  696. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_interactive_briefing_echo.py +0 -0
  697. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_interactive_pane_log_2541.py +0 -0
  698. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_interactive_prefill_state.py +0 -0
  699. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_interactive_session_relaunch.py +0 -0
  700. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_interactive_test_verdict_backstop.py +0 -0
  701. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_interactive_token_attribution.py +0 -0
  702. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_interactive_worktree.py +0 -0
  703. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_issue_store_seam.py +0 -0
  704. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_issues_sync_status.py +0 -0
  705. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_liveness_auditor.py +0 -0
  706. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_liveness_notify.py +0 -0
  707. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_lock_contention_ratchet.py +0 -0
  708. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_machine_onboard.py +0 -0
  709. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_machine_pause.py +0 -0
  710. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_merge_queue.py +0 -0
  711. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_merge_verify.py +0 -0
  712. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_milestone_chat.py +0 -0
  713. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_milestone_dispatch.py +0 -0
  714. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_milestone_gate.py +0 -0
  715. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_milestone_order.py +0 -0
  716. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_milestone_seam.py +0 -0
  717. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_mock_author.py +0 -0
  718. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_model_tiering.py +0 -0
  719. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_models_config_labels.py +0 -0
  720. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_needs_attention.py +0 -0
  721. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_network.py +0 -0
  722. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_new_issue_chat.py +0 -0
  723. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_next_release_tag.py +0 -0
  724. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_node_shim.py +0 -0
  725. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_notifier_baseline.py +0 -0
  726. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_notifier_cli.py +0 -0
  727. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_notifier_collect.py +0 -0
  728. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_notifier_config.py +0 -0
  729. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_notifier_drive_seam.py +0 -0
  730. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_notifier_isolation.py +0 -0
  731. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_notifier_predicate.py +0 -0
  732. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_notifier_quiet_hours.py +0 -0
  733. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_notifier_service.py +0 -0
  734. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_notify.py +0 -0
  735. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_notify_drain.py +0 -0
  736. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_openapi.py +0 -0
  737. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_overlap_fence.py +0 -0
  738. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_overlap_predict.py +0 -0
  739. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_packaged_deploy_units.py +0 -0
  740. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_parentage.py +0 -0
  741. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_paste_landed.py +0 -0
  742. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  743. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_pipeline.py +0 -0
  744. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_plan_followup_approve_plan_command.py +0 -0
  745. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_plan_followup_pr_command.py +0 -0
  746. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_plan_followup_review_command.py +0 -0
  747. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_plan_only.py +0 -0
  748. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_plan_parser.py +0 -0
  749. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_platform_paths.py +0 -0
  750. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_portal_bridge.py +0 -0
  751. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_portal_config.py +0 -0
  752. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_portal_store.py +0 -0
  753. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_portal_sync.py +0 -0
  754. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_pr_body_lint.py +0 -0
  755. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_prereqs.py +0 -0
  756. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_production_db_guard.py +0 -0
  757. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_progress.py +0 -0
  758. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_provider_seam.py +0 -0
  759. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_providers.py +0 -0
  760. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_providers_config_labels.py +0 -0
  761. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_providers_pty.py +0 -0
  762. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_py_rust_mirror_inventory.py +0 -0
  763. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_quiet_hours.py +0 -0
  764. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_quiet_hours_store_2146.py +0 -0
  765. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_reap_merged_sessions.py +0 -0
  766. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_reap_stale_interactive_tick.py +0 -0
  767. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_reconcile.py +0 -0
  768. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_reconcile_branch.py +0 -0
  769. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_reconcile_completions.py +0 -0
  770. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  771. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_reconcile_merges.py +0 -0
  772. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_reconcile_no_agent_record.py +0 -0
  773. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_reconcile_tick.py +0 -0
  774. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_reconcile_usage_limit_done.py +0 -0
  775. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_refine_chat.py +0 -0
  776. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_release_cordon_2101.py +0 -0
  777. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  778. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_release_cordon_deadlock_2240.py +0 -0
  779. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_release_cordon_stuck_2490.py +0 -0
  780. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_release_propagate.py +0 -0
  781. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_release_propagate_threshold.py +0 -0
  782. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_release_roll_between_legs_2854.py +0 -0
  783. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_release_roll_window_handoff.py +0 -0
  784. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_release_unified_1242.py +0 -0
  785. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_release_verify.py +0 -0
  786. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_release_window.py +0 -0
  787. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_remote_auto_prune.py +0 -0
  788. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_remote_interactive_reaper.py +0 -0
  789. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_repo_add.py +0 -0
  790. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_repo_edit_2220.py +0 -0
  791. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_repo_graph_fleet_2237.py +0 -0
  792. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_repo_onboard_2220.py +0 -0
  793. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_report_result_push.py +0 -0
  794. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_reports.py +0 -0
  795. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_retry.py +0 -0
  796. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_retry_advisory_1606.py +0 -0
  797. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_retry_type_1636.py +0 -0
  798. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_revalidate.py +0 -0
  799. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_review_end_review_without_verdict.py +0 -0
  800. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_review_parse_failure_diagnostic.py +0 -0
  801. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_review_reaffirm.py +0 -0
  802. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_review_state.py +0 -0
  803. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_review_verdict_backstop.py +0 -0
  804. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_review_verdict_override_audit.py +0 -0
  805. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_review_verdict_relay.py +0 -0
  806. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_review_zero_commits.py +0 -0
  807. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_scoped_review_wiring.py +0 -0
  808. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_scorecard.py +0 -0
  809. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_self_health.py +0 -0
  810. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_serve.py +0 -0
  811. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_serve_app_board_trim.py +0 -0
  812. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_serve_rest_routes.py +0 -0
  813. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_session.py +0 -0
  814. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_slice_issue_attribution.py +0 -0
  815. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_smoke.py +0 -0
  816. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_smoke_live_checkout_restore.py +0 -0
  817. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_smoke_workflow.py +0 -0
  818. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_spend_ceiling.py +0 -0
  819. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_spend_ceiling_coordinator.py +0 -0
  820. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_split.py +0 -0
  821. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_split_work.py +0 -0
  822. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_sql_dialect.py +0 -0
  823. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_sqlite_connect_ratchet.py +0 -0
  824. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_stage_projection.py +0 -0
  825. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_stale_busy_reviewer_697.py +0 -0
  826. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_stalled_pipeline.py +0 -0
  827. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_state.py +0 -0
  828. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_state_review_findings_daemon.py +0 -0
  829. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_status_fleet_footer.py +0 -0
  830. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_stop_1567.py +0 -0
  831. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_store_contract.py +0 -0
  832. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_store_migrate.py +0 -0
  833. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_stuck.py +0 -0
  834. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  835. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_terminal_command.py +0 -0
  836. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_test_author.py +0 -0
  837. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_test_chat.py +0 -0
  838. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_test_orchestrator.py +0 -0
  839. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_test_report.py +0 -0
  840. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_test_verdict_parsing.py +0 -0
  841. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_test_verdict_transcript_floor.py +0 -0
  842. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_text_io_encoding_audit.py +0 -0
  843. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_thin_client_board_audit.py +0 -0
  844. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_thin_client_config_load_1080.py +0 -0
  845. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_thin_client_daemon_routing_906.py +0 -0
  846. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_tmux_host.py +0 -0
  847. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_tmux_session.py +0 -0
  848. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_transcript_floor.py +0 -0
  849. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_usage.py +0 -0
  850. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_usage_limits.py +0 -0
  851. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_usage_rollup.py +0 -0
  852. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_venv_live_install_2121.py +0 -0
  853. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_version_single_source.py +0 -0
  854. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_watch.py +0 -0
  855. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  856. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_worker_env_venv_isolation.py +0 -0
  857. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_worker_events.py +0 -0
  858. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_worker_image_pin_sync.py +0 -0
  859. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_worker_safety.py +0 -0
  860. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_worker_test_scoping.py +0 -0
  861. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_worktree.py +0 -0
  862. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  863. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/test_write_parity.py +0 -0
  864. {code_coordinator-0.5.305 → code_coordinator-0.5.307}/tests/write_parity.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.305
3
+ Version: 0.5.307
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.305
3
+ Version: 0.5.307
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
@@ -812,51 +812,4 @@ tests/fixtures/test_report/pytest_collection_error.txt
812
812
  tests/fixtures/test_report/pytest_error_string_in_body.txt
813
813
  tests/fixtures/test_report/pytest_internal_error.txt
814
814
  tests/fixtures/test_report/pytest_mixed_failures.txt
815
- tests/fixtures/test_report/pytest_no_parseable_failures.txt
816
- tui/tests/acceptance.rs
817
- tui/tests/acceptance/ms-33/audit_1039.rs
818
- tui/tests/acceptance/ms-33/contract.md
819
- tui/tests/acceptance/ms-33/manifest.yml
820
- tui/tests/acceptance/ms-33/mocks/audit-panel-detail.screen
821
- tui/tests/acceptance/ms-33/mocks/audit-panel-empty.screen
822
- tui/tests/acceptance/ms-33/mocks/audit-panel-filters.screen
823
- tui/tests/acceptance/ms-33/mocks/audit-panel-populated.screen
824
- tui/tests/acceptance/ms-38/contract.md
825
- tui/tests/acceptance/ms-38/manifest.yml
826
- tui/tests/acceptance/ms-38/plans_detail_1122.rs
827
- tui/tests/acceptance/ms-38/plans_help_1124.rs
828
- tui/tests/acceptance/ms-38/plans_rightclick_1123.rs
829
- tui/tests/acceptance/ms-38/mocks/plans-base.screen
830
- tui/tests/acceptance/ms-38/mocks/plans-detail-pane.screen
831
- tui/tests/acceptance/ms-38/mocks/plans-help-overlay.screen
832
- tui/tests/acceptance/ms-38/mocks/plans-palette.screen
833
- tui/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen
834
- tui/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen
835
- tui/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen
836
- tui/tests/acceptance/ms-65/board_split_2288.rs
837
- tui/tests/acceptance/ms-65/board_tabs_2282.rs
838
- tui/tests/acceptance/ms-65/board_tabs_close_2283.rs
839
- tui/tests/acceptance/ms-65/contract.md
840
- tui/tests/acceptance/ms-65/detail_substate_2285.rs
841
- tui/tests/acceptance/ms-65/manifest.yml
842
- tui/tests/acceptance/ms-65/pipeline_tabs_2284.rs
843
- tui/tests/acceptance/ms-65/tabs_discoverability_2287.rs
844
- tui/tests/acceptance/ms-65/tabs_persistence_2286.rs
845
- tui/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen
846
- tui/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen
847
- tui/tests/acceptance/ms-65/mocks/board-preview-tab.screen
848
- tui/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen
849
- tui/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen
850
- tui/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen
851
- tui/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen
852
- tui/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen
853
- tui/tests/acceptance/ms-67/approved_items_2532.rs
854
- tui/tests/acceptance/ms-67/contract.md
855
- tui/tests/acceptance/ms-67/manifest.yml
856
- tui/tests/acceptance/ms-67/pull_decomposition_2533.rs
857
- tui/tests/acceptance/ms-67/manifest.d/2533.yml
858
- tui/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen
859
- tui/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen
860
- tui/tests/acceptance/ms-67/mocks/approved-items-detail.screen
861
- tui/tests/acceptance/ms-67/mocks/approved-items-empty.screen
862
- tui/tests/acceptance/ms-67/mocks/approved-items-populated.screen
815
+ tests/fixtures/test_report/pytest_no_parseable_failures.txt
@@ -806,53 +806,6 @@
806
806
  "tests/test_worktree.py",
807
807
  "tests/test_worktree_rmtree_chokepoint.py",
808
808
  "tests/test_write_parity.py",
809
- "tests/write_parity.py",
810
- "tui/tests/acceptance.rs",
811
- "tui/tests/acceptance/ms-33/audit_1039.rs",
812
- "tui/tests/acceptance/ms-33/contract.md",
813
- "tui/tests/acceptance/ms-33/manifest.yml",
814
- "tui/tests/acceptance/ms-33/mocks/audit-panel-detail.screen",
815
- "tui/tests/acceptance/ms-33/mocks/audit-panel-empty.screen",
816
- "tui/tests/acceptance/ms-33/mocks/audit-panel-filters.screen",
817
- "tui/tests/acceptance/ms-33/mocks/audit-panel-populated.screen",
818
- "tui/tests/acceptance/ms-38/contract.md",
819
- "tui/tests/acceptance/ms-38/manifest.yml",
820
- "tui/tests/acceptance/ms-38/mocks/plans-base.screen",
821
- "tui/tests/acceptance/ms-38/mocks/plans-detail-pane.screen",
822
- "tui/tests/acceptance/ms-38/mocks/plans-help-overlay.screen",
823
- "tui/tests/acceptance/ms-38/mocks/plans-palette.screen",
824
- "tui/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen",
825
- "tui/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen",
826
- "tui/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen",
827
- "tui/tests/acceptance/ms-38/plans_detail_1122.rs",
828
- "tui/tests/acceptance/ms-38/plans_help_1124.rs",
829
- "tui/tests/acceptance/ms-38/plans_rightclick_1123.rs",
830
- "tui/tests/acceptance/ms-65/board_split_2288.rs",
831
- "tui/tests/acceptance/ms-65/board_tabs_2282.rs",
832
- "tui/tests/acceptance/ms-65/board_tabs_close_2283.rs",
833
- "tui/tests/acceptance/ms-65/contract.md",
834
- "tui/tests/acceptance/ms-65/detail_substate_2285.rs",
835
- "tui/tests/acceptance/ms-65/manifest.yml",
836
- "tui/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen",
837
- "tui/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen",
838
- "tui/tests/acceptance/ms-65/mocks/board-preview-tab.screen",
839
- "tui/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen",
840
- "tui/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen",
841
- "tui/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen",
842
- "tui/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen",
843
- "tui/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen",
844
- "tui/tests/acceptance/ms-65/pipeline_tabs_2284.rs",
845
- "tui/tests/acceptance/ms-65/tabs_discoverability_2287.rs",
846
- "tui/tests/acceptance/ms-65/tabs_persistence_2286.rs",
847
- "tui/tests/acceptance/ms-67/approved_items_2532.rs",
848
- "tui/tests/acceptance/ms-67/contract.md",
849
- "tui/tests/acceptance/ms-67/manifest.d/2533.yml",
850
- "tui/tests/acceptance/ms-67/manifest.yml",
851
- "tui/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen",
852
- "tui/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen",
853
- "tui/tests/acceptance/ms-67/mocks/approved-items-detail.screen",
854
- "tui/tests/acceptance/ms-67/mocks/approved-items-empty.screen",
855
- "tui/tests/acceptance/ms-67/mocks/approved-items-populated.screen",
856
- "tui/tests/acceptance/ms-67/pull_decomposition_2533.rs"
809
+ "tests/write_parity.py"
857
810
  ]
858
811
  }
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.305",
2
+ "tag": "0.5.307",
3
3
  "distance": 0,
4
- "node": "g1efaecf9c334685b978b9ee6b0ceb8ed9ca0ab27",
4
+ "node": "g82fe5f5ab0e0baa2d9fe5b79897b0aa0e7c3c889",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-30"
@@ -1449,12 +1449,33 @@ def release_propagate( # noqa: PLR0912, PLR0915 — a pipeline; the decisions a
1449
1449
  # operator got — "fix by hand" with no hand to follow. When the
1450
1450
  # finding names a host, name the two commands that actually clear
1451
1451
  # it, so nobody has to derive them from scratch under time pressure.
1452
- remedy = (
1453
- f" — run `coord agent update --machine {host}` then "
1454
- f"`coord release cordon --clear {host}`"
1455
- if host
1456
- else ""
1457
- )
1452
+ #
1453
+ # #2963: that fixed remedy is `coord agent update` — which swaps
1454
+ # the venv and nothing else — for EVERY advisory finding, including
1455
+ # ones on the `units` lane (`unit coord-agent.service`, #1831/#1927).
1456
+ # `coord agent update` never installs a unit file, so printing it
1457
+ # for a stale-unit finding sent an operator to run the one command
1458
+ # guaranteed not to fix it (#2938's `Restart=always` fix shipped in
1459
+ # four releases and reached zero hosts' live systemd). The units
1460
+ # lane's own health check (`coord.health.checks.unit_drift`) already
1461
+ # computed the exact per-host, per-unit remedy into `detail` — reuse
1462
+ # it here instead of fabricating a wrong one.
1463
+ lane = str(finding.get("lane") or "")
1464
+ if rp.verify_lane_kind(lane) == rp.LANE_UNITS:
1465
+ own_detail = str(finding.get("detail") or "").strip()
1466
+ remedy = (
1467
+ f" — {own_detail}"
1468
+ if own_detail
1469
+ else " — run `coord release propagate --lane units` to "
1470
+ "install it (mask-safe since #2812)"
1471
+ )
1472
+ else:
1473
+ remedy = (
1474
+ f" — run `coord agent update --machine {host}` then "
1475
+ f"`coord release cordon --clear {host}`"
1476
+ if host
1477
+ else ""
1478
+ )
1458
1479
  click.echo(
1459
1480
  f" ~ advisory [{finding.get('severity')}] {host} "
1460
1481
  f"{finding.get('lane')}: {finding.get('summary')} "
@@ -17,7 +17,7 @@ from coord.comments import (
17
17
  format_refused_policy,
18
18
  )
19
19
  from coord.config import Config
20
- from coord.models import Proposal, Repo
20
+ from coord.models import Proposal, Repo, coordinator_owned_docs
21
21
 
22
22
  AGENT_PORT = 7433
23
23
 
@@ -582,9 +582,14 @@ def dispatch(
582
582
  deny_commands = repo.worker_permissions.deny
583
583
 
584
584
  # Resolve coordinator-only files (workers must not read or modify these).
585
- files_forbidden: list[str] = []
586
- if repo is not None and repo.coordinator_only_files:
587
- files_forbidden = list(repo.coordinator_only_files)
585
+ # #2966: coordinator_only_files was set by zero repos fleet-wide, so this
586
+ # started empty for every work dispatch and only ever grew sealed
587
+ # acceptance paths below — never a doc. coordinator_owned_docs() unions
588
+ # in a fleet-wide default (the repo's own CLAUDE.md) regardless of
589
+ # whether coordinator_only_files is configured, so "only the coordinator
590
+ # writes docs" is enforced (advisory, like every non-oracle
591
+ # files_forbidden entry) without depending on 10 repos' worth of config.
592
+ files_forbidden: list[str] = coordinator_owned_docs(repo)
588
593
 
589
594
  # #944 sealing v1 (docs/ORACLE_LOOP.md): the acceptance oracle is
590
595
  # read-only/run-only for the worker — it's authored by an independent
@@ -423,6 +423,50 @@ CLOSES_ISSUE_TYPES: frozenset[str] = frozenset({"work"})
423
423
  # which must also list it since it mutates GitHub via `gh pr create`.
424
424
  PR_HELPER_TYPE = "pr-helper"
425
425
 
426
+ # #2966: "only the coordinator writes docs" (this repo's CLAUDE.md says so
427
+ # for every worker) was text-only enforcement — `Repo.coordinator_only_files`
428
+ # is the config key that was clearly designed to seed a work dispatch's
429
+ # `files_forbidden` with the repo's shared docs (see `coord.dispatch.dispatch`
430
+ # lines around #587), but it was set by ZERO of the fleet's 10 repos, so
431
+ # `files_forbidden` started empty for every work dispatch and only ever
432
+ # gained sealed acceptance paths (#944), never a doc. Two workers in the same
433
+ # repo consequently rewrote the same CLAUDE.md section in the same week,
434
+ # producing a semantic (prose) merge conflict that stalled a five-issue
435
+ # cross-repo chain for ~98 ticks until an operator intervened.
436
+ #
437
+ # Mirror the #944 sealed-paths fix for the same class of problem: don't
438
+ # depend on every operator remembering to configure this per repo. A repo's
439
+ # own rulebook is auto-forbidden unconditionally — `coordinator_owned_docs()`
440
+ # below UNIONS this default in regardless of what `coordinator_only_files`
441
+ # says, the same way sealed acceptance paths are auto-added regardless of
442
+ # `coordinator_only_files` (`coord.dispatch.dispatch`'s #944 comment).
443
+ COORDINATOR_OWNED_DOC_DEFAULTS: tuple[str, ...] = ("CLAUDE.md",)
444
+
445
+
446
+ def coordinator_owned_docs(repo: "Repo | None") -> list[str]:
447
+ """Coordinator-only doc paths for *repo* (#2966).
448
+
449
+ Returns :data:`COORDINATOR_OWNED_DOC_DEFAULTS` UNIONED with *repo*'s own
450
+ ``coordinator_only_files`` (if any), deduped and order-preserving
451
+ (defaults first). Callers use this instead of reading
452
+ ``repo.coordinator_only_files`` directly so the fleet-wide default keeps
453
+ applying even for the common case — today, every repo — where
454
+ ``coordinator_only_files`` is unset.
455
+
456
+ #1388-style fail-open: some ``Repo``-shaped stand-ins (a
457
+ wire-reconstructed object, or a stale install predating this field)
458
+ don't carry ``coordinator_only_files`` at all — ``getattr`` with a
459
+ default treats that the same as "unset" rather than raising, matching
460
+ how ``dispatch_review`` already tolerates a stand-in missing
461
+ ``develop_branch``.
462
+ """
463
+ result: list[str] = list(COORDINATOR_OWNED_DOC_DEFAULTS)
464
+ if repo is not None:
465
+ for f in getattr(repo, "coordinator_only_files", None) or []:
466
+ if f not in result:
467
+ result.append(f)
468
+ return result
469
+
426
470
 
427
471
  def trust_issue_closed_for(assignment_type: str | None) -> bool:
428
472
  """Whether :func:`coord.github_ops.work_is_terminal` may trust
@@ -48,6 +48,7 @@ from coord.models import (
48
48
  Assignment,
49
49
  Board,
50
50
  Machine,
51
+ coordinator_owned_docs,
51
52
  trust_issue_closed_for,
52
53
  )
53
54
  from coord.refine_chat import MAX_CLAUDE_MD_CHARS
@@ -1558,6 +1559,7 @@ def build_review_briefing(
1558
1559
  diff_text: str | None = None,
1559
1560
  sealed_paths: list[str] | None = None,
1560
1561
  sealed_entrypoints: list[str] | None = None,
1562
+ coordinator_doc_paths: list[str] | None = None,
1561
1563
  assignment_type: str = "work",
1562
1564
  provider_same_as_worker: bool = False,
1563
1565
  review_provider: str | None = None,
@@ -1632,6 +1634,18 @@ def build_review_briefing(
1632
1634
  is expected and non-blocking. Every other type (default ``"work"``) keeps
1633
1635
  the original rule unchanged: any touch to *sealed_paths* is mandatory
1634
1636
  ``request-changes``.
1637
+
1638
+ *coordinator_doc_paths* (#2966) is the repo's coordinator-owned doc set —
1639
+ :func:`coord.models.coordinator_owned_docs`, the repo's own CLAUDE.md plus
1640
+ anything it additionally lists under ``coordinator_only_files``. CLAUDE.md
1641
+ already states "only the coordinator writes docs" for every worker, but
1642
+ that was prose-only: nothing structurally backstopped it, and two workers
1643
+ independently rewriting the same CLAUDE.md section produced a semantic
1644
+ merge conflict that stalled a five-issue chain (#2966). Unlike
1645
+ *sealed_paths*, this rule never inverts — no assignment type's job is
1646
+ ever editing the repo's own rulebook, so any diff that touches one of
1647
+ these paths is mandatory ``request-changes`` regardless of
1648
+ *assignment_type*.
1635
1649
  """
1636
1650
 
1637
1651
  lines: list[str] = []
@@ -1829,6 +1843,43 @@ def build_review_briefing(
1829
1843
  "this is a hard rule, not a suggestion (docs/ORACLE_LOOP.md)."
1830
1844
  )
1831
1845
 
1846
+ if coordinator_doc_paths:
1847
+ # #2966: "only the coordinator writes docs" was prose-only — nothing
1848
+ # backstopped it structurally, and two workers independently
1849
+ # rewrote the same CLAUDE.md section in the same week, producing a
1850
+ # semantic (prose) merge conflict that stalled a five-issue chain.
1851
+ # This rule never inverts by assignment_type (unlike sealed_paths
1852
+ # above): no dispatched worker type's job is ever editing the
1853
+ # repo's own rulebook.
1854
+ lines.append("")
1855
+ touched_docs = (
1856
+ _diff_touched_sealed_paths(diff_text, coordinator_doc_paths)
1857
+ if diff_text else []
1858
+ )
1859
+ if touched_docs:
1860
+ lines.append("## \U0001f6a8 COORDINATOR-OWNED DOC EDITED")
1861
+ lines.append("")
1862
+ lines.append(
1863
+ "The diff modifies a coordinator-owned doc: "
1864
+ + ", ".join(f"`{p}`" for p in touched_docs)
1865
+ + ". \"Only the coordinator writes docs\" — a worker must "
1866
+ "never edit the repo's own rulebook or other shared docs; "
1867
+ "parallel doc edits from independent workers collide "
1868
+ "(#2966). **request-changes is mandatory here**, regardless "
1869
+ "of anything else in this diff — even if the edit itself "
1870
+ "looks correct in isolation."
1871
+ )
1872
+ else:
1873
+ lines.append("## Coordinator-owned docs (do not touch)")
1874
+ lines.append("")
1875
+ lines.append(
1876
+ "This repo reserves "
1877
+ + ", ".join(f"`{p}`" for p in coordinator_doc_paths)
1878
+ + " for the coordinator (#2966). If the diff modifies any of "
1879
+ "them, **request-changes** — this is a hard rule, not a "
1880
+ "suggestion, regardless of assignment type."
1881
+ )
1882
+
1832
1883
  lines.append("")
1833
1884
  lines.append("## What to do")
1834
1885
  lines.append("")
@@ -2637,6 +2688,12 @@ def dispatch_review(
2637
2688
  sealed_paths = config.acceptance.sealed_paths(completed.repo_name)
2638
2689
  sealed_entrypoints = config.acceptance.entrypoints(completed.repo_name)
2639
2690
 
2691
+ # #2966: coordinator-owned docs (repo's own CLAUDE.md plus anything it
2692
+ # additionally lists under coordinator_only_files) — see
2693
+ # coordinator_owned_docs' docstring for why this doesn't depend on the
2694
+ # repo actually configuring coordinator_only_files.
2695
+ coordinator_doc_paths = coordinator_owned_docs(repo)
2696
+
2640
2697
  client = http_client or httpx
2641
2698
 
2642
2699
  # Iterate candidates in priority order. On agent rejection (4xx from a
@@ -2706,6 +2763,7 @@ def dispatch_review(
2706
2763
  diff_text=diff_text,
2707
2764
  sealed_paths=sealed_paths,
2708
2765
  sealed_entrypoints=sealed_entrypoints,
2766
+ coordinator_doc_paths=coordinator_doc_paths,
2709
2767
  assignment_type=completed.type,
2710
2768
  )
2711
2769
 
@@ -1434,6 +1434,61 @@ def test_the_outside_reach_message_names_the_manual_remedy(
1434
1434
  assert "coord release cordon --clear laptop" in result.output
1435
1435
 
1436
1436
 
1437
+ def test_a_stale_unit_advisory_names_the_units_remedy_not_agent_update(
1438
+ valid_config_path, state_dir, no_network, monkeypatch
1439
+ ):
1440
+ """#2963: a `unit ...` lane finding (`coord.health.checks.unit_drift`,
1441
+ #1831/#1927) got the exact same fixed remedy as every other advisory —
1442
+ `coord agent update --machine <host>` — even though that command only
1443
+ swaps the venv and never touches `~/.config/systemd/user/`. Followed
1444
+ literally it does nothing for a stale unit, which is how #2938's
1445
+ `Restart=always` fix (shipped four releases ago) reached zero hosts'
1446
+ live systemd: every `--lane python` run reported '✓ verified' with the
1447
+ units gap present only as a silenced advisory pointing at the wrong fix.
1448
+
1449
+ The health check itself already computes the correct, host-specific
1450
+ remedy into `Finding.detail` (see `unit_drift.py`'s `cp ... &&
1451
+ systemctl --user restart ...` / templated-`sed` remedies) — this must be
1452
+ surfaced instead of a fabricated one."""
1453
+ from coord import release_verify as rv
1454
+
1455
+ _stub_lanes(monkeypatch)
1456
+ _stub_verify(
1457
+ monkeypatch,
1458
+ versions={"laptop": ["0.4.110"], "server": ["0.4.110"]},
1459
+ daemon="server",
1460
+ findings=[
1461
+ rv.Finding(
1462
+ severity="warn",
1463
+ host="laptop",
1464
+ lane="unit coord-agent.service",
1465
+ summary="stale — installed 240h ago, 39 line(s) differ",
1466
+ detail=(
1467
+ "cp /deploy/coord-agent.service "
1468
+ "~/.config/systemd/user/coord-agent.service && "
1469
+ "systemctl --user daemon-reload && systemctl --user "
1470
+ "restart coord-agent # reference: packaged coord 0.4.111"
1471
+ ),
1472
+ ),
1473
+ ],
1474
+ )
1475
+ # #1831: units are rolled by their OWN lane (`POST /deploy-units`), never
1476
+ # by the python lane — `--lane python` here reproduces the exact
1477
+ # invocation from #2963's repro, which is also this fleet's normal
1478
+ # manual-release habit (the auto timer is disabled, per
1479
+ # docs/AGENT_OPERATIONS.md). The units lane is therefore never part of
1480
+ # this run's `attempted_scope`, so the finding lands as advisory.
1481
+ result = CliRunner().invoke(
1482
+ main,
1483
+ ["release", "propagate", "--config", str(valid_config_path),
1484
+ "--target", "0.4.111", "--lane", "python"],
1485
+ )
1486
+ assert result.exit_code == 0, result.output
1487
+ assert "advisory" in result.output
1488
+ assert "coord agent update --machine laptop" not in result.output
1489
+ assert "systemctl --user restart coord-agent" in result.output
1490
+
1491
+
1437
1492
  def test_a_crit_on_a_lane_this_run_rolled_still_reverts(valid_config_path, state_dir,
1438
1493
  no_network, monkeypatch):
1439
1494
  """Scoping the gate is not removing it."""
@@ -302,7 +302,10 @@ class TestDispatch:
302
302
  )
303
303
  dispatch(proposal, cfg)
304
304
  payload = mock_post.call_args.kwargs["json"]
305
- assert payload["files_forbidden"] == ["README.md", "CHANGELOG.md"]
305
+ # #2966: CLAUDE.md is unioned in as a fleet-wide default ahead of
306
+ # the repo's own configured coordinator_only_files — see
307
+ # coord.models.coordinator_owned_docs.
308
+ assert payload["files_forbidden"] == ["CLAUDE.md", "README.md", "CHANGELOG.md"]
306
309
 
307
310
  @patch("coord.dispatch.httpx.post")
308
311
  def test_payload_auto_seals_acceptance_dir_when_driver_configured(
@@ -404,7 +407,33 @@ class TestDispatch:
404
407
  mock_post.return_value = mock_resp
405
408
  dispatch(proposal, config)
406
409
  payload = mock_post.call_args.kwargs["json"]
407
- assert payload["files_forbidden"] == []
410
+ # #2966: no acceptance driver and no coordinator_only_files configured
411
+ # still carries the fleet-wide doc default (CLAUDE.md) — the source
412
+ # list is never actually empty, unlike pre-#2966.
413
+ assert payload["files_forbidden"] == ["CLAUDE.md"]
414
+
415
+ @patch("coord.dispatch.httpx.post")
416
+ def test_payload_forbids_claude_md_by_default(
417
+ self, mock_post: MagicMock, proposal: Proposal,
418
+ ) -> None:
419
+ """#2966: repo.coordinator_only_files is set by zero repos fleet-wide,
420
+ so files_forbidden must not depend on it to protect the repo's own
421
+ rulebook — CLAUDE.md is auto-forbidden the same way sealed acceptance
422
+ paths are auto-added regardless of config (#944)."""
423
+ mock_resp = MagicMock()
424
+ mock_resp.json.return_value = {"ok": True}
425
+ mock_post.return_value = mock_resp
426
+
427
+ cfg = Config(
428
+ repos=[Repo(name="api", github="acme/api")],
429
+ machines=[Machine(
430
+ name="laptop", host="laptop.tailnet", repos=["api"],
431
+ repo_paths={"api": "/home/user/src/api"},
432
+ )],
433
+ )
434
+ dispatch(proposal, cfg)
435
+ payload = mock_post.call_args.kwargs["json"]
436
+ assert "CLAUDE.md" in payload["files_forbidden"]
408
437
 
409
438
  @patch("coord.dispatch.httpx.post")
410
439
  def test_payload_acceptance_seal_dedupes_with_coordinator_only_files(
@@ -158,3 +158,44 @@ def test_is_policy_refusal_reason_fails_open_on_anything_else(text):
158
158
  from coord.models import is_policy_refusal_reason
159
159
 
160
160
  assert is_policy_refusal_reason(text) is False
161
+
162
+
163
+ # ── #2966: coordinator_owned_docs — "only the coordinator writes docs" ──────
164
+
165
+
166
+ def test_coordinator_owned_docs_defaults_to_claude_md_when_unconfigured():
167
+ """coordinator_only_files was set by zero repos fleet-wide — the fleet
168
+ default must not depend on it."""
169
+ from coord.models import coordinator_owned_docs
170
+
171
+ repo = Repo(name="api", github="acme/api")
172
+ assert coordinator_owned_docs(repo) == ["CLAUDE.md"]
173
+
174
+
175
+ def test_coordinator_owned_docs_unions_configured_files_after_default():
176
+ from coord.models import coordinator_owned_docs
177
+
178
+ repo = Repo(
179
+ name="api", github="acme/api",
180
+ coordinator_only_files=["README.md", "CLAUDE.md", "CHANGELOG.md"],
181
+ )
182
+ # Dedupe: CLAUDE.md is already in the default, so it must not repeat.
183
+ assert coordinator_owned_docs(repo) == ["CLAUDE.md", "README.md", "CHANGELOG.md"]
184
+
185
+
186
+ def test_coordinator_owned_docs_handles_none_repo():
187
+ from coord.models import coordinator_owned_docs
188
+
189
+ assert coordinator_owned_docs(None) == ["CLAUDE.md"]
190
+
191
+
192
+ def test_coordinator_owned_docs_fails_open_on_repo_stand_in_missing_attribute():
193
+ """#1388-style stand-in: a Repo-shaped object predating this field must
194
+ not raise AttributeError — same fail-open discipline as develop_branch."""
195
+ from coord.models import coordinator_owned_docs
196
+
197
+ class _StandInRepo:
198
+ name = "api"
199
+ github = "acme/api"
200
+
201
+ assert coordinator_owned_docs(_StandInRepo()) == ["CLAUDE.md"]
@@ -300,7 +300,11 @@ def test_dispatch_includes_coordinator_only_files_in_forbidden() -> None:
300
300
  assert payload["files_forbidden"] == ["CLAUDE.md", "coordinator.yml"]
301
301
 
302
302
 
303
- def test_dispatch_with_no_coordinator_only_files_sends_empty_forbidden() -> None:
303
+ def test_dispatch_with_no_coordinator_only_files_still_forbids_claude_md() -> None:
304
+ """#2966: coordinator_only_files was set by zero repos fleet-wide, so
305
+ files_forbidden must not depend on it to protect the repo's own
306
+ rulebook — see coord.models.coordinator_owned_docs. The source list is
307
+ never actually empty any more, unlike pre-#2966."""
304
308
  from coord.dispatch import dispatch
305
309
 
306
310
  repo = Repo(name="api", github="acme/api")
@@ -315,4 +319,4 @@ def test_dispatch_with_no_coordinator_only_files_sends_empty_forbidden() -> None
315
319
  dispatch(proposal, cfg)
316
320
 
317
321
  payload = mock_post.call_args.kwargs["json"]
318
- assert payload["files_forbidden"] == []
322
+ assert payload["files_forbidden"] == ["CLAUDE.md"]
@@ -652,6 +652,88 @@ def test_diff_touched_sealed_paths_no_match() -> None:
652
652
  assert _diff_touched_sealed_paths(diff, ["tests/acceptance/"]) == []
653
653
 
654
654
 
655
+ # ── #2966: coordinator-owned doc tamper check ───────────────────────────────
656
+ #
657
+ # "Only the coordinator writes docs" was prose-only — repo.coordinator_only_
658
+ # files was set by zero repos fleet-wide, so nothing structurally backstopped
659
+ # a worker rewriting the repo's own CLAUDE.md. Mirrors the #944 sealed-paths
660
+ # tamper checks above, but the rule never inverts by assignment_type: no
661
+ # dispatched type's job is ever editing the rulebook.
662
+
663
+ def test_briefing_no_coordinator_doc_paths_by_default() -> None:
664
+ briefing = build_review_briefing(
665
+ pr_number=42, pr_url=None, repo_github="acme/api", repo_name="api",
666
+ issue_number=7, issue_title="X", issue_body="",
667
+ branch="my-branch", worker_machine="laptop", same_as_worker=False,
668
+ reviews_cfg=ReviewsConfig(enabled=True), repo_claude_md=None,
669
+ )
670
+ assert "COORDINATOR-OWNED" not in briefing
671
+ assert "Coordinator-owned docs" not in briefing
672
+
673
+
674
+ def test_briefing_coordinator_doc_reminder_when_diff_untouched() -> None:
675
+ diff = (
676
+ "diff --git a/src/foo.py b/src/foo.py\n"
677
+ "@@ -1,2 +1,3 @@\n"
678
+ "+added_line = 1\n"
679
+ )
680
+ briefing = build_review_briefing(
681
+ pr_number=42, pr_url=None, repo_github="acme/api", repo_name="api",
682
+ issue_number=2966, issue_title="X", issue_body="",
683
+ branch="my-branch", worker_machine="laptop", same_as_worker=False,
684
+ reviews_cfg=ReviewsConfig(enabled=True), repo_claude_md=None,
685
+ diff_text=diff,
686
+ coordinator_doc_paths=["CLAUDE.md"],
687
+ )
688
+ assert "## Coordinator-owned docs (do not touch)" in briefing
689
+ assert "CLAUDE.md" in briefing
690
+ assert "COORDINATOR-OWNED DOC EDITED" not in briefing
691
+
692
+
693
+ def test_briefing_flags_tamper_when_diff_touches_coordinator_doc() -> None:
694
+ diff = (
695
+ "diff --git a/CLAUDE.md b/CLAUDE.md\n"
696
+ "--- a/CLAUDE.md\n"
697
+ "+++ b/CLAUDE.md\n"
698
+ "@@ -1,2 +1,3 @@\n"
699
+ "+some rewritten rule\n"
700
+ )
701
+ briefing = build_review_briefing(
702
+ pr_number=42, pr_url=None, repo_github="acme/api", repo_name="api",
703
+ issue_number=2966, issue_title="X", issue_body="",
704
+ branch="my-branch", worker_machine="laptop", same_as_worker=False,
705
+ reviews_cfg=ReviewsConfig(enabled=True), repo_claude_md=None,
706
+ diff_text=diff,
707
+ coordinator_doc_paths=["CLAUDE.md"],
708
+ )
709
+ assert "COORDINATOR-OWNED DOC EDITED" in briefing
710
+ assert "CLAUDE.md" in briefing
711
+ assert "request-changes is mandatory" in briefing
712
+
713
+
714
+ def test_briefing_coordinator_doc_tamper_does_not_invert_for_test_author() -> None:
715
+ """Unlike sealed_paths, this rule never flips for test-author/mock-author
716
+ — no dispatched type's job is ever editing the repo's own rulebook."""
717
+ diff = (
718
+ "diff --git a/CLAUDE.md b/CLAUDE.md\n"
719
+ "--- a/CLAUDE.md\n"
720
+ "+++ b/CLAUDE.md\n"
721
+ "@@ -1,2 +1,3 @@\n"
722
+ "+some rewritten rule\n"
723
+ )
724
+ briefing = build_review_briefing(
725
+ pr_number=42, pr_url=None, repo_github="acme/api", repo_name="api",
726
+ issue_number=2966, issue_title="X", issue_body="",
727
+ branch="my-branch", worker_machine="laptop", same_as_worker=False,
728
+ reviews_cfg=ReviewsConfig(enabled=True), repo_claude_md=None,
729
+ diff_text=diff,
730
+ coordinator_doc_paths=["CLAUDE.md"],
731
+ assignment_type="test-author",
732
+ )
733
+ assert "COORDINATOR-OWNED DOC EDITED" in briefing
734
+ assert "request-changes is mandatory" in briefing
735
+
736
+
655
737
  # ── #1175: test-author/mock-author inverse tamper check ────────────────────
656
738
 
657
739
 
@@ -1833,6 +1915,34 @@ def test_dispatch_review_flags_sealed_acceptance_dir_when_driver_configured(
1833
1915
  assert "tests/acceptance/" in payload["briefing"]
1834
1916
 
1835
1917
 
1918
+ def test_dispatch_review_flags_coordinator_owned_docs_without_config(
1919
+ two_machine_config: Config,
1920
+ ) -> None:
1921
+ """#2966: dispatch_review must thread coordinator_doc_paths through to
1922
+ the briefing for EVERY repo, not just ones that configure
1923
+ coordinator_only_files — two_machine_config's "api" repo sets neither."""
1924
+ board = Board()
1925
+ completed = _completed_assignment(machine="laptop")
1926
+ client = _FakeHTTPClient({"id": "review-id-1"})
1927
+
1928
+ dispatch_review(
1929
+ completed, board, two_machine_config,
1930
+ http_client=client,
1931
+ pr_lookup=lambda repo_github, **kw: {
1932
+ "number": 42, "url": "https://github.com/acme/api/pull/42", "existed": True,
1933
+ },
1934
+ claude_md_reader=lambda p: None,
1935
+ issue_body_fetcher=lambda repo, num: "",
1936
+ now=123.0,
1937
+ remote_branch_checker=lambda repo, branch: True,
1938
+ )
1939
+
1940
+ assert len(client.calls) == 1
1941
+ _, payload = client.calls[0]
1942
+ assert "Coordinator-owned docs (do not touch)" in payload["briefing"]
1943
+ assert "CLAUDE.md" in payload["briefing"]
1944
+
1945
+
1836
1946
  def test_dispatch_review_threads_assignment_type_for_test_author_exemption(
1837
1947
  two_machine_config: Config,
1838
1948
  ) -> None: