code-coordinator 0.5.73__tar.gz → 0.5.75__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 (824) hide show
  1. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/CLAUDE.md +2 -0
  2. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/PKG-INFO +1 -1
  3. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/PKG-INFO +1 -1
  4. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/SOURCES.txt +6 -0
  5. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/scm_file_list.json +6 -0
  6. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/scm_version.json +2 -2
  7. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/cli.py +5 -0
  8. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/merge.py +39 -0
  9. code_coordinator-0.5.75/coord/commands/repo.py +368 -0
  10. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/status.py +56 -0
  11. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/github_ops.py +82 -0
  12. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/merge_queue.py +77 -0
  13. code_coordinator-0.5.75/coord/repo_edit.py +211 -0
  14. code_coordinator-0.5.75/coord/repo_onboard.py +999 -0
  15. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/AGENT_OPERATIONS.md +63 -0
  16. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_merge.py +163 -0
  17. code_coordinator-0.5.75/tests/test_cli_repo_2220.py +468 -0
  18. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_merge_queue.py +65 -0
  19. code_coordinator-0.5.75/tests/test_repo_edit_2220.py +225 -0
  20. code_coordinator-0.5.75/tests/test_repo_onboard_2220.py +520 -0
  21. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_thin_client_board_audit.py +7 -0
  22. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.claude/commands/board.md +0 -0
  23. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.claude/commands/complete-session.md +0 -0
  24. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.claude/commands/coordinator.md +0 -0
  25. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.githooks/_lib.sh +0 -0
  26. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.githooks/post-checkout +0 -0
  27. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.githooks/post-commit +0 -0
  28. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.githooks/post-merge +0 -0
  29. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  30. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.github/coord-ci-acceptance.yml +0 -0
  31. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.github/workflows/auto-release.yml +0 -0
  32. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.github/workflows/cargo-test.yml +0 -0
  33. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.github/workflows/publish.yml +0 -0
  34. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.github/workflows/release-tui.yml +0 -0
  35. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.github/workflows/test.yml +0 -0
  36. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/.gitignore +0 -0
  37. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/GOAL.md +0 -0
  38. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/LICENSE +0 -0
  39. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/MANIFEST.in +0 -0
  40. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/README.md +0 -0
  41. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/dependency_links.txt +0 -0
  42. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/entry_points.txt +0 -0
  43. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/requires.txt +0 -0
  44. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/code_coordinator.egg-info/top_level.txt +0 -0
  45. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/__init__.py +0 -0
  46. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/_board_mapping.py +0 -0
  47. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/acceptance.py +0 -0
  48. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/acceptance_drivers.py +0 -0
  49. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/agent.py +0 -0
  50. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/agent_app.py +0 -0
  51. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/agent_update.py +0 -0
  52. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/agents/opencode/.gitignore +0 -0
  53. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/agents/opencode/agents/work.md +0 -0
  54. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/agents/opencode/routing.jsonc +0 -0
  55. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/audit.py +0 -0
  56. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/auto_loop.py +0 -0
  57. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/board_bool_guard.py +0 -0
  58. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/board_service.py +0 -0
  59. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/board_wire.py +0 -0
  60. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/brain.py +0 -0
  61. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/branch_model.py +0 -0
  62. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/bug_intake.py +0 -0
  63. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/cargo_cache.py +0 -0
  64. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/ci_github.py +0 -0
  65. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/ci_store.py +0 -0
  66. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/claim.py +0 -0
  67. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/client.py +0 -0
  68. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/__init__.py +0 -0
  69. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/_common.py +0 -0
  70. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/acceptance.py +0 -0
  71. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/agent_ops.py +0 -0
  72. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/audit.py +0 -0
  73. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/chat.py +0 -0
  74. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/dispatch.py +0 -0
  75. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/dispatch_workers.py +0 -0
  76. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/drive.py +0 -0
  77. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/drive_queue.py +0 -0
  78. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/gate_a.py +0 -0
  79. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/gates.py +0 -0
  80. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/issues.py +0 -0
  81. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/lifecycle.py +0 -0
  82. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/milestone.py +0 -0
  83. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/plan_followup.py +0 -0
  84. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/plans.py +0 -0
  85. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/portal.py +0 -0
  86. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/release.py +0 -0
  87. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/report.py +0 -0
  88. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/review.py +0 -0
  89. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/scorecard.py +0 -0
  90. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/sessions.py +0 -0
  91. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/setup.py +0 -0
  92. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/terminal.py +0 -0
  93. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/test_gate.py +0 -0
  94. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/commands/tui.py +0 -0
  95. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/comments.py +0 -0
  96. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/config.py +0 -0
  97. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/conflict_fix.py +0 -0
  98. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dao.py +0 -0
  99. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/__init__.py +0 -0
  100. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/fixture.py +0 -0
  101. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/index.html +0 -0
  102. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/server.py +0 -0
  103. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/terminal.py +0 -0
  104. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/.gitignore +0 -0
  105. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/components.json +0 -0
  106. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/assets/Gallery-da3qNiIw.js +0 -0
  107. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  108. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/assets/Terminal-skVFCxPU.js +0 -0
  109. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/assets/index-DltfZR5f.js +0 -0
  110. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  111. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  112. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  113. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  114. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  115. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/index.html +0 -0
  116. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  117. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/sw.js +0 -0
  118. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  119. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  120. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  121. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  122. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  123. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  124. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  125. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  126. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  127. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  128. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/eslint.config.js +0 -0
  129. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/index.html +0 -0
  130. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  131. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/package-lock.json +0 -0
  132. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/package.json +0 -0
  133. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  134. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/playwright.config.ts +0 -0
  135. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/postcss.config.js +0 -0
  136. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  137. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  138. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  139. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/App.tsx +0 -0
  140. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/api/client.ts +0 -0
  141. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  142. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  143. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  144. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  145. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  146. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  147. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  148. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  149. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  150. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  151. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  152. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  153. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  154. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  155. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  156. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  157. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  158. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  159. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  160. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  161. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  162. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  163. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  164. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  165. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  166. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  167. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  168. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  169. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  170. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  171. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  172. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  173. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  174. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  175. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  176. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/index.css +0 -0
  177. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  178. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  179. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/main.tsx +0 -0
  180. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  181. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  182. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  183. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  184. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  185. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  186. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  187. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  188. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  189. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  190. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  191. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  192. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  193. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  194. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  195. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  196. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  197. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  198. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  199. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  200. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  201. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  202. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  203. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/tailwind.config.js +0 -0
  204. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/tsconfig.json +0 -0
  205. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  206. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dashboard/webapp/vite.config.ts +0 -0
  207. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/db.py +0 -0
  208. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dead_end.py +0 -0
  209. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/README.md +0 -0
  210. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-agent.service +0 -0
  211. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-db-backup.service +0 -0
  212. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-db-backup.sh +0 -0
  213. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-db-backup.timer +0 -0
  214. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-drive-queue.service +0 -0
  215. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-drive-queue.timer +0 -0
  216. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-notify.service +0 -0
  217. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-notify.timer +0 -0
  218. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-release-propagate.service +0 -0
  219. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-release-propagate.timer +0 -0
  220. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-release-window.service +0 -0
  221. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-release-window.timer +0 -0
  222. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-serve.service +0 -0
  223. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-web-dist-build.service +0 -0
  224. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-web-dist-build.timer +0 -0
  225. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy/coord-web.service +0 -0
  226. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy_manifest.py +0 -0
  227. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deploy_units.py +0 -0
  228. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/deps.py +0 -0
  229. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/diagnose.py +0 -0
  230. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dispatch.py +0 -0
  231. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/dist_name.py +0 -0
  232. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/drive.py +0 -0
  233. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/drive_queue.py +0 -0
  234. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/drive_state.py +0 -0
  235. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/events.py +0 -0
  236. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/failure_class.py +0 -0
  237. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/filelock.py +0 -0
  238. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/fleet_config_health.py +0 -0
  239. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/freshness.py +0 -0
  240. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/gate_a.py +0 -0
  241. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/gate_b.py +0 -0
  242. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/gate_snapshot.py +0 -0
  243. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/gates.py +0 -0
  244. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/goal.py +0 -0
  245. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/graph_health.py +0 -0
  246. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/__init__.py +0 -0
  247. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/aggregate.py +0 -0
  248. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/__init__.py +0 -0
  249. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/agent_install.py +0 -0
  250. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/cargo_targets.py +0 -0
  251. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/claude_binary.py +0 -0
  252. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/deploy_lane_facts.py +0 -0
  253. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/disk.py +0 -0
  254. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/fleet_board.py +0 -0
  255. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  256. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/fleet_phantom.py +0 -0
  257. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/fleet_unit_drift.py +0 -0
  258. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/graph.py +0 -0
  259. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/plan_usage.py +0 -0
  260. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/repo_state.py +0 -0
  261. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/spawned_coord.py +0 -0
  262. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/timer_active.py +0 -0
  263. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/toolchain.py +0 -0
  264. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/unit_drift.py +0 -0
  265. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/unit_enablement.py +0 -0
  266. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/checks/worktrees.py +0 -0
  267. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/cli.py +0 -0
  268. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/context.py +0 -0
  269. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/fleet_snapshot.py +0 -0
  270. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/models.py +0 -0
  271. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/pypi.py +0 -0
  272. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/registry.py +0 -0
  273. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/render.py +0 -0
  274. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/health/units.py +0 -0
  275. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/hooks.py +0 -0
  276. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/housekeeping.py +0 -0
  277. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/interactive.py +0 -0
  278. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/issue_store.py +0 -0
  279. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/liveness_auditor.py +0 -0
  280. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/machine_pause.py +0 -0
  281. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/milestone_chat.py +0 -0
  282. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/milestone_dispatch.py +0 -0
  283. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/milestone_gate.py +0 -0
  284. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/milestone_order.py +0 -0
  285. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/mock_author.py +0 -0
  286. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/models.py +0 -0
  287. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/network.py +0 -0
  288. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/new_issue_chat.py +0 -0
  289. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/__init__.py +0 -0
  290. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/baseline.py +0 -0
  291. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/cli.py +0 -0
  292. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/collect.py +0 -0
  293. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/digest.py +0 -0
  294. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/models.py +0 -0
  295. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/predicate.py +0 -0
  296. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/service.py +0 -0
  297. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/store.py +0 -0
  298. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notifier/transport.py +0 -0
  299. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/notify.py +0 -0
  300. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/openapi.py +0 -0
  301. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/overlap_fence.py +0 -0
  302. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/parentage.py +0 -0
  303. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/parentage_github.py +0 -0
  304. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/pipeline.py +0 -0
  305. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/plan_parser.py +0 -0
  306. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/plans.py +0 -0
  307. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/platform_paths.py +0 -0
  308. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/portal_bridge.py +0 -0
  309. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/pr_body_lint.py +0 -0
  310. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/prereqs.py +0 -0
  311. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/progress.py +0 -0
  312. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/providers/__init__.py +0 -0
  313. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/providers/base.py +0 -0
  314. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/providers/claude.py +0 -0
  315. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/providers/claude_pty.py +0 -0
  316. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/providers/opencode.py +0 -0
  317. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/reconcile.py +0 -0
  318. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/refine_chat.py +0 -0
  319. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/release_cordon.py +0 -0
  320. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/release_propagate.py +0 -0
  321. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/release_verify.py +0 -0
  322. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/release_window.py +0 -0
  323. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/reports.py +0 -0
  324. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/revalidate.py +0 -0
  325. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/review.py +0 -0
  326. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/scorecard.py +0 -0
  327. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/serve_app.py +0 -0
  328. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/skills/update-issue/SKILL.md +0 -0
  329. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/smoke.py +0 -0
  330. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/spend_ceiling.py +0 -0
  331. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/split_work.py +0 -0
  332. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/stage_projection.py +0 -0
  333. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/state.py +0 -0
  334. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/test_author.py +0 -0
  335. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/test_chat.py +0 -0
  336. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/test_orchestrator.py +0 -0
  337. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/test_report.py +0 -0
  338. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/tui_release.py +0 -0
  339. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/usage.py +0 -0
  340. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/usage_limits.py +0 -0
  341. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/usage_rollup.py +0 -0
  342. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coord/worker_events.py +0 -0
  343. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/coordinator.example.yml +0 -0
  344. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-agent.service +0 -0
  345. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-db-backup.service +0 -0
  346. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-db-backup.sh +0 -0
  347. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-db-backup.timer +0 -0
  348. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-drive-queue.service +0 -0
  349. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-drive-queue.timer +0 -0
  350. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-notify.service +0 -0
  351. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-notify.timer +0 -0
  352. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-release-propagate.service +0 -0
  353. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-release-propagate.timer +0 -0
  354. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-release-window.service +0 -0
  355. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-release-window.timer +0 -0
  356. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-serve.service +0 -0
  357. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-web-dist-build.service +0 -0
  358. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-web-dist-build.sh +0 -0
  359. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-web-dist-build.timer +0 -0
  360. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-web-rollback.sh +0 -0
  361. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/coord-web.service +0 -0
  362. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/deploy/node-shim.sh +0 -0
  363. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/ARCHITECTURE.md +0 -0
  364. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/ARCH_SECURITY_GATES.md +0 -0
  365. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/COCKPIT.md +0 -0
  366. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/CONTROL_CENTER.md +0 -0
  367. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/CROSS_PLATFORM.md +0 -0
  368. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/CUSTOMER_PORTAL.md +0 -0
  369. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/DRIVE_QUEUE.md +0 -0
  370. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/EPHEMERAL_WORKERS.md +0 -0
  371. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/FORGE_MIGRATION.md +0 -0
  372. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/GRAPHIFY_SETUP.md +0 -0
  373. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/ISSUE_GUIDANCE.md +0 -0
  374. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/MAC_MINI.md +0 -0
  375. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  376. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/NOTIFIER.md +0 -0
  377. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/OPENCODE_VERIFICATION.md +0 -0
  378. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/OPERATING_GOTCHAS.md +0 -0
  379. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/ORACLE_LOOP.md +0 -0
  380. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/PHONE_WEBAPP.md +0 -0
  381. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/PIPELINE_V2.md +0 -0
  382. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/PLATFORM_EVOLUTION.md +0 -0
  383. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/SECOND_BACKEND.md +0 -0
  384. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/STORE_SERVICE.md +0 -0
  385. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  386. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/WEB_CONTROL_CENTER.md +0 -0
  387. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/mocks/web/README.md +0 -0
  388. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/mocks/web/_tokens.css +0 -0
  389. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/mocks/web/issue-detail.html +0 -0
  390. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/mocks/web/pipeline-narrow.html +0 -0
  391. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/docs/mocks/web/pipeline-wide.html +0 -0
  392. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/graphify-out/.gitignore +0 -0
  393. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/install-agent.sh +0 -0
  394. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/pyproject.toml +0 -0
  395. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/audit_review_verdict_overrides.py +0 -0
  396. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  397. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/build-worker-image.sh +0 -0
  398. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/coordinator-machine.py +0 -0
  399. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/epic-down.sh +0 -0
  400. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/epic-up.sh +0 -0
  401. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/preflight.sh +0 -0
  402. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/provision-worker.sh +0 -0
  403. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  404. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  405. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/azure-workers/verify-github-token.sh +0 -0
  406. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/codegen.py +0 -0
  407. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/coord-test-runner.sh +0 -0
  408. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/drive-batch.sh +0 -0
  409. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/gen_board_fixture.py +0 -0
  410. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/next_release_tag.py +0 -0
  411. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/run_tests_in_populated_home.sh +0 -0
  412. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/run_tests_without_gh.sh +0 -0
  413. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/smoke_437_interactive.py +0 -0
  414. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/verify_878_review_capture.py +0 -0
  415. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/verify_release_published.py +0 -0
  416. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/scripts/verify_release_wheel.py +0 -0
  417. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/setup.cfg +0 -0
  418. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/SMOKE_SET.md +0 -0
  419. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/__init__.py +0 -0
  420. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  421. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-33/contract.md +0 -0
  422. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-33/manifest.yml +0 -0
  423. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  424. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  425. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  426. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  427. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-37/conftest.py +0 -0
  428. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-37/contract.md +0 -0
  429. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-37/manifest.yml +0 -0
  430. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  431. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  432. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/contract.md +0 -0
  433. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/manifest.yml +0 -0
  434. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  435. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  436. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  437. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  438. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  439. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  440. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  441. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  442. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  443. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  444. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-51/contract.md +0 -0
  445. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  446. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  447. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-51/manifest.yml +0 -0
  448. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  449. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-51/tsconfig.json +0 -0
  450. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  451. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/conftest.py +0 -0
  452. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/board-pipeline-basic.json +0 -0
  453. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  454. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  455. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  456. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/playwright/all_pass.json +0 -0
  457. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  458. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/playwright/mixed_fail.json +0 -0
  459. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  460. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  461. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/playwright/skip.json +0 -0
  462. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/playwright/truncated.json +0 -0
  463. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  464. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  465. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  466. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  467. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  468. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  469. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  470. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  471. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_acceptance.py +0 -0
  472. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_acceptance_drivers.py +0 -0
  473. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent.py +0 -0
  474. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_api_error.py +0 -0
  475. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_app.py +0 -0
  476. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_branch_base.py +0 -0
  477. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_branch_capture.py +0 -0
  478. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_config_free_1712.py +0 -0
  479. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_deploy_units_endpoint.py +0 -0
  480. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_dirty_worktree.py +0 -0
  481. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_graph_self_heal.py +0 -0
  482. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_health_h3.py +0 -0
  483. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_idle_restart.py +0 -0
  484. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_push_failure.py +0 -0
  485. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_reap.py +0 -0
  486. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_repos_and_pull.py +0 -0
  487. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_restart_services_endpoint.py +0 -0
  488. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_startup_diagnostics.py +0 -0
  489. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_update.py +0 -0
  490. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_update_bluegreen.py +0 -0
  491. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_usage_limit.py +0 -0
  492. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_agent_zero_commit.py +0 -0
  493. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_ambient_home_isolation.py +0 -0
  494. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_approve_reject_plan.py +0 -0
  495. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_approve_usage_gate.py +0 -0
  496. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_assignment_already_recorded_daemon.py +0 -0
  497. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_audit_log.py +0 -0
  498. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_audit_outcome.py +0 -0
  499. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_audit_query.py +0 -0
  500. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_auto_loop.py +0 -0
  501. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_auto_release_publish_2035.py +0 -0
  502. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_base_checkout_restore.py +0 -0
  503. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_board_cap_762.py +0 -0
  504. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_board_fixture.py +0 -0
  505. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_board_read_path.py +0 -0
  506. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_board_service.py +0 -0
  507. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_board_state.py +0 -0
  508. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_board_wire.py +0 -0
  509. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_brain.py +0 -0
  510. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_branch_model.py +0 -0
  511. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_bug_intake.py +0 -0
  512. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_build_worker_image_env_update.py +0 -0
  513. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cargo_cache.py +0 -0
  514. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_ci_acceptance_gate_1950.py +0 -0
  515. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_ci_parity_2091.py +0 -0
  516. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_ci_store.py +0 -0
  517. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_claim.py +0 -0
  518. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_acceptance.py +0 -0
  519. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_assign.py +0 -0
  520. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  521. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_assign_interactive_remote.py +0 -0
  522. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_assign_provider.py +0 -0
  523. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  524. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_audit.py +0 -0
  525. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_chat_continue.py +0 -0
  526. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_diagnose_config_provenance.py +0 -0
  527. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_diagnose_graph.py +0 -0
  528. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_doctor.py +0 -0
  529. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_doctor_config_free_1801.py +0 -0
  530. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  531. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_drive.py +0 -0
  532. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_drive_queue.py +0 -0
  533. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_escalate.py +0 -0
  534. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_fix_headless_review.py +0 -0
  535. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_gate_a.py +0 -0
  536. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_install_drift.py +0 -0
  537. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_install_skills.py +0 -0
  538. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_issue_create_label.py +0 -0
  539. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_issue_reopen.py +0 -0
  540. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_assign.py +0 -0
  541. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_capture.py +0 -0
  542. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_chat_add_child.py +0 -0
  543. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_dispatch.py +0 -0
  544. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_gate_b.py +0 -0
  545. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_gate_c.py +0 -0
  546. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_order.py +0 -0
  547. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  548. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_milestone_ship.py +0 -0
  549. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_network.py +0 -0
  550. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_new_issue_chat.py +0 -0
  551. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_plans.py +0 -0
  552. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_portal.py +0 -0
  553. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_pull_artifact.py +0 -0
  554. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_queue.py +0 -0
  555. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_reattach_sessions.py +0 -0
  556. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_refine_board.py +0 -0
  557. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_release_preflight.py +0 -0
  558. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_release_propagate.py +0 -0
  559. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_release_window.py +0 -0
  560. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_scorecard.py +0 -0
  561. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_set_review_findings.py +0 -0
  562. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_status_advisory_terminal.py +0 -0
  563. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_status_merge_queue.py +0 -0
  564. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_status_provider.py +0 -0
  565. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_status_review_finalizing.py +0 -0
  566. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_status_test_failed_tag.py +0 -0
  567. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_status_usage_limit.py +0 -0
  568. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_sync_comments_873.py +0 -0
  569. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_test_plan.py +0 -0
  570. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_track.py +0 -0
  571. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_tui_update.py +0 -0
  572. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cli_wait.py +0 -0
  573. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_client_base_install.py +0 -0
  574. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_comments.py +0 -0
  575. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_completion_summary.py +0 -0
  576. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_config.py +0 -0
  577. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_config_acceptance.py +0 -0
  578. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_config_audit.py +0 -0
  579. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_config_pricing.py +0 -0
  580. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_config_usage_gate.py +0 -0
  581. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_conflict_fix.py +0 -0
  582. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_conflict_fix_semantic.py +0 -0
  583. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_coord_test.py +0 -0
  584. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_coord_test_runner_baseline.py +0 -0
  585. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_coord_test_runner_routing.py +0 -0
  586. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_coord_test_runner_toolchain.py +0 -0
  587. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_coord_web_sse_restart_live.py +0 -0
  588. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_coordinator_machine.py +0 -0
  589. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_cross_platform_imports.py +0 -0
  590. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dashboard.py +0 -0
  591. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dashboard_fixture.py +0 -0
  592. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dashboard_terminal.py +0 -0
  593. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dashboard_terminal_live.py +0 -0
  594. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_db.py +0 -0
  595. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dead_end.py +0 -0
  596. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deploy_coord_db_backup.py +0 -0
  597. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deploy_coord_web_dist.py +0 -0
  598. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deploy_coord_web_rollback.py +0 -0
  599. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deploy_drive_queue_unit.py +0 -0
  600. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deploy_manifest.py +0 -0
  601. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deploy_units_lane.py +0 -0
  602. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deploy_web_unit.py +0 -0
  603. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_deps.py +0 -0
  604. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_diagnose.py +0 -0
  605. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dispatch.py +0 -0
  606. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dispatch_target_validation.py +0 -0
  607. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_dist_name.py +0 -0
  608. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_done_housekeeping.py +0 -0
  609. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_drive.py +0 -0
  610. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_drive_queue.py +0 -0
  611. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_drive_state.py +0 -0
  612. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_drive_tmux.py +0 -0
  613. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_epic_up_capability_detection.py +0 -0
  614. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  615. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_epic_up_image_provenance.py +0 -0
  616. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_errors.py +0 -0
  617. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_events.py +0 -0
  618. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_failure_class.py +0 -0
  619. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_filelock.py +0 -0
  620. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  621. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_fix_of_force_override.py +0 -0
  622. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_fleet_config_health.py +0 -0
  623. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_fleet_health_probes.py +0 -0
  624. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_fleet_health_snapshot.py +0 -0
  625. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_freshness.py +0 -0
  626. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_gate_a.py +0 -0
  627. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_gate_b.py +0 -0
  628. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_gate_snapshot_staleness.py +0 -0
  629. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_gates.py +0 -0
  630. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_generated_types_fixture.py +0 -0
  631. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_github_ops.py +0 -0
  632. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_goal.py +0 -0
  633. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_graph_health.py +0 -0
  634. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_handoff.py +0 -0
  635. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_checks.py +0 -0
  636. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_cli.py +0 -0
  637. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_cli_graph.py +0 -0
  638. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_config.py +0 -0
  639. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_context.py +0 -0
  640. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_deploy_lane_facts.py +0 -0
  641. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_incident_regression.py +0 -0
  642. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_pypi.py +0 -0
  643. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_registry.py +0 -0
  644. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_timer_active.py +0 -0
  645. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_toolchain.py +0 -0
  646. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_unit_drift.py +0 -0
  647. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_health_unit_enablement.py +0 -0
  648. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_hooks.py +0 -0
  649. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_human_attended_437.py +0 -0
  650. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_init.py +0 -0
  651. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_integration.py +0 -0
  652. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_interactive_briefing_echo.py +0 -0
  653. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_interactive_prefill_state.py +0 -0
  654. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_interactive_session_relaunch.py +0 -0
  655. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_interactive_test_verdict_backstop.py +0 -0
  656. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_interactive_token_attribution.py +0 -0
  657. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_interactive_worktree.py +0 -0
  658. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_issue_store_seam.py +0 -0
  659. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_liveness_auditor.py +0 -0
  660. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_liveness_notify.py +0 -0
  661. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_machine_pause.py +0 -0
  662. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_merge_verify.py +0 -0
  663. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_milestone_chat.py +0 -0
  664. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_milestone_dispatch.py +0 -0
  665. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_milestone_gate.py +0 -0
  666. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_milestone_order.py +0 -0
  667. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_milestone_seam.py +0 -0
  668. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_mock_author.py +0 -0
  669. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_model_tiering.py +0 -0
  670. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_models.py +0 -0
  671. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_models_config_labels.py +0 -0
  672. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_needs_attention.py +0 -0
  673. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_network.py +0 -0
  674. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_new_issue_chat.py +0 -0
  675. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_next_release_tag.py +0 -0
  676. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_no_direct_gh_calls.py +0 -0
  677. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_node_shim.py +0 -0
  678. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_baseline.py +0 -0
  679. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_cli.py +0 -0
  680. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_collect.py +0 -0
  681. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_config.py +0 -0
  682. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_drive_seam.py +0 -0
  683. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_isolation.py +0 -0
  684. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_predicate.py +0 -0
  685. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_quiet_hours.py +0 -0
  686. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notifier_service.py +0 -0
  687. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notify.py +0 -0
  688. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_notify_drain.py +0 -0
  689. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_openapi.py +0 -0
  690. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_operational_defaults.py +0 -0
  691. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_overlap_fence.py +0 -0
  692. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_packaged_deploy_units.py +0 -0
  693. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_parentage.py +0 -0
  694. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_paste_landed.py +0 -0
  695. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_pipeline.py +0 -0
  696. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_plan_followup_approve_plan_command.py +0 -0
  697. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_plan_followup_pr_command.py +0 -0
  698. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_plan_followup_review_command.py +0 -0
  699. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_plan_only.py +0 -0
  700. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_plan_parser.py +0 -0
  701. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_platform_paths.py +0 -0
  702. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_portal_bridge.py +0 -0
  703. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_portal_config.py +0 -0
  704. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_pr_body_lint.py +0 -0
  705. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_prereqs.py +0 -0
  706. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_production_db_guard.py +0 -0
  707. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_progress.py +0 -0
  708. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_provider_seam.py +0 -0
  709. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_providers.py +0 -0
  710. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_providers_config_labels.py +0 -0
  711. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_providers_pty.py +0 -0
  712. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_quiet_hours.py +0 -0
  713. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_quiet_hours_store_2146.py +0 -0
  714. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_reap_merged_sessions.py +0 -0
  715. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_reap_stale_interactive_tick.py +0 -0
  716. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_reconcile_branch.py +0 -0
  717. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_reconcile_completions.py +0 -0
  718. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_reconcile_merges.py +0 -0
  719. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_reconcile_usage_limit_done.py +0 -0
  720. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_refine_chat.py +0 -0
  721. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_release_cordon_2101.py +0 -0
  722. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_release_propagate.py +0 -0
  723. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_release_unified_1242.py +0 -0
  724. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_release_verify.py +0 -0
  725. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_release_window.py +0 -0
  726. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_remote_auto_prune.py +0 -0
  727. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_remote_interactive_reaper.py +0 -0
  728. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_report_result_push.py +0 -0
  729. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_reports.py +0 -0
  730. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_retry.py +0 -0
  731. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_retry_advisory_1606.py +0 -0
  732. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_retry_type_1636.py +0 -0
  733. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_revalidate.py +0 -0
  734. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review.py +0 -0
  735. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_end_review_without_verdict.py +0 -0
  736. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_parse_failure_diagnostic.py +0 -0
  737. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_reaffirm.py +0 -0
  738. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_state.py +0 -0
  739. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_verdict_backstop.py +0 -0
  740. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_verdict_override_audit.py +0 -0
  741. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_verdict_relay.py +0 -0
  742. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_review_zero_commits.py +0 -0
  743. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_scoped_review_wiring.py +0 -0
  744. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_scorecard.py +0 -0
  745. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_serve.py +0 -0
  746. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_serve_app_board_trim.py +0 -0
  747. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_session.py +0 -0
  748. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_slice_issue_attribution.py +0 -0
  749. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_smoke.py +0 -0
  750. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_smoke_live_checkout_restore.py +0 -0
  751. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_smoke_workflow.py +0 -0
  752. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_spend_ceiling.py +0 -0
  753. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_spend_ceiling_coordinator.py +0 -0
  754. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_split.py +0 -0
  755. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_split_work.py +0 -0
  756. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_stage_projection.py +0 -0
  757. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_stalled_pipeline.py +0 -0
  758. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_state.py +0 -0
  759. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_state_review_findings_daemon.py +0 -0
  760. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_status_fleet_footer.py +0 -0
  761. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_stop_1567.py +0 -0
  762. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_stuck.py +0 -0
  763. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_terminal_command.py +0 -0
  764. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_test_author.py +0 -0
  765. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_test_chat.py +0 -0
  766. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_test_orchestrator.py +0 -0
  767. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_test_report.py +0 -0
  768. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_test_verdict_parsing.py +0 -0
  769. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_test_verdict_transcript_floor.py +0 -0
  770. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_thin_client_config_load_1080.py +0 -0
  771. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_thin_client_daemon_routing_906.py +0 -0
  772. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_tmux_host.py +0 -0
  773. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_tmux_session.py +0 -0
  774. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_transcript_floor.py +0 -0
  775. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_usage.py +0 -0
  776. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_usage_limits.py +0 -0
  777. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_usage_rollup.py +0 -0
  778. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_venv_live_install_2121.py +0 -0
  779. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_version_single_source.py +0 -0
  780. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_watch.py +0 -0
  781. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_worker_events.py +0 -0
  782. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_worker_image_pin_sync.py +0 -0
  783. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_worker_safety.py +0 -0
  784. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_worker_test_scoping.py +0 -0
  785. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_worktree.py +0 -0
  786. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  787. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/Cargo.lock +0 -0
  788. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/Cargo.toml +0 -0
  789. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/cargo-config-local-quadraui.toml.example +0 -0
  790. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/audit.rs +0 -0
  791. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/chat.rs +0 -0
  792. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/data.rs +0 -0
  793. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/dialogs.rs +0 -0
  794. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/drive.rs +0 -0
  795. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/drive_queue.rs +0 -0
  796. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/escalation.rs +0 -0
  797. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/events.rs +0 -0
  798. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/fixtures.rs +0 -0
  799. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/fleet_health.rs +0 -0
  800. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/fleet_sessions.rs +0 -0
  801. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/fleet_terminals.rs +0 -0
  802. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/format.rs +0 -0
  803. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/milestone_dag.rs +0 -0
  804. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/mod.rs +0 -0
  805. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/msv.rs +0 -0
  806. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/pipeline.rs +0 -0
  807. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/plans.rs +0 -0
  808. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/render.rs +0 -0
  809. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/reports.rs +0 -0
  810. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/sessions.rs +0 -0
  811. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/settings_ui.rs +0 -0
  812. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/sidebar.rs +0 -0
  813. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/terminal.rs +0 -0
  814. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/tests.rs +0 -0
  815. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/types.rs +0 -0
  816. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/app/workspace.rs +0 -0
  817. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/bin/gtk.rs +0 -0
  818. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/commands.rs +0 -0
  819. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/lib.rs +0 -0
  820. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/main.rs +0 -0
  821. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/src/settings.rs +0 -0
  822. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/tests/acceptance.rs +0 -0
  823. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/tests/cli.rs +0 -0
  824. {code_coordinator-0.5.73 → code_coordinator-0.5.75}/tui/tests/fixtures/board_sample.json +0 -0
@@ -84,6 +84,8 @@ coord retry|stop|resume <id> # Recovery; `coord done` ends th
84
84
  ```
85
85
  Setup / diagnostics (discoverable via `--help`): `coord init`, `coord config`, `coord agent`, `coord serve`, `coord web`, `coord diagnose`, `coord sessions [--remote]`, `coord split`, `coord notifier` ([`docs/NOTIFIER.md`](docs/NOTIFIER.md)).
86
86
 
87
+ **Onboarding a repo is five layers, and every one fails silently (#2220).** `coord repo add <name> --github <owner/repo> --machines a,b,c` does the safely-automatable parts (reads the *real* default branch from GitHub, writes the entry into the coord-settings checkout, adds it to each machine, creates the `coord`/tier labels) and then prints the residue it deliberately did **not** do. `coord repo doctor <name>` is the part that matters: it probes all five layers from **live state, not config** — each agent's `/health` repo list, the clone on each machine, the labels that exist, whether any workflow triggers on `pull_request`, `CLAUDE.md`, graph freshness — and exits non-zero on any CRIT. `coord doctor` folds in the live-state layer for every repo, so a half-onboarded one shows up in the fleet report without anyone remembering to ask. See [`docs/AGENT_OPERATIONS.md`](docs/AGENT_OPERATIONS.md).
88
+
87
89
  ## Development
88
90
 
89
91
  Always work in a virtualenv. Agent workers are spawned with the agent's own
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.73
3
+ Version: 0.5.75
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.73
3
+ Version: 0.5.75
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
@@ -111,6 +111,8 @@ coord/release_cordon.py
111
111
  coord/release_propagate.py
112
112
  coord/release_verify.py
113
113
  coord/release_window.py
114
+ coord/repo_edit.py
115
+ coord/repo_onboard.py
114
116
  coord/reports.py
115
117
  coord/revalidate.py
116
118
  coord/review.py
@@ -153,6 +155,7 @@ coord/commands/plan_followup.py
153
155
  coord/commands/plans.py
154
156
  coord/commands/portal.py
155
157
  coord/commands/release.py
158
+ coord/commands/repo.py
156
159
  coord/commands/report.py
157
160
  coord/commands/review.py
158
161
  coord/commands/scorecard.py
@@ -497,6 +500,7 @@ tests/test_cli_refine_board.py
497
500
  tests/test_cli_release_preflight.py
498
501
  tests/test_cli_release_propagate.py
499
502
  tests/test_cli_release_window.py
503
+ tests/test_cli_repo_2220.py
500
504
  tests/test_cli_scorecard.py
501
505
  tests/test_cli_set_review_findings.py
502
506
  tests/test_cli_status_advisory_terminal.py
@@ -666,6 +670,8 @@ tests/test_release_verify.py
666
670
  tests/test_release_window.py
667
671
  tests/test_remote_auto_prune.py
668
672
  tests/test_remote_interactive_reaper.py
673
+ tests/test_repo_edit_2220.py
674
+ tests/test_repo_onboard_2220.py
669
675
  tests/test_report_result_push.py
670
676
  tests/test_reports.py
671
677
  tests/test_retry.py
@@ -64,6 +64,7 @@
64
64
  "coord/commands/plans.py",
65
65
  "coord/commands/portal.py",
66
66
  "coord/commands/release.py",
67
+ "coord/commands/repo.py",
67
68
  "coord/commands/report.py",
68
69
  "coord/commands/review.py",
69
70
  "coord/commands/scorecard.py",
@@ -289,6 +290,8 @@
289
290
  "coord/release_propagate.py",
290
291
  "coord/release_verify.py",
291
292
  "coord/release_window.py",
293
+ "coord/repo_edit.py",
294
+ "coord/repo_onboard.py",
292
295
  "coord/reports.py",
293
296
  "coord/revalidate.py",
294
297
  "coord/review.py",
@@ -527,6 +530,7 @@
527
530
  "tests/test_cli_release_preflight.py",
528
531
  "tests/test_cli_release_propagate.py",
529
532
  "tests/test_cli_release_window.py",
533
+ "tests/test_cli_repo_2220.py",
530
534
  "tests/test_cli_scorecard.py",
531
535
  "tests/test_cli_set_review_findings.py",
532
536
  "tests/test_cli_status_advisory_terminal.py",
@@ -696,6 +700,8 @@
696
700
  "tests/test_release_window.py",
697
701
  "tests/test_remote_auto_prune.py",
698
702
  "tests/test_remote_interactive_reaper.py",
703
+ "tests/test_repo_edit_2220.py",
704
+ "tests/test_repo_onboard_2220.py",
699
705
  "tests/test_report_result_push.py",
700
706
  "tests/test_reports.py",
701
707
  "tests/test_retry.py",
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.73",
2
+ "tag": "0.5.75",
3
3
  "distance": 0,
4
- "node": "g14e77699382902c886b02c14ee83a233c166d4cb",
4
+ "node": "g73af79d5b857f3191b459e4fa74599e9d5f6e319",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-14"
@@ -141,6 +141,9 @@ from coord.commands.lifecycle import done, housekeeping, notify, resume, serve,
141
141
  from coord.commands.milestone import milestone_group
142
142
  from coord.commands.plans import plans_cmd
143
143
  from coord.commands.release import release_group, release_preflight
144
+ # #2220: `coord repo add` / `coord repo doctor` — onboarding a repo, and
145
+ # verifying it actually happened across all five layers.
146
+ from coord.commands.repo import repo_group
144
147
  from coord.commands.plan_followup import (
145
148
  _dispatch_followup, # noqa: F401 — re-exported for tests
146
149
  approve_plan,
@@ -449,6 +452,8 @@ main.add_command(release_preflight)
449
452
  # the flat command above), grouped so the pre-tag and post-release halves of
450
453
  # the release story are discoverable together.
451
454
  main.add_command(release_group)
455
+ # #2220: repo onboarding + its verifier.
456
+ main.add_command(repo_group)
452
457
  main.add_command(tui_group)
453
458
 
454
459
 
@@ -218,6 +218,37 @@ def _apply_ci_revalidation(
218
218
  return deferred
219
219
 
220
220
 
221
+ def _reload_board_after_wait(board, *, dry_run: bool):
222
+ """#2143: force a fresh board read after ``_apply_ci_revalidation``'s
223
+ ``wait_for_ci_settle`` poll — which, like ``_apply_revalidation``'s
224
+ composite/solo suite runs, can hold the caller for minutes.
225
+
226
+ ``_apply_revalidation`` already refreshes the board it hands back, but
227
+ only when *it* recorded a new verdict; it has no way to know a CI-settle
228
+ wait ran afterwards. Real state can change on GitHub during that wait —
229
+ most dangerously a review approval landing, or a concurrent merge driver
230
+ (the drive-queue timer, another operator) merging the exact branch this
231
+ run is about to act on — and `merge_queue.process()` must not evaluate
232
+ review/smoke gates against a *board* snapshot that predates any of it
233
+ (the 2026-08-12 incident: a review approved 89s into the wait was still
234
+ reported as unapproved because the pre-wait board was never re-read).
235
+
236
+ Unconditional (not "only when something looks stale"): the risk here is
237
+ a stale *read*, and there's no cheap way to tell "nothing changed" from
238
+ "something changed but we didn't notice" without just re-reading. One
239
+ extra ``load_board()`` is a rounding error next to the suite run(s) or
240
+ the CI-settle poll that just happened. Under ``--dry-run`` nothing was
241
+ triggered (no wait actually ran), so the board is left untouched.
242
+ """
243
+ if dry_run:
244
+ return board
245
+ from coord.models import Board as _Board # noqa: PLC0415
246
+ from coord.state import load_board as _load_board # noqa: PLC0415
247
+
248
+ refreshed = _load_board()
249
+ return refreshed if refreshed is not None else _Board(active=[], completed=[])
250
+
251
+
221
252
  def _dispatch_conflict_fixes(events, config, *, dry_run: bool) -> None:
222
253
  """#241: classify any conflict events and dispatch a conflict-fix worker
223
254
  for the eligible ones. Mutates each conflict event's ``ev.entry.state``
@@ -1564,6 +1595,10 @@ def merge(
1564
1595
  only_items, board_only, cfg_only, ci_store_only, gh_ops,
1565
1596
  dry_run=dry_run,
1566
1597
  )
1598
+ # #2143: the CI-settle wait just above can run for minutes —
1599
+ # re-read the board so the gates `process()` runs below see
1600
+ # whatever landed on GitHub during it, not the pre-wait snapshot.
1601
+ board_only = _reload_board_after_wait(board_only, dry_run=dry_run)
1567
1602
  # #1925: an entry deferred by the CI-settle wait above must not go
1568
1603
  # through process() this pass — that would immediately re-derive the
1569
1604
  # exact self-triggered "unknown" reading the wait was just trying to
@@ -1870,6 +1905,10 @@ def merge(
1870
1905
  deferred_ci = _apply_ci_revalidation(
1871
1906
  pending, board, cfg, ci_store, gh_ops, dry_run=dry_run,
1872
1907
  )
1908
+ # #2143: the CI-settle wait just above can run for minutes —
1909
+ # re-read the board so the gates `process()` runs below see
1910
+ # whatever landed on GitHub during it, not the pre-wait snapshot.
1911
+ board = _reload_board_after_wait(board, dry_run=dry_run)
1873
1912
  # #1925: entries the CI-settle wait above gave up on while still only
1874
1913
  # seeing the registration-gap symptom must not go through process() this
1875
1914
  # pass — see `_apply_ci_revalidation`'s docstring. They keep their
@@ -0,0 +1,368 @@
1
+ """``coord repo add`` / ``coord repo doctor`` — onboarding a repo, and
2
+ checking that it actually happened (#2220).
3
+
4
+ Onboarding a repo is ~14 steps across five layers (config, three machines,
5
+ GitHub, the repo's own contents, the graph) with no command, no checklist and
6
+ no verifier — reconstructed from memory each time, and **every layer fails
7
+ silently**. ``stick-demo`` sat two-thirds onboarded until ``stick-demo#1`` died
8
+ of it, having burned both drive attempts, while ``coord config``, ``coord
9
+ status`` and ``coord assign --dry-run`` all reported the dispatch as fine.
10
+
11
+ Of the two commands here the **second is the one that matters**. A runbook is
12
+ the weakest available answer and this codebase already has the proof:
13
+ ``docs/GRAPHIFY_SETUP.md`` is exactly that shape, and graphify has still fallen
14
+ by the wayside more than once because nothing checks it. What holds is a
15
+ checkable gate — ``coord diagnose --graph``, ``coord doctor``, ``coord release
16
+ verify`` all work because they answer *is it true right now*, not *did you
17
+ remember*.
18
+
19
+ ``coord repo add`` therefore does only the mechanical, safely-automatable parts
20
+ and **prints the residue it deliberately did not do**, rather than pretending
21
+ completeness. The parts it skips (clone, agent restart, CLAUDE.md, CI workflow)
22
+ are the ones a wrong guess makes worse, and they are exactly what ``coord repo
23
+ doctor`` then verifies.
24
+ """
25
+
26
+ from __future__ import annotations
27
+
28
+ import sys
29
+ from pathlib import Path
30
+
31
+ import click
32
+
33
+ from coord.commands._common import _CONFIG_OPTION, _load_config
34
+
35
+ # Reuse the fleet's own definition of where the tracked config lives (#1779) —
36
+ # `~/src/coord-settings/coord/coordinator.yml`, NOT the `~/.coord/` symlink
37
+ # (#1832): edits must land in the checkout so they can be committed, reviewed
38
+ # and pulled onto the daemon host.
39
+ from coord.fleet_config_health import TRACKED_CONFIG_REL, default_settings_dir
40
+
41
+
42
+ @click.group("repo", help="Add a repo to the fleet, and verify it is actually onboarded.")
43
+ def repo_group() -> None:
44
+ """Repo onboarding (#2220)."""
45
+
46
+
47
+ def _resolve_write_target(explicit: Path | None) -> Path:
48
+ """Where ``coord repo add`` writes.
49
+
50
+ Defaults to the coord-settings checkout's tracked file rather than
51
+ whatever ``resolve_config_path()`` returns, because the live
52
+ ``~/.coord/coordinator.yml`` is a *symlink* into that checkout: writing
53
+ through the symlink produces an untracked, uncommitted change to the
54
+ fleet's governing config with nothing to review and nothing to pull
55
+ (#1779/#1832). Refuses rather than falling back when the checkout is
56
+ absent — a machine with no coord-settings checkout is deliberately not
57
+ allowed to edit the fleet's config.
58
+ """
59
+ if explicit is not None:
60
+ return explicit
61
+ tracked = default_settings_dir() / TRACKED_CONFIG_REL
62
+ if not tracked.exists():
63
+ raise click.ClickException(
64
+ f"no coord-settings checkout at {default_settings_dir()} (expected "
65
+ f"{tracked}). `coord repo add` writes the TRACKED config so the "
66
+ "change can be committed, reviewed and pulled — it will not write "
67
+ "through the ~/.coord symlink (#1832). Clone coord-settings, set "
68
+ "$COORD_SETTINGS_DIR, or pass --config explicitly."
69
+ )
70
+ return tracked
71
+
72
+
73
+ @repo_group.command(
74
+ "add",
75
+ help=(
76
+ "Write a new repo's coordinator.yml entry into the coord-settings "
77
+ "checkout, add it to the named machines, create the `coord` and tier "
78
+ "labels — then print the residue it deliberately did NOT do."
79
+ ),
80
+ )
81
+ @click.argument("name")
82
+ @click.option("--github", "github_slug", required=True, help="owner/repo on GitHub.")
83
+ @click.option(
84
+ "--machines", "machines_csv", default=None,
85
+ help="Comma-separated machine names that should serve this repo.",
86
+ )
87
+ @click.option(
88
+ "--repo-path", "repo_path_tmpl", default=None,
89
+ help=(
90
+ "Path to the clone on each machine. Default: ~/src/<name> — the fleet "
91
+ "convention, and the worker WORKTREE BASE, not a convenience checkout."
92
+ ),
93
+ )
94
+ @click.option(
95
+ "--default-branch", "default_branch_override", default=None,
96
+ help=(
97
+ "Override the default branch instead of reading the real one from "
98
+ "GitHub. Use only when GitHub is unreachable — a default_branch that "
99
+ "disagrees with the repo's real default silently routes worker PRs to "
100
+ "the wrong base."
101
+ ),
102
+ )
103
+ @click.option("--build-command", default=None, help="repos[].build_command.")
104
+ @click.option("--test-command", default=None, help="repos[].test_command.")
105
+ @click.option(
106
+ "--labels/--no-labels", "do_labels", default=True, show_default=True,
107
+ help="Create the `coord` and tier:small/tier:large labels on GitHub.",
108
+ )
109
+ @click.option(
110
+ "--dry-run", is_flag=True, default=False,
111
+ help="Print the edited config and the residue without writing anything.",
112
+ )
113
+ @click.option(
114
+ "--config", "config_path", type=click.Path(path_type=Path), default=None,
115
+ help="coordinator.yml to edit. Default: the coord-settings tracked file.",
116
+ )
117
+ def repo_add( # noqa: PLR0913 — one option per thing the command can set
118
+ name: str,
119
+ github_slug: str,
120
+ machines_csv: str | None,
121
+ repo_path_tmpl: str | None,
122
+ default_branch_override: str | None,
123
+ build_command: str | None,
124
+ test_command: str | None,
125
+ do_labels: bool, # noqa: FBT001
126
+ dry_run: bool, # noqa: FBT001
127
+ config_path: Path | None,
128
+ ) -> None:
129
+ from coord.config import load as load_config # noqa: PLC0415
130
+ from coord.repo_edit import ( # noqa: PLC0415
131
+ RepoEditError,
132
+ add_repo_to_machine,
133
+ insert_repo_entry,
134
+ render_repo_entry,
135
+ )
136
+ from coord.repo_onboard import COORD_LABEL, TIER_LABELS # noqa: PLC0415
137
+
138
+ target = _resolve_write_target(config_path)
139
+ original = target.read_text(encoding="utf-8")
140
+
141
+ try:
142
+ cfg = load_config(target)
143
+ except Exception as exc: # noqa: BLE001
144
+ raise click.ClickException(f"{target} does not currently load: {exc}") from exc
145
+
146
+ if cfg.repo(name) is not None:
147
+ raise click.ClickException(
148
+ f"repo {name!r} already has a repos[] entry in {target} — use "
149
+ f"`coord repo doctor {name}` to find what is actually missing."
150
+ )
151
+
152
+ known = {m.name for m in cfg.machines}
153
+ machines = [m.strip() for m in (machines_csv or "").split(",") if m.strip()]
154
+ unknown = [m for m in machines if m not in known]
155
+ if unknown:
156
+ raise click.ClickException(
157
+ f"unknown machine(s) {unknown} — coordinator.yml has {sorted(known)}"
158
+ )
159
+
160
+ # ── The real default branch, read from GitHub rather than trusted ────
161
+ if default_branch_override:
162
+ default_branch = default_branch_override
163
+ branch_source = "--default-branch (NOT verified against GitHub)"
164
+ else:
165
+ from coord import github_ops # noqa: PLC0415
166
+
167
+ try:
168
+ default_branch = github_ops.get_repo_default_branch(github_slug)
169
+ except Exception as exc: # noqa: BLE001
170
+ raise click.ClickException(
171
+ f"could not read {github_slug}'s default branch from GitHub: "
172
+ f"{exc}. Fix `gh` auth, or pass --default-branch explicitly "
173
+ "(and know that an unverified value silently routes worker PRs "
174
+ "to the wrong base)."
175
+ ) from exc
176
+ branch_source = f"read from GitHub ({github_slug})"
177
+
178
+ entry = render_repo_entry(
179
+ name, github_slug, default_branch,
180
+ build_command=build_command, test_command=test_command,
181
+ )
182
+ try:
183
+ updated = insert_repo_entry(original, entry)
184
+ path_tmpl = repo_path_tmpl or f"~/src/{name}"
185
+ for machine in machines:
186
+ updated = add_repo_to_machine(updated, machine, name, path_tmpl)
187
+ except RepoEditError as exc:
188
+ raise click.ClickException(str(exc)) from exc
189
+
190
+ # ── Seatbelt: the edit must produce a config that LOADS and contains
191
+ # what we think it contains. A line-level edit that "worked" but left a
192
+ # repo unroutable is worse than no command at all (#2220's whole thesis).
193
+ import tempfile # noqa: PLC0415
194
+
195
+ with tempfile.NamedTemporaryFile(
196
+ "w", suffix=".yml", delete=False, encoding="utf-8"
197
+ ) as fh:
198
+ fh.write(updated)
199
+ probe_path = Path(fh.name)
200
+ try:
201
+ new_cfg = load_config(probe_path)
202
+ except Exception as exc: # noqa: BLE001
203
+ raise click.ClickException(
204
+ f"refusing to write: the edited config does not parse ({exc}). "
205
+ f"{target} is unchanged."
206
+ ) from exc
207
+ finally:
208
+ probe_path.unlink(missing_ok=True)
209
+
210
+ if new_cfg.repo(name) is None:
211
+ raise click.ClickException(
212
+ f"refusing to write: the edit parsed but repo {name!r} is not in "
213
+ f"the result. {target} is unchanged."
214
+ )
215
+ landed = [m.name for m in new_cfg.machines if name in (m.repos or [])]
216
+ missing = [m for m in machines if m not in landed]
217
+ if missing:
218
+ raise click.ClickException(
219
+ f"refusing to write: the edit parsed but machine(s) {missing} do "
220
+ f"not list {name!r}. {target} is unchanged."
221
+ )
222
+
223
+ if dry_run:
224
+ click.echo(f"--dry-run: would write {target}")
225
+ click.echo(updated)
226
+ else:
227
+ target.write_text(updated, encoding="utf-8")
228
+ click.echo(f"✓ wrote repos[{name}] to {target}")
229
+ click.echo(f" default_branch: {default_branch} ({branch_source})")
230
+ if landed:
231
+ click.echo(f" machines: {', '.join(landed)}")
232
+
233
+ # ── Labels ───────────────────────────────────────────────────────────
234
+ created: list[str] = []
235
+ label_failures: list[str] = []
236
+ if do_labels and not dry_run:
237
+ from coord import github_ops # noqa: PLC0415
238
+
239
+ for label, colour, desc in (
240
+ (COORD_LABEL, "0e8a16", "Managed by the coord Pipeline"),
241
+ (TIER_LABELS[0], "c2e0c6", "Route to the small/cheap model"),
242
+ (TIER_LABELS[1], "5319e7", "Route to the large model"),
243
+ ):
244
+ try:
245
+ github_ops.create_label(
246
+ github_slug, label, color=colour, description=desc
247
+ )
248
+ created.append(label)
249
+ except Exception as exc: # noqa: BLE001
250
+ label_failures.append(f"{label}: {exc}")
251
+ if created:
252
+ click.echo(f"✓ labels ensured on {github_slug}: {', '.join(created)}")
253
+ for failure in label_failures:
254
+ click.echo(f"⚠ label creation failed — {failure}", err=True)
255
+
256
+ # ── Residue: what this command deliberately did NOT do ───────────────
257
+ click.echo("")
258
+ click.echo("NOT DONE — these need a human, and `coord repo doctor` checks each:")
259
+ tracked = default_settings_dir() / TRACKED_CONFIG_REL
260
+ if target == tracked:
261
+ click.echo(
262
+ f" 1. commit + push in {default_settings_dir()}, then `git pull` on "
263
+ "the daemon host — the fleet runs the COMMITTED config"
264
+ )
265
+ else:
266
+ click.echo(
267
+ f" 1. commit + push {target} wherever it is tracked, then `git "
268
+ "pull` on the daemon host — the fleet runs the COMMITTED config"
269
+ )
270
+ for machine in machines or ["<each machine>"]:
271
+ click.echo(
272
+ f" 2. clone the repo to {repo_path_tmpl or f'~/src/{name}'} on "
273
+ f"{machine} — this is the worker WORKTREE BASE"
274
+ )
275
+ click.echo(
276
+ " 3. RESTART coord-agent on each of those machines. The repo list is "
277
+ "frozen at process start (#2219), so a running agent will refuse every "
278
+ "dispatch for this repo while config says it is supported. This cannot "
279
+ "run while headless workers are live."
280
+ )
281
+ click.echo(
282
+ " 4. add a CLAUDE.md to the repo — the Test agent auto-loads it and "
283
+ "the adversarial review prompt is assembled from it; without one, "
284
+ "reviews enforce nothing."
285
+ )
286
+ click.echo(
287
+ " 5. make sure at least one CI workflow triggers on `pull_request`. "
288
+ "If none does, expects_checks() reads 'CI exists' while zero checks "
289
+ "arrive and `checks_absent` blocks EVERY merge in this repo, forever."
290
+ )
291
+ click.echo(
292
+ " 6. set `test_command`/`ci_command`, `smoke_tests.capability_rules` "
293
+ "for this repo's paths, and (if it joins the oracle loop) "
294
+ "`acceptance.drivers`."
295
+ )
296
+ click.echo(
297
+ " 7. graphify build + `graphify hook install` + `core.hooksPath`, in "
298
+ "that order, per machine (docs/GRAPHIFY_SETUP.md)."
299
+ )
300
+ click.echo("")
301
+ click.echo(f"Then: coord repo doctor {name}")
302
+
303
+
304
+ @repo_group.command(
305
+ "doctor",
306
+ help=(
307
+ "Probe all five onboarding layers for a repo and report per-layer "
308
+ "status. Reads LIVE state — each agent's /health repo list, the labels "
309
+ "that exist on GitHub, whether any workflow triggers on pull_request — "
310
+ "not config. Exits non-zero on any CRIT so it can gate."
311
+ ),
312
+ )
313
+ @click.argument("name")
314
+ @_CONFIG_OPTION
315
+ @click.option(
316
+ "--timeout", default=3.0, show_default=True, type=float,
317
+ help="Per-machine /health timeout (seconds).",
318
+ )
319
+ @click.option(
320
+ "--github/--no-github", "probe_github", default=True, show_default=True,
321
+ help="Probe GitHub (labels, workflows, CLAUDE.md). Off makes this offline.",
322
+ )
323
+ @click.option(
324
+ "--verbose", "-v", is_flag=True, default=False,
325
+ help="Show passing checks too, not just the residue.",
326
+ )
327
+ def repo_doctor(
328
+ name: str,
329
+ config_path: Path,
330
+ timeout: float,
331
+ probe_github: bool, # noqa: FBT001
332
+ verbose: bool, # noqa: FBT001
333
+ ) -> None:
334
+ from coord import repo_onboard # noqa: PLC0415
335
+ from coord.network import check_all # noqa: PLC0415
336
+
337
+ cfg = _load_config(config_path)
338
+
339
+ repo = cfg.repo(name)
340
+ if repo is None:
341
+ known = [r.name for r in cfg.repos]
342
+ click.echo(
343
+ f"error: repo {name!r} is not in coordinator.yml (have: {known})",
344
+ err=True,
345
+ )
346
+ # Still render the report — "config.repo_missing" IS the finding, and
347
+ # a caller gating on this deserves the same structured output.
348
+ facts = repo_onboard.RepoFacts(name=name, configured=False)
349
+ for line in repo_onboard.format_report(
350
+ repo_onboard.evaluate(facts), verbose=verbose
351
+ ):
352
+ click.echo(line)
353
+ sys.exit(1)
354
+
355
+ machines = [m for m in cfg.machines if name in (m.repos or [])]
356
+ statuses = check_all(machines, timeout=timeout) if machines else []
357
+
358
+ facts = repo_onboard.gather_facts(
359
+ cfg, name,
360
+ statuses=statuses,
361
+ probe_github=probe_github,
362
+ local_clone=repo_onboard.local_clone_path(cfg, name),
363
+ )
364
+ report = repo_onboard.evaluate(facts)
365
+ for line in repo_onboard.format_report(report, verbose=verbose):
366
+ click.echo(line)
367
+ if not report.ok:
368
+ sys.exit(1)
@@ -954,6 +954,42 @@ def _dispatch_blocker_lines_for_config_free(machine, cfg) -> list[tuple[bool, st
954
954
  return out
955
955
 
956
956
 
957
+ def _repo_onboarding_lines(cfg, statuses) -> list[tuple[bool, str]]:
958
+ """Render every configured repo's onboarding residue as ``coord doctor``
959
+ lines (:mod:`coord.repo_onboard`, #2220).
960
+
961
+ This is the wiring #2220 asks for: a half-onboarded repo shows up in the
962
+ fleet report *without anyone remembering to ask*. ``stick-demo`` sat
963
+ two-thirds onboarded for days and the only thing that ever noticed was a
964
+ queue entry dying of it.
965
+
966
+ Runs with ``probe_github=False`` and no graph probe, so it costs **zero**
967
+ extra round trips — it re-reads the ``/health`` bodies this command has
968
+ already fetched. That is enough for the finding that actually bit: the
969
+ #2219 agent/config repo skew is visible from ``/health`` alone. The GitHub
970
+ and repo-contents layers need ``coord repo doctor <name>``, which the
971
+ footer below points at.
972
+
973
+ Mirrors :func:`_unit_drift_lines`/:func:`_release_lag_lines`: same
974
+ computation as the dedicated command (#2096's "two surfaces, one
975
+ function" rule), projected into doctor's output. Best-effort — a repo whose
976
+ facts can't be gathered is skipped rather than breaking the fleet report.
977
+ """
978
+ from coord import repo_onboard # noqa: PLC0415
979
+
980
+ out: list[tuple[bool, str]] = []
981
+ for repo in getattr(cfg, "repos", None) or []:
982
+ try:
983
+ facts = repo_onboard.gather_facts(
984
+ cfg, repo.name, statuses=statuses, probe_github=False
985
+ )
986
+ report = repo_onboard.evaluate(facts)
987
+ except Exception: # noqa: BLE001 — never break the fleet report
988
+ continue
989
+ out.extend(repo_onboard.doctor_summary_lines(report))
990
+ return out
991
+
992
+
957
993
  def _release_lag_lines(report) -> list[tuple[bool, str]]:
958
994
  """Render a :class:`coord.release_verify.VerifyReport`'s findings as
959
995
  ``coord doctor`` lines (#2082).
@@ -1135,6 +1171,26 @@ def doctor(
1135
1171
  for reason in reasons:
1136
1172
  click.echo(f" ✗ capability {cap!r} claimed but unmet — {reason}")
1137
1173
 
1174
+ # #2220: is any repo only half-onboarded? Costs nothing extra — reuses the
1175
+ # `/health` bodies fetched above. Skipped under `--machine`, where the
1176
+ # per-machine slice would report every OTHER machine's repos as
1177
+ # "unreachable" purely because this run never probed them.
1178
+ if not machine_filter:
1179
+ onboarding_lines = _repo_onboarding_lines(cfg, statuses)
1180
+ if onboarding_lines:
1181
+ click.echo("")
1182
+ click.echo("repo onboarding (coord repo doctor):")
1183
+ for is_problem, line in onboarding_lines:
1184
+ click.echo(line)
1185
+ if is_problem:
1186
+ any_problem = True
1187
+ click.echo(
1188
+ " → this is the LIVE-state layer only. GitHub labels, the "
1189
+ "pull_request trigger, CLAUDE.md, the Test-stage command and "
1190
+ "graph freshness are NOT checked here: run "
1191
+ "`coord repo doctor <name>`"
1192
+ )
1193
+
1138
1194
  # #2082: is the fleet actually running the released version? On
1139
1195
  # 2026-08-10 it was eleven releases behind (v0.5.15 vs PyPI's v0.5.26)
1140
1196
  # and nothing routine said so — `coord release verify` already computed