code-coordinator 0.5.126__tar.gz → 0.5.129__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 (860) hide show
  1. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/CLAUDE.md +1 -0
  2. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/PKG-INFO +1 -1
  3. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/code_coordinator.egg-info/PKG-INFO +1 -1
  4. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/code_coordinator.egg-info/SOURCES.txt +2 -0
  5. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/code_coordinator.egg-info/scm_file_list.json +2 -0
  6. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/code_coordinator.egg-info/scm_version.json +2 -2
  7. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/acceptance.py +155 -102
  8. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/milestone.py +99 -57
  9. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/milestone_dispatch.py +75 -1
  10. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/serve_app.py +5 -2
  11. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/ARCHITECTURE.md +1 -1
  12. code_coordinator-0.5.129/docs/WSL_WINDOWS_WORKER.md +77 -0
  13. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_acceptance.py +111 -0
  14. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_milestone_dispatch.py +81 -38
  15. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_milestone_dispatch.py +41 -0
  16. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/Cargo.lock +1 -1
  17. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/Cargo.toml +1 -1
  18. code_coordinator-0.5.129/tui/src/app/doc_tabs.rs +480 -0
  19. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/events.rs +84 -1
  20. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/fixtures.rs +4 -0
  21. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/mod.rs +475 -7
  22. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/render.rs +107 -4
  23. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/tests.rs +433 -0
  24. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/.claude/commands/board.md +0 -0
  25. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/.claude/commands/complete-session.md +0 -0
  26. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/.claude/commands/coordinator.md +0 -0
  27. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/.githooks/_lib.sh +0 -0
  28. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/.githooks/post-checkout +0 -0
  29. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/.githooks/post-commit +0 -0
  30. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/.githooks/post-merge +0 -0
  31. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  32. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/.github/coord-ci-acceptance.yml +0 -0
  33. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/.github/workflows/auto-release.yml +0 -0
  34. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/.github/workflows/cargo-test.yml +0 -0
  35. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/.github/workflows/publish.yml +0 -0
  36. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/.github/workflows/release-tui.yml +0 -0
  37. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/.github/workflows/test.yml +0 -0
  38. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/.gitignore +0 -0
  39. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/GOAL.md +0 -0
  40. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/LICENSE +0 -0
  41. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/MANIFEST.in +0 -0
  42. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/README.md +0 -0
  43. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/code_coordinator.egg-info/dependency_links.txt +0 -0
  44. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/code_coordinator.egg-info/entry_points.txt +0 -0
  45. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/code_coordinator.egg-info/requires.txt +0 -0
  46. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/code_coordinator.egg-info/top_level.txt +0 -0
  47. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/__init__.py +0 -0
  48. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/_board_mapping.py +0 -0
  49. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/acceptance.py +0 -0
  50. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/acceptance_drivers.py +0 -0
  51. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/agent.py +0 -0
  52. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/agent_app.py +0 -0
  53. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/agent_update.py +0 -0
  54. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/agents/opencode/.gitignore +0 -0
  55. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/agents/opencode/agents/work.md +0 -0
  56. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/agents/opencode/routing.jsonc +0 -0
  57. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/audit.py +0 -0
  58. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/auto_loop.py +0 -0
  59. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/block_log.py +0 -0
  60. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/board_bool_guard.py +0 -0
  61. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/board_service.py +0 -0
  62. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/board_wire.py +0 -0
  63. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/brain.py +0 -0
  64. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/branch_model.py +0 -0
  65. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/bug_intake.py +0 -0
  66. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/cargo_cache.py +0 -0
  67. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/ci_github.py +0 -0
  68. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/ci_store.py +0 -0
  69. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/claim.py +0 -0
  70. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/cli.py +0 -0
  71. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/client.py +0 -0
  72. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/__init__.py +0 -0
  73. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/_common.py +0 -0
  74. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/agent_ops.py +0 -0
  75. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/audit.py +0 -0
  76. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/chat.py +0 -0
  77. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/dispatch.py +0 -0
  78. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/dispatch_workers.py +0 -0
  79. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/drive.py +0 -0
  80. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/drive_queue.py +0 -0
  81. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/gate_a.py +0 -0
  82. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/gates.py +0 -0
  83. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/issues.py +0 -0
  84. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/lifecycle.py +0 -0
  85. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/merge.py +0 -0
  86. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/plan_followup.py +0 -0
  87. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/plans.py +0 -0
  88. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/portal.py +0 -0
  89. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/release.py +0 -0
  90. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/repo.py +0 -0
  91. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/report.py +0 -0
  92. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/review.py +0 -0
  93. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/scorecard.py +0 -0
  94. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/sessions.py +0 -0
  95. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/setup.py +0 -0
  96. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/status.py +0 -0
  97. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/terminal.py +0 -0
  98. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/test_gate.py +0 -0
  99. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/commands/tui.py +0 -0
  100. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/comments.py +0 -0
  101. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/config.py +0 -0
  102. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/config_reload.py +0 -0
  103. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/conflict_fix.py +0 -0
  104. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dao.py +0 -0
  105. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/__init__.py +0 -0
  106. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/fixture.py +0 -0
  107. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/index.html +0 -0
  108. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/server.py +0 -0
  109. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/terminal.py +0 -0
  110. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/.gitignore +0 -0
  111. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/components.json +0 -0
  112. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
  113. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  114. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
  115. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
  116. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  117. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  118. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  119. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  120. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  121. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/dist/index.html +0 -0
  122. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  123. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/dist/sw.js +0 -0
  124. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  125. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  126. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  127. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  128. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  129. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  130. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  131. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  132. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  133. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  134. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/eslint.config.js +0 -0
  135. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/index.html +0 -0
  136. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  137. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/package-lock.json +0 -0
  138. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/package.json +0 -0
  139. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  140. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/playwright.config.ts +0 -0
  141. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/postcss.config.js +0 -0
  142. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  143. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  144. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  145. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/App.tsx +0 -0
  146. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/api/client.ts +0 -0
  147. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  148. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  149. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  150. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  151. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  152. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  153. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  154. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  155. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  156. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  157. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  158. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  159. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  160. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  161. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  162. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  163. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  164. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  165. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  166. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  167. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  168. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  169. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  170. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  171. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  172. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  173. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  174. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  175. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  176. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  177. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  178. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  179. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  180. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  181. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  182. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/index.css +0 -0
  183. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  184. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  185. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/main.tsx +0 -0
  186. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  187. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  188. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  189. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  190. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  191. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  192. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  193. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  194. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  195. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  196. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  197. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  198. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  199. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  200. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  201. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  202. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  203. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  204. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  205. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  206. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  207. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  208. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  209. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/tailwind.config.js +0 -0
  210. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/tsconfig.json +0 -0
  211. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  212. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dashboard/webapp/vite.config.ts +0 -0
  213. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/db.py +0 -0
  214. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dead_end.py +0 -0
  215. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/README.md +0 -0
  216. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-agent.service +0 -0
  217. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-db-backup.service +0 -0
  218. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-db-backup.sh +0 -0
  219. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-db-backup.timer +0 -0
  220. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-drive-queue.service +0 -0
  221. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-drive-queue.timer +0 -0
  222. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-notify.service +0 -0
  223. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-notify.timer +0 -0
  224. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-release-propagate.service +0 -0
  225. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-release-propagate.timer +0 -0
  226. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-release-window.service +0 -0
  227. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-release-window.timer +0 -0
  228. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-serve.service +0 -0
  229. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-web-dist-build.service +0 -0
  230. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-web-dist-build.timer +0 -0
  231. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy/coord-web.service +0 -0
  232. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy_manifest.py +0 -0
  233. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deploy_units.py +0 -0
  234. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/deps.py +0 -0
  235. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/diagnose.py +0 -0
  236. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dispatch.py +0 -0
  237. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/dist_name.py +0 -0
  238. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/drive.py +0 -0
  239. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/drive_queue.py +0 -0
  240. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/drive_state.py +0 -0
  241. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/events.py +0 -0
  242. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/failure_class.py +0 -0
  243. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/filelock.py +0 -0
  244. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/fleet_config_health.py +0 -0
  245. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/freshness.py +0 -0
  246. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/gate_a.py +0 -0
  247. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/gate_b.py +0 -0
  248. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/gate_snapshot.py +0 -0
  249. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/gates.py +0 -0
  250. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/github_ops.py +0 -0
  251. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/goal.py +0 -0
  252. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/graph_health.py +0 -0
  253. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/__init__.py +0 -0
  254. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/aggregate.py +0 -0
  255. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/__init__.py +0 -0
  256. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/agent_install.py +0 -0
  257. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/cargo_targets.py +0 -0
  258. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/claude_binary.py +0 -0
  259. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/deploy_lane_facts.py +0 -0
  260. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/disk.py +0 -0
  261. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/fleet_board.py +0 -0
  262. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  263. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/fleet_phantom.py +0 -0
  264. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/fleet_unit_drift.py +0 -0
  265. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/graph.py +0 -0
  266. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/graphify_cli.py +0 -0
  267. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/index_lock.py +0 -0
  268. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/plan_usage.py +0 -0
  269. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/repo_state.py +0 -0
  270. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/spawned_coord.py +0 -0
  271. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/timer_active.py +0 -0
  272. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/toolchain.py +0 -0
  273. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/unit_drift.py +0 -0
  274. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/unit_enablement.py +0 -0
  275. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/checks/worktrees.py +0 -0
  276. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/cli.py +0 -0
  277. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/context.py +0 -0
  278. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/fleet_snapshot.py +0 -0
  279. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/models.py +0 -0
  280. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/pypi.py +0 -0
  281. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/registry.py +0 -0
  282. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/render.py +0 -0
  283. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/health/units.py +0 -0
  284. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/hooks.py +0 -0
  285. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/housekeeping.py +0 -0
  286. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/interactive.py +0 -0
  287. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/issue_store.py +0 -0
  288. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/liveness_auditor.py +0 -0
  289. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/machine_pause.py +0 -0
  290. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/merge_queue.py +0 -0
  291. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/milestone_chat.py +0 -0
  292. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/milestone_gate.py +0 -0
  293. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/milestone_order.py +0 -0
  294. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/mock_author.py +0 -0
  295. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/models.py +0 -0
  296. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/network.py +0 -0
  297. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/new_issue_chat.py +0 -0
  298. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/notifier/__init__.py +0 -0
  299. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/notifier/baseline.py +0 -0
  300. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/notifier/cli.py +0 -0
  301. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/notifier/collect.py +0 -0
  302. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/notifier/digest.py +0 -0
  303. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/notifier/models.py +0 -0
  304. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/notifier/predicate.py +0 -0
  305. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/notifier/service.py +0 -0
  306. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/notifier/store.py +0 -0
  307. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/notifier/transport.py +0 -0
  308. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/notify.py +0 -0
  309. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/openapi.py +0 -0
  310. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/overlap_fence.py +0 -0
  311. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/overlap_predict.py +0 -0
  312. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/parentage.py +0 -0
  313. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/parentage_github.py +0 -0
  314. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/pipeline.py +0 -0
  315. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/plan_parser.py +0 -0
  316. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/plans.py +0 -0
  317. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/platform_paths.py +0 -0
  318. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/portal_bridge.py +0 -0
  319. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/portal_store.py +0 -0
  320. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/portal_sync.py +0 -0
  321. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/pr_body_lint.py +0 -0
  322. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/prereqs.py +0 -0
  323. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/progress.py +0 -0
  324. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/providers/__init__.py +0 -0
  325. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/providers/base.py +0 -0
  326. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/providers/claude.py +0 -0
  327. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/providers/claude_pty.py +0 -0
  328. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/providers/opencode.py +0 -0
  329. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/queue_diagnose.py +0 -0
  330. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/reconcile.py +0 -0
  331. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/refine_chat.py +0 -0
  332. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/release_cordon.py +0 -0
  333. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/release_propagate.py +0 -0
  334. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/release_verify.py +0 -0
  335. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/release_window.py +0 -0
  336. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/repo_edit.py +0 -0
  337. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/repo_onboard.py +0 -0
  338. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/reports.py +0 -0
  339. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/revalidate.py +0 -0
  340. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/review.py +0 -0
  341. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/scorecard.py +0 -0
  342. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/skills/portal-followup/SKILL.md +0 -0
  343. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/skills/update-issue/SKILL.md +0 -0
  344. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/smoke.py +0 -0
  345. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/spend_ceiling.py +0 -0
  346. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/split_work.py +0 -0
  347. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/stage_projection.py +0 -0
  348. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/state.py +0 -0
  349. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/test_author.py +0 -0
  350. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/test_chat.py +0 -0
  351. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/test_orchestrator.py +0 -0
  352. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/test_report.py +0 -0
  353. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/tui_release.py +0 -0
  354. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/usage.py +0 -0
  355. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/usage_limits.py +0 -0
  356. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/usage_rollup.py +0 -0
  357. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coord/worker_events.py +0 -0
  358. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/coordinator.example.yml +0 -0
  359. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-agent.service +0 -0
  360. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-db-backup.service +0 -0
  361. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-db-backup.sh +0 -0
  362. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-db-backup.timer +0 -0
  363. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-drive-queue.service +0 -0
  364. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-drive-queue.timer +0 -0
  365. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-notify.service +0 -0
  366. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-notify.timer +0 -0
  367. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-release-propagate.service +0 -0
  368. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-release-propagate.timer +0 -0
  369. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-release-window.service +0 -0
  370. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-release-window.timer +0 -0
  371. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-serve.service +0 -0
  372. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-web-dist-build.service +0 -0
  373. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-web-dist-build.sh +0 -0
  374. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-web-dist-build.timer +0 -0
  375. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-web-rollback.sh +0 -0
  376. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/coord-web.service +0 -0
  377. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/deploy/node-shim.sh +0 -0
  378. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/AGENT_OPERATIONS.md +0 -0
  379. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/ARCH_SECURITY_GATES.md +0 -0
  380. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/COCKPIT.md +0 -0
  381. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/CONTROL_CENTER.md +0 -0
  382. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/COST_DISCIPLINE.md +0 -0
  383. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/CROSS_PLATFORM.md +0 -0
  384. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/CUSTOMER_PORTAL.md +0 -0
  385. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/DRIVE_QUEUE.md +0 -0
  386. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/EPHEMERAL_WORKERS.md +0 -0
  387. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/FORGE_MIGRATION.md +0 -0
  388. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/GRAPHIFY_SETUP.md +0 -0
  389. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/ISSUE_GUIDANCE.md +0 -0
  390. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/MAC_MINI.md +0 -0
  391. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  392. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/NOTIFIER.md +0 -0
  393. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/OPENCODE_VERIFICATION.md +0 -0
  394. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/OPERATING_GOTCHAS.md +0 -0
  395. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/ORACLE_LOOP.md +0 -0
  396. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/PHONE_WEBAPP.md +0 -0
  397. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/PIPELINE_V2.md +0 -0
  398. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/PLATFORM_EVOLUTION.md +0 -0
  399. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/SECOND_BACKEND.md +0 -0
  400. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/STORE_SERVICE.md +0 -0
  401. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  402. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/WEB_CONTROL_CENTER.md +0 -0
  403. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/mocks/web/README.md +0 -0
  404. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/mocks/web/_tokens.css +0 -0
  405. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/mocks/web/issue-detail.html +0 -0
  406. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/mocks/web/pipeline-narrow.html +0 -0
  407. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/docs/mocks/web/pipeline-wide.html +0 -0
  408. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/graphify-out/.gitignore +0 -0
  409. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/install-agent.sh +0 -0
  410. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/pyproject.toml +0 -0
  411. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/audit_review_verdict_overrides.py +0 -0
  412. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  413. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/azure-workers/build-worker-image.sh +0 -0
  414. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/azure-workers/coordinator-machine.py +0 -0
  415. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/azure-workers/epic-down.sh +0 -0
  416. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/azure-workers/epic-up.sh +0 -0
  417. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/azure-workers/preflight.sh +0 -0
  418. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/azure-workers/provision-worker.sh +0 -0
  419. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  420. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  421. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/azure-workers/verify-github-token.sh +0 -0
  422. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/codegen.py +0 -0
  423. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/coord-test-runner.sh +0 -0
  424. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/drive-batch.sh +0 -0
  425. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/gen_board_fixture.py +0 -0
  426. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/next_release_tag.py +0 -0
  427. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/run_tests_in_populated_home.sh +0 -0
  428. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/run_tests_without_gh.sh +0 -0
  429. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/smoke_437_interactive.py +0 -0
  430. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/verify_878_review_capture.py +0 -0
  431. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/verify_release_published.py +0 -0
  432. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/scripts/verify_release_wheel.py +0 -0
  433. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/setup.cfg +0 -0
  434. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/SMOKE_SET.md +0 -0
  435. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/__init__.py +0 -0
  436. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  437. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-33/contract.md +0 -0
  438. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-33/manifest.yml +0 -0
  439. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  440. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  441. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  442. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  443. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-37/conftest.py +0 -0
  444. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-37/contract.md +0 -0
  445. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-37/manifest.yml +0 -0
  446. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  447. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  448. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-38/contract.md +0 -0
  449. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-38/manifest.yml +0 -0
  450. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  451. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  452. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  453. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  454. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  455. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  456. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  457. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  458. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  459. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  460. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-51/contract.md +0 -0
  461. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  462. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  463. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-51/manifest.yml +0 -0
  464. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  465. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-51/tsconfig.json +0 -0
  466. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  467. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-65/contract.md +0 -0
  468. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-65/manifest.yml +0 -0
  469. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  470. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  471. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  472. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  473. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  474. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  475. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  476. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  477. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  478. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/conftest.py +0 -0
  479. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/board-pipeline-basic.json +0 -0
  480. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  481. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  482. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  483. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  484. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/playwright/all_pass.json +0 -0
  485. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  486. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/playwright/mixed_fail.json +0 -0
  487. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  488. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  489. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/playwright/skip.json +0 -0
  490. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/playwright/truncated.json +0 -0
  491. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  492. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  493. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  494. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  495. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  496. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  497. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  498. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  499. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_acceptance.py +0 -0
  500. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_acceptance_drivers.py +0 -0
  501. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent.py +0 -0
  502. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_api_error.py +0 -0
  503. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_app.py +0 -0
  504. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_branch_base.py +0 -0
  505. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_branch_capture.py +0 -0
  506. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_config_free_1712.py +0 -0
  507. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_deploy_units_endpoint.py +0 -0
  508. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_dirty_worktree.py +0 -0
  509. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_graph_self_heal.py +0 -0
  510. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_health_h3.py +0 -0
  511. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_idle_restart.py +0 -0
  512. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_push_failure.py +0 -0
  513. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_reap.py +0 -0
  514. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_repos_and_pull.py +0 -0
  515. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_restart_services_endpoint.py +0 -0
  516. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_startup_diagnostics.py +0 -0
  517. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_update.py +0 -0
  518. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_update_bluegreen.py +0 -0
  519. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_usage_limit.py +0 -0
  520. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_agent_zero_commit.py +0 -0
  521. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_ambient_home_isolation.py +0 -0
  522. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_approve_reject_plan.py +0 -0
  523. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_approve_usage_gate.py +0 -0
  524. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_assignment_already_recorded_daemon.py +0 -0
  525. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_audit_log.py +0 -0
  526. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_audit_outcome.py +0 -0
  527. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_audit_query.py +0 -0
  528. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_auto_loop.py +0 -0
  529. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_auto_release_publish_2035.py +0 -0
  530. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_base_checkout_restore.py +0 -0
  531. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_block_log.py +0 -0
  532. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_board_cap_762.py +0 -0
  533. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_board_fixture.py +0 -0
  534. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_board_read_path.py +0 -0
  535. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_board_service.py +0 -0
  536. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_board_state.py +0 -0
  537. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_board_wire.py +0 -0
  538. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_brain.py +0 -0
  539. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_branch_model.py +0 -0
  540. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_bug_intake.py +0 -0
  541. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_build_worker_image_env_update.py +0 -0
  542. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cargo_cache.py +0 -0
  543. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_ci_acceptance_gate_1950.py +0 -0
  544. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_ci_parity_2091.py +0 -0
  545. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_ci_store.py +0 -0
  546. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_claim.py +0 -0
  547. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_assign.py +0 -0
  548. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  549. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_assign_interactive_remote.py +0 -0
  550. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_assign_provider.py +0 -0
  551. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  552. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_audit.py +0 -0
  553. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_chat_continue.py +0 -0
  554. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_diagnose_config_provenance.py +0 -0
  555. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_diagnose_graph.py +0 -0
  556. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_doctor.py +0 -0
  557. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_doctor_config_free_1801.py +0 -0
  558. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  559. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_drive.py +0 -0
  560. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_drive_queue.py +0 -0
  561. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_escalate.py +0 -0
  562. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_fix_headless_review.py +0 -0
  563. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_gate_a.py +0 -0
  564. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_install_drift.py +0 -0
  565. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_install_skills.py +0 -0
  566. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_issue_create_label.py +0 -0
  567. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_issue_reopen.py +0 -0
  568. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_merge.py +0 -0
  569. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_milestone_assign.py +0 -0
  570. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_milestone_capture.py +0 -0
  571. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_milestone_chat_add_child.py +0 -0
  572. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_milestone_gate_b.py +0 -0
  573. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_milestone_gate_c.py +0 -0
  574. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_milestone_order.py +0 -0
  575. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  576. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_milestone_ship.py +0 -0
  577. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_network.py +0 -0
  578. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_new_issue_chat.py +0 -0
  579. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_plans.py +0 -0
  580. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_portal.py +0 -0
  581. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_pull_artifact.py +0 -0
  582. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_queue.py +0 -0
  583. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_reattach_sessions.py +0 -0
  584. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_refine_board.py +0 -0
  585. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_release_preflight.py +0 -0
  586. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_release_propagate.py +0 -0
  587. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_release_window.py +0 -0
  588. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_repo_2220.py +0 -0
  589. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_scorecard.py +0 -0
  590. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_set_review_findings.py +0 -0
  591. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_status_advisory_terminal.py +0 -0
  592. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_status_merge_queue.py +0 -0
  593. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_status_provider.py +0 -0
  594. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_status_review_finalizing.py +0 -0
  595. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_status_test_failed_tag.py +0 -0
  596. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_status_usage_limit.py +0 -0
  597. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_sync_comments_873.py +0 -0
  598. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_test_plan.py +0 -0
  599. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_track.py +0 -0
  600. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_tui_update.py +0 -0
  601. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cli_wait.py +0 -0
  602. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_client_base_install.py +0 -0
  603. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_comments.py +0 -0
  604. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_completion_summary.py +0 -0
  605. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_config.py +0 -0
  606. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_config_acceptance.py +0 -0
  607. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_config_audit.py +0 -0
  608. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_config_pricing.py +0 -0
  609. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  610. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_config_usage_gate.py +0 -0
  611. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_conflict_fix.py +0 -0
  612. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_conflict_fix_semantic.py +0 -0
  613. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_coord_test.py +0 -0
  614. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_coord_test_runner_baseline.py +0 -0
  615. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_coord_test_runner_routing.py +0 -0
  616. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_coord_test_runner_toolchain.py +0 -0
  617. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_coord_web_sse_restart_live.py +0 -0
  618. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_coordinator_machine.py +0 -0
  619. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_cross_platform_imports.py +0 -0
  620. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_dashboard.py +0 -0
  621. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_dashboard_fixture.py +0 -0
  622. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_dashboard_terminal.py +0 -0
  623. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_dashboard_terminal_live.py +0 -0
  624. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_db.py +0 -0
  625. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_dead_end.py +0 -0
  626. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_deploy_coord_db_backup.py +0 -0
  627. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_deploy_coord_web_dist.py +0 -0
  628. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_deploy_coord_web_rollback.py +0 -0
  629. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_deploy_drive_queue_unit.py +0 -0
  630. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_deploy_manifest.py +0 -0
  631. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_deploy_units_lane.py +0 -0
  632. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_deploy_web_unit.py +0 -0
  633. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_deps.py +0 -0
  634. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_diagnose.py +0 -0
  635. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_dispatch.py +0 -0
  636. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_dispatch_target_validation.py +0 -0
  637. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_dist_name.py +0 -0
  638. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_done_housekeeping.py +0 -0
  639. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_drive.py +0 -0
  640. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_drive_queue.py +0 -0
  641. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_drive_state.py +0 -0
  642. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_drive_tmux.py +0 -0
  643. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_epic_up_capability_detection.py +0 -0
  644. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  645. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_epic_up_image_provenance.py +0 -0
  646. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_errors.py +0 -0
  647. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_events.py +0 -0
  648. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_failure_class.py +0 -0
  649. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_filelock.py +0 -0
  650. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  651. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_fix_of_force_override.py +0 -0
  652. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_fleet_config_health.py +0 -0
  653. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_fleet_health_probes.py +0 -0
  654. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_fleet_health_snapshot.py +0 -0
  655. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_freshness.py +0 -0
  656. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_gate_a.py +0 -0
  657. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_gate_b.py +0 -0
  658. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_gate_snapshot_staleness.py +0 -0
  659. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_gates.py +0 -0
  660. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  661. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_generated_types_fixture.py +0 -0
  662. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_github_ops.py +0 -0
  663. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_goal.py +0 -0
  664. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_graph_health.py +0 -0
  665. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_graph_selfheal_absent_2237.py +0 -0
  666. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_handoff.py +0 -0
  667. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_health_checks.py +0 -0
  668. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_health_cli.py +0 -0
  669. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_health_cli_graph.py +0 -0
  670. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_health_config.py +0 -0
  671. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_health_context.py +0 -0
  672. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_health_deploy_lane_facts.py +0 -0
  673. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_health_incident_regression.py +0 -0
  674. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_health_pypi.py +0 -0
  675. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_health_registry.py +0 -0
  676. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_health_timer_active.py +0 -0
  677. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_health_toolchain.py +0 -0
  678. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_health_unit_drift.py +0 -0
  679. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_health_unit_enablement.py +0 -0
  680. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_hooks.py +0 -0
  681. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_human_attended_437.py +0 -0
  682. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_init.py +0 -0
  683. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_integration.py +0 -0
  684. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_interactive_briefing_echo.py +0 -0
  685. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_interactive_prefill_state.py +0 -0
  686. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_interactive_session_relaunch.py +0 -0
  687. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_interactive_test_verdict_backstop.py +0 -0
  688. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_interactive_token_attribution.py +0 -0
  689. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_interactive_worktree.py +0 -0
  690. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_issue_store_seam.py +0 -0
  691. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_liveness_auditor.py +0 -0
  692. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_liveness_notify.py +0 -0
  693. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_machine_pause.py +0 -0
  694. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_merge_queue.py +0 -0
  695. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_merge_verify.py +0 -0
  696. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_milestone_chat.py +0 -0
  697. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_milestone_gate.py +0 -0
  698. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_milestone_order.py +0 -0
  699. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_milestone_seam.py +0 -0
  700. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_mock_author.py +0 -0
  701. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_model_tiering.py +0 -0
  702. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_models.py +0 -0
  703. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_models_config_labels.py +0 -0
  704. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_needs_attention.py +0 -0
  705. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_network.py +0 -0
  706. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_new_issue_chat.py +0 -0
  707. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_next_release_tag.py +0 -0
  708. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_no_direct_gh_calls.py +0 -0
  709. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_node_shim.py +0 -0
  710. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_notifier_baseline.py +0 -0
  711. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_notifier_cli.py +0 -0
  712. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_notifier_collect.py +0 -0
  713. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_notifier_config.py +0 -0
  714. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_notifier_drive_seam.py +0 -0
  715. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_notifier_isolation.py +0 -0
  716. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_notifier_predicate.py +0 -0
  717. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_notifier_quiet_hours.py +0 -0
  718. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_notifier_service.py +0 -0
  719. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_notify.py +0 -0
  720. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_notify_drain.py +0 -0
  721. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_openapi.py +0 -0
  722. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_operational_defaults.py +0 -0
  723. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_overlap_fence.py +0 -0
  724. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_overlap_predict.py +0 -0
  725. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_packaged_deploy_units.py +0 -0
  726. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_parentage.py +0 -0
  727. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_paste_landed.py +0 -0
  728. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_pipeline.py +0 -0
  729. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_plan_followup_approve_plan_command.py +0 -0
  730. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_plan_followup_pr_command.py +0 -0
  731. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_plan_followup_review_command.py +0 -0
  732. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_plan_only.py +0 -0
  733. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_plan_parser.py +0 -0
  734. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_platform_paths.py +0 -0
  735. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_portal_bridge.py +0 -0
  736. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_portal_config.py +0 -0
  737. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_portal_sync.py +0 -0
  738. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_pr_body_lint.py +0 -0
  739. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_prereqs.py +0 -0
  740. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_production_db_guard.py +0 -0
  741. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_progress.py +0 -0
  742. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_provider_seam.py +0 -0
  743. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_providers.py +0 -0
  744. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_providers_config_labels.py +0 -0
  745. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_providers_pty.py +0 -0
  746. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_quiet_hours.py +0 -0
  747. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_quiet_hours_store_2146.py +0 -0
  748. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_reap_merged_sessions.py +0 -0
  749. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_reap_stale_interactive_tick.py +0 -0
  750. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_reconcile.py +0 -0
  751. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_reconcile_branch.py +0 -0
  752. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_reconcile_completions.py +0 -0
  753. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_reconcile_merges.py +0 -0
  754. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_reconcile_no_agent_record.py +0 -0
  755. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_reconcile_usage_limit_done.py +0 -0
  756. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_refine_chat.py +0 -0
  757. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_release_cordon_2101.py +0 -0
  758. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  759. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_release_cordon_deadlock_2240.py +0 -0
  760. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_release_propagate.py +0 -0
  761. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_release_unified_1242.py +0 -0
  762. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_release_verify.py +0 -0
  763. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_release_window.py +0 -0
  764. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_remote_auto_prune.py +0 -0
  765. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_remote_interactive_reaper.py +0 -0
  766. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_repo_edit_2220.py +0 -0
  767. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_repo_graph_fleet_2237.py +0 -0
  768. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_repo_onboard_2220.py +0 -0
  769. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_report_result_push.py +0 -0
  770. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_reports.py +0 -0
  771. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_retry.py +0 -0
  772. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_retry_advisory_1606.py +0 -0
  773. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_retry_type_1636.py +0 -0
  774. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_revalidate.py +0 -0
  775. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_review.py +0 -0
  776. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_review_end_review_without_verdict.py +0 -0
  777. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_review_parse_failure_diagnostic.py +0 -0
  778. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_review_reaffirm.py +0 -0
  779. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_review_state.py +0 -0
  780. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_review_verdict_backstop.py +0 -0
  781. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_review_verdict_override_audit.py +0 -0
  782. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_review_verdict_relay.py +0 -0
  783. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_review_zero_commits.py +0 -0
  784. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_scoped_review_wiring.py +0 -0
  785. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_scorecard.py +0 -0
  786. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_serve.py +0 -0
  787. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_serve_app_board_trim.py +0 -0
  788. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_session.py +0 -0
  789. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_slice_issue_attribution.py +0 -0
  790. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_smoke.py +0 -0
  791. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_smoke_live_checkout_restore.py +0 -0
  792. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_smoke_workflow.py +0 -0
  793. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_spend_ceiling.py +0 -0
  794. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_spend_ceiling_coordinator.py +0 -0
  795. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_split.py +0 -0
  796. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_split_work.py +0 -0
  797. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_stage_projection.py +0 -0
  798. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_stalled_pipeline.py +0 -0
  799. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_state.py +0 -0
  800. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_state_review_findings_daemon.py +0 -0
  801. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_status_fleet_footer.py +0 -0
  802. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_stop_1567.py +0 -0
  803. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_stuck.py +0 -0
  804. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_terminal_command.py +0 -0
  805. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_test_author.py +0 -0
  806. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_test_chat.py +0 -0
  807. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_test_orchestrator.py +0 -0
  808. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_test_report.py +0 -0
  809. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_test_verdict_parsing.py +0 -0
  810. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_test_verdict_transcript_floor.py +0 -0
  811. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_thin_client_board_audit.py +0 -0
  812. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_thin_client_config_load_1080.py +0 -0
  813. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_thin_client_daemon_routing_906.py +0 -0
  814. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_tmux_host.py +0 -0
  815. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_tmux_session.py +0 -0
  816. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_transcript_floor.py +0 -0
  817. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_usage.py +0 -0
  818. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_usage_limits.py +0 -0
  819. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_usage_rollup.py +0 -0
  820. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_venv_live_install_2121.py +0 -0
  821. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_version_single_source.py +0 -0
  822. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_watch.py +0 -0
  823. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  824. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_worker_events.py +0 -0
  825. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_worker_image_pin_sync.py +0 -0
  826. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_worker_safety.py +0 -0
  827. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_worker_test_scoping.py +0 -0
  828. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_worktree.py +0 -0
  829. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  830. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/cargo-config-local-quadraui.toml.example +0 -0
  831. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/audit.rs +0 -0
  832. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/chat.rs +0 -0
  833. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/data.rs +0 -0
  834. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/dialogs.rs +0 -0
  835. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/drive.rs +0 -0
  836. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/drive_queue.rs +0 -0
  837. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/escalation.rs +0 -0
  838. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/fleet_health.rs +0 -0
  839. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/fleet_sessions.rs +0 -0
  840. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/fleet_terminals.rs +0 -0
  841. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/format.rs +0 -0
  842. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/milestone_dag.rs +0 -0
  843. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/msv.rs +0 -0
  844. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/pipeline.rs +0 -0
  845. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/plans.rs +0 -0
  846. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/reports.rs +0 -0
  847. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/sessions.rs +0 -0
  848. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/settings_ui.rs +0 -0
  849. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/sidebar.rs +0 -0
  850. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/terminal.rs +0 -0
  851. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/types.rs +0 -0
  852. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/app/workspace.rs +0 -0
  853. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/bin/gtk.rs +0 -0
  854. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/commands.rs +0 -0
  855. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/lib.rs +0 -0
  856. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/main.rs +0 -0
  857. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/src/settings.rs +0 -0
  858. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/tests/acceptance.rs +0 -0
  859. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/tests/cli.rs +0 -0
  860. {code_coordinator-0.5.126 → code_coordinator-0.5.129}/tui/tests/fixtures/board_sample.json +0 -0
@@ -261,6 +261,7 @@ reviewer can stop reading here.
261
261
  - [`docs/GRAPHIFY_SETUP.md`](docs/GRAPHIFY_SETUP.md) — installing the knowledge graph on a new machine (four layers, all of which fail *silently*).
262
262
  - [`docs/EPHEMERAL_WORKERS.md`](docs/EPHEMERAL_WORKERS.md) — on-demand Azure worker VMs per epic. **The tailnet ACL is the security boundary** — `agent_app.py` has no authentication.
263
263
  - [`docs/MAC_MINI.md`](docs/MAC_MINI.md) — adding a Mac mini; sizing, provisioning, and what non-macOS work routes there. The port itself is [`docs/CROSS_PLATFORM.md`](docs/CROSS_PLATFORM.md) (milestone #39).
264
+ - [`docs/WSL_WINDOWS_WORKER.md`](docs/WSL_WINDOWS_WORKER.md) — using a Tailscale-connected WSL2 box as the Windows worker for quadraui/vimcode's Win-GUI ports. Not the coord-itself Windows port.
264
265
  - [`docs/FORGE_MIGRATION.md`](docs/FORGE_MIGRATION.md) — surviving a forge outage (cheap) versus leaving a forge (expensive); milestone #58 / epic #1902.
265
266
 
266
267
  **Two deploy facts that bite most often:**
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.126
3
+ Version: 0.5.129
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.126
3
+ Version: 0.5.129
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
@@ -389,6 +389,7 @@ docs/SECOND_BACKEND.md
389
389
  docs/STORE_SERVICE.md
390
390
  docs/TEST_FIRST_BUG_LANE.md
391
391
  docs/WEB_CONTROL_CENTER.md
392
+ docs/WSL_WINDOWS_WORKER.md
392
393
  docs/mocks/web/README.md
393
394
  docs/mocks/web/_tokens.css
394
395
  docs/mocks/web/issue-detail.html
@@ -827,6 +828,7 @@ tui/src/app/audit.rs
827
828
  tui/src/app/chat.rs
828
829
  tui/src/app/data.rs
829
830
  tui/src/app/dialogs.rs
831
+ tui/src/app/doc_tabs.rs
830
832
  tui/src/app/drive.rs
831
833
  tui/src/app/drive_queue.rs
832
834
  tui/src/app/escalation.rs
@@ -367,6 +367,7 @@
367
367
  "docs/STORE_SERVICE.md",
368
368
  "docs/TEST_FIRST_BUG_LANE.md",
369
369
  "docs/WEB_CONTROL_CENTER.md",
370
+ "docs/WSL_WINDOWS_WORKER.md",
370
371
  "docs/mocks/web/README.md",
371
372
  "docs/mocks/web/_tokens.css",
372
373
  "docs/mocks/web/issue-detail.html",
@@ -803,6 +804,7 @@
803
804
  "tui/src/app/chat.rs",
804
805
  "tui/src/app/data.rs",
805
806
  "tui/src/app/dialogs.rs",
807
+ "tui/src/app/doc_tabs.rs",
806
808
  "tui/src/app/drive.rs",
807
809
  "tui/src/app/drive_queue.rs",
808
810
  "tui/src/app/escalation.rs",
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.126",
2
+ "tag": "0.5.129",
3
3
  "distance": 0,
4
- "node": "gd69faff040adaad7a346ab65c483934e1eca4c66",
4
+ "node": "g35ed648ce7ee944d0c954c511918f971ef413bef",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-17"
@@ -420,6 +420,37 @@ def _acceptance_worktree_path(repo_name: str, issue_number: int) -> Path:
420
420
  return COORD_DIR / "acceptance-worktrees" / f"{repo_name}-{issue_number}"
421
421
 
422
422
 
423
+ def _acceptance_worktree_lock_path(repo_name: str, issue_number: int) -> Path:
424
+ """The ``flock`` guarding :func:`_acceptance_worktree_path` (#2352).
425
+
426
+ That path is deliberately ONE per ``(repo, issue)``, reused across every
427
+ SHA/round for that issue (same incremental-build rationale as `coord
428
+ test`'s #561) — but nothing serialised *access* to it. Two concurrent
429
+ ``coord acceptance record`` calls for the same issue (an orphaned drive
430
+ process — #1660 — racing a fresh queue relaunch, or a by-hand re-run
431
+ overlapping an in-flight one) each did an unconditional ``git worktree
432
+ remove --force`` + ``add --force`` on the SAME directory: the second
433
+ invocation's remove ripped the tree out from under the first's
434
+ in-flight build/test, mid-compile. The corrupted build then printed
435
+ ordinary-looking compiler errors and exited non-zero having run zero
436
+ tests — indistinguishable from a genuinely red suite to
437
+ ``_scoped_verdict``, so it landed on the board as a real
438
+ ``acceptance_state=failed`` and burned a drive's fix-round budget on a
439
+ PR that was never actually broken.
440
+
441
+ A sibling ``.lock`` file next to the worktree directory itself (not one
442
+ global lock for the whole ``acceptance-worktrees/`` tree) so unrelated
443
+ ``(repo, issue)`` pairs never wait on each other.
444
+
445
+ Derived from :func:`_acceptance_worktree_path` (module-level lookup, so
446
+ a test monkeypatching that name — e.g. to redirect it under
447
+ ``tmp_path`` — redirects this lock alongside it) rather than
448
+ re-deriving ``COORD_DIR`` independently, which would silently drift the
449
+ two apart the moment either one's path scheme changes."""
450
+ wt_path = _acceptance_worktree_path(repo_name, issue_number)
451
+ return wt_path.with_name(wt_path.name + ".lock")
452
+
453
+
423
454
  def _remove_acceptance_worktree(repo_dir: Path, wt_path: Path) -> None:
424
455
  if not wt_path.exists():
425
456
  return
@@ -819,6 +850,7 @@ def _acceptance_record_local(
819
850
  config_path: Path,
820
851
  route_path: str | None = None,
821
852
  ) -> None:
853
+ from coord.filelock import FileLock # noqa: PLC0415
822
854
  from coord.test_orchestrator import find_local_repo_path # noqa: PLC0415
823
855
 
824
856
  cfg = _load_config(config_path)
@@ -835,119 +867,140 @@ def _acceptance_record_local(
835
867
  sys.exit(1)
836
868
 
837
869
  wt_path = _acceptance_worktree_path(repo, issue_number)
838
- click.echo(
839
- f"Fetching origin and preparing acceptance worktree at {sha!r} "
840
- f"(base checkout {repo_dir} stays untouched)..."
841
- )
842
- try:
843
- subprocess.run(
844
- ["git", "fetch", "origin", "--prune"], cwd=str(repo_dir),
845
- check=True, capture_output=True, text=True,
846
- )
847
- except subprocess.CalledProcessError as e:
848
- click.echo(f"error: git fetch failed: {e.stderr.strip()}", err=True)
849
- sys.exit(1)
850
870
 
851
- _remove_acceptance_worktree(repo_dir, wt_path)
852
- wt_path.parent.mkdir(parents=True, exist_ok=True)
853
- res = subprocess.run(
854
- ["git", "worktree", "add", "--force", "--detach", str(wt_path), sha],
855
- cwd=str(repo_dir), capture_output=True, text=True,
856
- )
857
- if res.returncode != 0:
871
+ # #2352: everything from here down touches the ONE worktree this
872
+ # (repo, issue) reuses across every SHA/round — remove+add it, build in
873
+ # it, read its results. A second concurrent `coord acceptance record`
874
+ # for the same issue (an orphaned drive racing a fresh queue relaunch,
875
+ # or a by-hand re-run overlapping an in-flight one — see
876
+ # _acceptance_worktree_lock_path's docstring) must never interleave
877
+ # with this, or its `git worktree remove --force` clobbers whatever the
878
+ # first invocation is mid-build on. Blocking (not fail-fast) is
879
+ # deliberate: `flock` is released by the kernel even if the holder is
880
+ # killed, so there is no stale-lock deadlock risk to trade away, and
881
+ # blocking needs no change to `_decide_acceptance_gate`'s error
882
+ # handling — the second invocation just waits its turn and then records
883
+ # its own (correct) verdict, same as if it had been dispatched later.
884
+ with FileLock(_acceptance_worktree_lock_path(repo, issue_number)):
858
885
  click.echo(
859
- f"error: could not create acceptance worktree at {sha!r}: "
860
- f"{res.stderr.strip()}",
861
- err=True,
886
+ f"Fetching origin and preparing acceptance worktree at {sha!r} "
887
+ f"(base checkout {repo_dir} stays untouched)..."
862
888
  )
863
- sys.exit(1)
864
-
865
- # #1125 review finding 2: resolve `{ms}` from the issue's manifest-mapped
866
- # ms-NN dir (the worktree just checked out at `sha`) before running —
867
- # same fail-soft-to-None rationale as `acceptance_run` above.
868
- ms: str | None = None
869
- try:
870
- ms = ms_dir_for_issue(wt_path / ACCEPTANCE_DIRNAME, issue_number)
871
- except Exception: # noqa: BLE001
872
- ms = None
889
+ try:
890
+ subprocess.run(
891
+ ["git", "fetch", "origin", "--prune"], cwd=str(repo_dir),
892
+ check=True, capture_output=True, text=True,
893
+ )
894
+ except subprocess.CalledProcessError as e:
895
+ click.echo(f"error: git fetch failed: {e.stderr.strip()}", err=True)
896
+ sys.exit(1)
873
897
 
874
- try:
875
- result = run_driver(
876
- driver_cfg.kind, driver_cfg.run, cwd=str(wt_path), ms=ms,
877
- setup_command=driver_cfg.setup,
878
- )
879
- except DriverError as e:
880
- click.echo(f"error: {e}", err=True)
881
898
  _remove_acceptance_worktree(repo_dir, wt_path)
882
- sys.exit(1)
883
-
884
- # #944 review: _scoped_verdict exits(1) internally for a manifest that
885
- # hasn't been authored yet / has no slice for this issue — a
886
- # configuration error, not a real (kept-for-inspection) test failure, so
887
- # the throwaway worktree must still be cleaned up on the way out.
888
- try:
889
- verdict = _scoped_verdict(
890
- result.tests, wt_path / ACCEPTANCE_DIRNAME, issue_number,
891
- entrypoint=driver_cfg.entrypoint,
899
+ wt_path.parent.mkdir(parents=True, exist_ok=True)
900
+ res = subprocess.run(
901
+ ["git", "worktree", "add", "--force", "--detach", str(wt_path), sha],
902
+ cwd=str(repo_dir), capture_output=True, text=True,
892
903
  )
893
- except SystemExit:
894
- _remove_acceptance_worktree(repo_dir, wt_path)
895
- raise
904
+ if res.returncode != 0:
905
+ click.echo(
906
+ f"error: could not create acceptance worktree at {sha!r}: "
907
+ f"{res.stderr.strip()}",
908
+ err=True,
909
+ )
910
+ sys.exit(1)
896
911
 
897
- from coord.board_service import read_board # noqa: PLC0415
898
- from coord.diagnose import stage_assignments # noqa: PLC0415
912
+ # #1125 review finding 2: resolve `{ms}` from the issue's
913
+ # manifest-mapped ms-NN dir (the worktree just checked out at
914
+ # `sha`) before running — same fail-soft-to-None rationale as
915
+ # `acceptance_run` above.
916
+ ms: str | None = None
917
+ try:
918
+ ms = ms_dir_for_issue(wt_path / ACCEPTANCE_DIRNAME, issue_number)
919
+ except Exception: # noqa: BLE001
920
+ ms = None
899
921
 
900
- board = read_board()
901
- work_rows = stage_assignments(board, repo, issue_number, "work")
902
- if not work_rows:
903
- click.echo(
904
- f"error: no work assignment found for {repo} #{issue_number}; "
905
- "cannot record verdict",
906
- err=True,
907
- )
908
- # Same rationale: a lookup error, not a failing-verdict "kept for
909
- # inspection" case — don't leak the worktree.
910
- _remove_acceptance_worktree(repo_dir, wt_path)
911
- sys.exit(1)
912
- assignment_id = work_rows[0].assignment_id
913
-
914
- from coord.state import record_acceptance_verdict # noqa: PLC0415
915
-
916
- acceptance_state = "passed" if verdict["green"] else "failed"
917
- reason = failure_summary(verdict) or None
918
- record_acceptance_verdict(
919
- assignment_id=assignment_id,
920
- acceptance_state=acceptance_state,
921
- acceptance_reason=reason,
922
- acceptance_sha=sha,
923
- # #932: per-test counts so the Acceptance box can show partial
924
- # progress ("3/7 acceptance green") instead of a bare verdict.
925
- acceptance_total=verdict["total"],
926
- acceptance_passed=verdict["passed"],
927
- )
922
+ try:
923
+ result = run_driver(
924
+ driver_cfg.kind, driver_cfg.run, cwd=str(wt_path), ms=ms,
925
+ setup_command=driver_cfg.setup,
926
+ )
927
+ except DriverError as e:
928
+ click.echo(f"error: {e}", err=True)
929
+ _remove_acceptance_worktree(repo_dir, wt_path)
930
+ sys.exit(1)
928
931
 
929
- click.echo(json.dumps(verdict, indent=2))
930
- click.echo(f"\nAcceptance {acceptance_state.upper()} for {repo} #{issue_number} @ {sha}")
931
-
932
- if acceptance_state == "passed":
933
- # #2164 review: clearing expected_red here (before Test/Review/the
934
- # actual merge to the default branch have happened) was the bug —
935
- # it could reopen "red default branch" for reasons unrelated to
936
- # whatever CI run next observed this issue's still-unmerged fix.
937
- # The clear now happens in `coord.merge_queue.process`, right after
938
- # this SHA's PR actually merges — see
939
- # `coord.acceptance.clear_expected_red_via_pr`'s docstring. Nothing
940
- # to do here beyond pointing the operator at how to check.
941
- if ms is not None:
932
+ # #944 review: _scoped_verdict exits(1) internally for a manifest
933
+ # that hasn't been authored yet / has no slice for this issue a
934
+ # configuration error, not a real (kept-for-inspection) test
935
+ # failure, so the throwaway worktree must still be cleaned up on
936
+ # the way out.
937
+ try:
938
+ verdict = _scoped_verdict(
939
+ result.tests, wt_path / ACCEPTANCE_DIRNAME, issue_number,
940
+ entrypoint=driver_cfg.entrypoint,
941
+ )
942
+ except SystemExit:
943
+ _remove_acceptance_worktree(repo_dir, wt_path)
944
+ raise
945
+
946
+ from coord.board_service import read_board # noqa: PLC0415
947
+ from coord.diagnose import stage_assignments # noqa: PLC0415
948
+
949
+ board = read_board()
950
+ work_rows = stage_assignments(board, repo, issue_number, "work")
951
+ if not work_rows:
942
952
  click.echo(
943
- f" note: any expected_red entries for #{issue_number} clear "
944
- f"automatically once its fix merges — see `coord acceptance "
945
- f"expected-red {repo}` to check current state."
953
+ f"error: no work assignment found for {repo} #{issue_number}; "
954
+ "cannot record verdict",
955
+ err=True,
946
956
  )
947
- _remove_acceptance_worktree(repo_dir, wt_path)
948
- else:
949
- click.echo(f" worktree kept for inspection: {wt_path}")
950
- sys.exit(1)
957
+ # Same rationale: a lookup error, not a failing-verdict "kept
958
+ # for inspection" case — don't leak the worktree.
959
+ _remove_acceptance_worktree(repo_dir, wt_path)
960
+ sys.exit(1)
961
+ assignment_id = work_rows[0].assignment_id
962
+
963
+ from coord.state import record_acceptance_verdict # noqa: PLC0415
964
+
965
+ acceptance_state = "passed" if verdict["green"] else "failed"
966
+ reason = failure_summary(verdict) or None
967
+ record_acceptance_verdict(
968
+ assignment_id=assignment_id,
969
+ acceptance_state=acceptance_state,
970
+ acceptance_reason=reason,
971
+ acceptance_sha=sha,
972
+ # #932: per-test counts so the Acceptance box can show partial
973
+ # progress ("3/7 acceptance green") instead of a bare verdict.
974
+ acceptance_total=verdict["total"],
975
+ acceptance_passed=verdict["passed"],
976
+ )
977
+
978
+ click.echo(json.dumps(verdict, indent=2))
979
+ click.echo(
980
+ f"\nAcceptance {acceptance_state.upper()} for {repo} #{issue_number} @ {sha}"
981
+ )
982
+
983
+ if acceptance_state == "passed":
984
+ # #2164 review: clearing expected_red here (before
985
+ # Test/Review/the actual merge to the default branch have
986
+ # happened) was the bug — it could reopen "red default branch"
987
+ # for reasons unrelated to whatever CI run next observed this
988
+ # issue's still-unmerged fix. The clear now happens in
989
+ # `coord.merge_queue.process`, right after this SHA's PR
990
+ # actually merges — see
991
+ # `coord.acceptance.clear_expected_red_via_pr`'s docstring.
992
+ # Nothing to do here beyond pointing the operator at how to
993
+ # check.
994
+ if ms is not None:
995
+ click.echo(
996
+ f" note: any expected_red entries for #{issue_number} clear "
997
+ f"automatically once its fix merges — see `coord acceptance "
998
+ f"expected-red {repo}` to check current state."
999
+ )
1000
+ _remove_acceptance_worktree(repo_dir, wt_path)
1001
+ else:
1002
+ click.echo(f" worktree kept for inspection: {wt_path}")
1003
+ sys.exit(1)
951
1004
 
952
1005
 
953
1006
  def _stall_push_wip_snapshot(cwd: Path) -> str:
@@ -3,10 +3,11 @@
3
3
 
4
4
  Thin CLI glue around ``coord/milestone_order.py`` (the pure DAG/frontier
5
5
  parser) and ``coord/milestone_dispatch.py`` (Phase 1's machine-picking +
6
- dispatch): fetches the tracking issue + milestone membership + issue
7
- terminal state from GitHub via ``coord.milestone_dispatch.
8
- fetch_milestone_context`` (shared by both subcommands so they see identical
9
- inputs), then hands that data to the pure functions and prints the result.
6
+ dispatch, and #2335's work-order -> drive-queue translation): fetches the
7
+ tracking issue + milestone membership + issue terminal state from GitHub via
8
+ ``coord.milestone_dispatch.fetch_milestone_context`` (shared by both
9
+ subcommands so they see identical inputs), then hands that data to the pure
10
+ functions and prints the result.
10
11
  """
11
12
 
12
13
  from __future__ import annotations
@@ -21,7 +22,6 @@ import httpx
21
22
  from coord.commands._common import _CONFIG_OPTION, _load_config
22
23
  from coord.milestone_dispatch import (
23
24
  DispatchOutcome,
24
- MachinePick,
25
25
  MilestoneDispatchError,
26
26
  dispatch_entry,
27
27
  fetch_milestone_context,
@@ -29,6 +29,7 @@ from coord.milestone_dispatch import (
29
29
  is_milestone_complete,
30
30
  pick_machine,
31
31
  plan_dispatch,
32
+ plan_queue,
32
33
  )
33
34
  from coord.milestone_order import (
34
35
  TRACKING_ISSUE_LABEL,
@@ -859,11 +860,6 @@ def milestone_order_cmd(repo: str, tracking_issue: int, config_path: Path) -> No
859
860
  click.echo(f" #{b.issue_number}: {b.reason}")
860
861
 
861
862
 
862
- def _echo_pick(pick: MachinePick) -> None:
863
- suffix = f" (group {pick.entry.group})" if pick.entry.group else ""
864
- click.echo(f" #{pick.entry.issue_number} -> {pick.machine.name}{suffix}")
865
-
866
-
867
863
  def _echo_outcome(outcome: DispatchOutcome) -> None:
868
864
  if outcome.ok:
869
865
  click.echo(
@@ -883,13 +879,18 @@ def _echo_outcome(outcome: DispatchOutcome) -> None:
883
879
  @milestone_group.command(
884
880
  "dispatch",
885
881
  help=(
886
- "Promote a milestone into the pipeline: dispatch its ready frontier "
887
- "in parallel (up to idle/capable machines), then keep draining it as "
888
- "declared-order dependencies complete. REPO is the local repo name "
889
- "from coordinator.yml; TRACKING_ISSUE is the GH issue number of the "
890
- "tracking issue (its body holds the `## Work order` block). This is "
891
- "the single explicit approval for the whole declared work order — "
892
- "it does not expand scope beyond what `## Work order` lists."
882
+ "Promote a milestone into the pipeline: derive the dependency order "
883
+ "from the `## Work order` DAG and queue every still-open issue into "
884
+ "the drive-queue (`coord drive-queue add --after ...`) in that order "
885
+ "(#2335) the DQ-4 tick then launches each issue as its pre-reqs "
886
+ "land, with #2247 file-overlap prediction, durable board-backed "
887
+ "state, and `coord drive-queue list/status` observability. `--next` "
888
+ "keeps the lighter direct single-dispatch path. REPO is the local "
889
+ "repo name from coordinator.yml; TRACKING_ISSUE is the GH issue "
890
+ "number of the tracking issue (its body holds the `## Work order` "
891
+ "block). This is the single explicit approval for the whole declared "
892
+ "work order — it does not expand scope beyond what `## Work order` "
893
+ "lists."
893
894
  ),
894
895
  )
895
896
  @click.argument("repo")
@@ -902,8 +903,9 @@ def _echo_outcome(outcome: DispatchOutcome) -> None:
902
903
  "--next", "next_", is_flag=True,
903
904
  help=(
904
905
  "Single-pick mode: show up to 3 ready-frontier items and dispatch "
905
- "only the one you choose. Lighter-weight than draining the whole "
906
- "milestone does not register for daemon auto-drain."
906
+ "only the one you choose directly, not via the drive-queue. "
907
+ "Lighter-weight than bulk mode's whole-DAG drive-queue enqueue "
908
+ "(#2335)."
907
909
  ),
908
910
  )
909
911
  @click.option(
@@ -1003,14 +1005,15 @@ def milestone_dispatch_cmd(
1003
1005
  click.echo(f"#{tracking_issue}: no `## Work order` block found")
1004
1006
  return
1005
1007
 
1006
- board = board_service.read_board()
1007
- plan = plan_dispatch(ctx.work_order, board, cfg, repo_entry, ctx.terminal_issues)
1008
-
1009
1008
  click.echo(
1010
1009
  f"Work order for #{tracking_issue} (milestone #{ctx.milestone_number}):"
1011
1010
  )
1012
1011
 
1013
1012
  if next_:
1013
+ board = board_service.read_board()
1014
+ plan = plan_dispatch(
1015
+ ctx.work_order, board, cfg, repo_entry, ctx.terminal_issues
1016
+ )
1014
1017
  if not plan.to_dispatch:
1015
1018
  click.echo("No ready frontier item can dispatch right now.")
1016
1019
  if plan.skipped:
@@ -1075,54 +1078,93 @@ def milestone_dispatch_cmd(
1075
1078
  sys.exit(1)
1076
1079
  return
1077
1080
 
1078
- # Bulk mode: dispatch the entire current ready frontier.
1079
- click.echo("Will dispatch now:")
1080
- if plan.to_dispatch:
1081
- for pick in plan.to_dispatch:
1082
- _echo_pick(pick)
1083
- else:
1084
- click.echo(" (none)")
1085
-
1086
- if plan.skipped:
1087
- click.echo()
1088
- click.echo("Ready but no idle machine:")
1089
- for s in plan.skipped:
1090
- click.echo(f" #{s.entry.issue_number}: {s.reason}")
1081
+ # Bulk mode (#2335): queue the whole declared work order into the
1082
+ # drive-queue rather than dispatching the ready frontier directly. Before
1083
+ # #2335 this path called `dispatch_entry` per frontier pick and registered
1084
+ # the milestone for daemon auto-drain — bypassing the drive-queue
1085
+ # entirely: no #2247 overlap prediction, no durable queue entry surviving
1086
+ # a coordinator restart, nothing in `coord drive-queue list/status`. The
1087
+ # queue's `after=` edges now carry the DAG, so the DQ-4 tick launches each
1088
+ # issue as its pre-reqs land; that also makes `register_milestone_drain`
1089
+ # redundant here (the queue IS the durable drain, and registering would
1090
+ # have the daemon's direct-dispatch drain racing it).
1091
+ queue_plan = plan_queue(ctx.work_order, ctx.terminal_issues, repo_entry.name)
1092
+
1093
+ if not queue_plan:
1094
+ click.echo("Nothing to queue — every work-order node is already closed.")
1095
+ return
1091
1096
 
1092
- if plan.waiting:
1093
- click.echo()
1094
- click.echo("Waiting:")
1095
- for b in plan.waiting:
1096
- click.echo(f" #{b.issue_number}: {b.reason}")
1097
+ click.echo("Will queue (drive-queue), in dependency order:")
1098
+ for qe in queue_plan:
1099
+ bits = []
1100
+ if qe.group:
1101
+ bits.append(f"group {qe.group}")
1102
+ if qe.after:
1103
+ bits.append("after " + ", ".join(qe.after))
1104
+ suffix = f" ({'; '.join(bits)})" if bits else ""
1105
+ click.echo(f" #{qe.issue_number}{suffix}")
1097
1106
 
1098
1107
  if dry_run:
1099
1108
  click.echo()
1100
- click.echo("(dry run — not dispatched)")
1109
+ click.echo("(dry run — nothing queued)")
1101
1110
  return
1102
1111
 
1103
- if not plan.to_dispatch:
1104
- click.echo()
1105
- click.echo("Nothing to dispatch right now.")
1106
- return
1112
+ # Reuse `coord drive-queue add`'s own helpers so a milestone enqueue is
1113
+ # byte-identical to N manual `add` calls: same pre-write validation, same
1114
+ # #2247 overlap prediction (auto-`after` edges recorded to the audit log),
1115
+ # same upsert semantics for an issue already queued.
1116
+ from coord.commands.drive_queue import ( # noqa: PLC0415
1117
+ _applicable_auto_after,
1118
+ _predict_overlap,
1119
+ _record_overlap_prediction,
1120
+ )
1121
+ from coord.drive_queue import ( # noqa: PLC0415
1122
+ QueueError,
1123
+ entries_from_rows,
1124
+ entry_key,
1125
+ validate_enqueue,
1126
+ )
1127
+ from coord.state import enqueue_drive_queue, list_drive_queue # noqa: PLC0415
1107
1128
 
1108
1129
  click.echo()
1109
1130
  failures = 0
1110
- for pick in plan.to_dispatch:
1111
- outcome = dispatch_entry(pick, repo_entry, cfg, board, tracking_issue=tracking_issue)
1112
- _echo_outcome(outcome)
1113
- if not outcome.ok:
1131
+ queued = 0
1132
+ for qe in queue_plan:
1133
+ # Re-read per entry so each add validates (and overlap-predicts)
1134
+ # against the queue as its just-added siblings left it.
1135
+ existing = entries_from_rows(list_drive_queue())
1136
+ after = list(qe.after)
1137
+ key = entry_key(repo_entry.name, qe.issue_number)
1138
+ try:
1139
+ validate_enqueue(existing, repo_entry.name, qe.issue_number, after)
1140
+ except QueueError as exc:
1141
+ click.echo(f" {key}: not queued: {exc}", err=True)
1114
1142
  failures += 1
1143
+ continue
1144
+ prediction = _predict_overlap(
1145
+ config_path, repo_entry.name, qe.issue_number, existing
1146
+ )
1147
+ auto_after = _applicable_auto_after(
1148
+ existing, repo_entry.name, qe.issue_number, after, prediction
1149
+ )
1150
+ after = [*after, *auto_after]
1151
+ enqueue_drive_queue(repo_entry.name, qe.issue_number, after=after)
1152
+ if auto_after:
1153
+ _record_overlap_prediction(
1154
+ repo_entry.name, qe.issue_number, prediction, auto_after
1155
+ )
1156
+ suffix = f" after {', '.join(after)}" if after else ""
1157
+ overlap_note = f"\n {prediction.reason}" if auto_after else ""
1158
+ click.echo(f" queued {key}{suffix}{overlap_note}")
1159
+ queued += 1
1115
1160
 
1116
- if not is_milestone_complete(ctx):
1117
- from coord.state import register_milestone_drain
1118
-
1119
- register_milestone_drain(repo_name=repo_entry.name, tracking_issue=tracking_issue)
1161
+ if queued:
1120
1162
  click.echo()
1121
1163
  click.echo(
1122
- f"Milestone #{tracking_issue} registered for daemon auto-drain "
1123
- "(requires `milestone.auto_dispatch: true` in coordinator.yml + a "
1124
- "daemon restart to activate; `coord milestone dispatch` still "
1125
- "works as a manual re-drain either way)."
1164
+ f"{queued} issue(s) queued `coord drive-queue tick` (the DQ-4 "
1165
+ "timer, or run it manually) launches them in dependency order; "
1166
+ "`coord drive-queue list` shows the queue. Entries are durable "
1167
+ "across coordinator restarts."
1126
1168
  )
1127
1169
 
1128
1170
  if failures: