code-coordinator 0.5.62__tar.gz → 0.5.64__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 (818) hide show
  1. code_coordinator-0.5.64/.github/coord-ci-acceptance.yml +94 -0
  2. code_coordinator-0.5.64/.github/workflows/cargo-test.yml +122 -0
  3. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.github/workflows/test.yml +57 -5
  4. {code_coordinator-0.5.62/code_coordinator.egg-info → code_coordinator-0.5.64}/PKG-INFO +1 -1
  5. {code_coordinator-0.5.62 → code_coordinator-0.5.64/code_coordinator.egg-info}/PKG-INFO +1 -1
  6. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/code_coordinator.egg-info/SOURCES.txt +1 -0
  7. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/code_coordinator.egg-info/scm_file_list.json +1 -0
  8. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/code_coordinator.egg-info/scm_version.json +2 -2
  9. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/acceptance.py +69 -0
  10. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/drive_queue.py +77 -14
  11. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/db.py +14 -0
  12. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/drive_queue.py +179 -30
  13. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/merge_queue.py +55 -0
  14. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/reports.py +8 -0
  15. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/serve_app.py +5 -0
  16. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/state.py +28 -9
  17. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/test_author.py +22 -0
  18. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/AGENT_OPERATIONS.md +3 -2
  19. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/coord-test-runner.sh +112 -4
  20. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/next_release_tag.py +6 -0
  21. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_acceptance.py +65 -0
  22. code_coordinator-0.5.64/tests/test_ci_acceptance_gate_1950.py +234 -0
  23. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_drive_queue.py +163 -7
  24. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_coord_test_runner_baseline.py +83 -0
  25. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_db.py +98 -0
  26. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_drive_queue.py +109 -13
  27. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_merge_queue.py +124 -0
  28. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_next_release_tag.py +10 -0
  29. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_reports.py +25 -0
  30. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_test_author.py +31 -0
  31. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/drive_queue.rs +236 -26
  32. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/types.rs +11 -0
  33. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/tests/fixtures/board_sample.json +2 -0
  34. code_coordinator-0.5.62/.github/workflows/cargo-test.yml +0 -64
  35. code_coordinator-0.5.62/tests/test_ci_acceptance_gate_1950.py +0 -114
  36. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.claude/commands/board.md +0 -0
  37. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.claude/commands/complete-session.md +0 -0
  38. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.claude/commands/coordinator.md +0 -0
  39. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.githooks/_lib.sh +0 -0
  40. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.githooks/post-checkout +0 -0
  41. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.githooks/post-commit +0 -0
  42. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.githooks/post-merge +0 -0
  43. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  44. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.github/workflows/auto-release.yml +0 -0
  45. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.github/workflows/publish.yml +0 -0
  46. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.github/workflows/release-tui.yml +0 -0
  47. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/.gitignore +0 -0
  48. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/CLAUDE.md +0 -0
  49. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/GOAL.md +0 -0
  50. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/LICENSE +0 -0
  51. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/MANIFEST.in +0 -0
  52. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/README.md +0 -0
  53. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/code_coordinator.egg-info/dependency_links.txt +0 -0
  54. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/code_coordinator.egg-info/entry_points.txt +0 -0
  55. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/code_coordinator.egg-info/requires.txt +0 -0
  56. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/code_coordinator.egg-info/top_level.txt +0 -0
  57. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/__init__.py +0 -0
  58. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/_board_mapping.py +0 -0
  59. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/acceptance_drivers.py +0 -0
  60. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/agent.py +0 -0
  61. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/agent_app.py +0 -0
  62. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/agent_update.py +0 -0
  63. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/agents/opencode/.gitignore +0 -0
  64. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/agents/opencode/agents/work.md +0 -0
  65. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/agents/opencode/routing.jsonc +0 -0
  66. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/audit.py +0 -0
  67. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/auto_loop.py +0 -0
  68. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/board_bool_guard.py +0 -0
  69. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/board_service.py +0 -0
  70. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/board_wire.py +0 -0
  71. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/brain.py +0 -0
  72. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/branch_model.py +0 -0
  73. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/bug_intake.py +0 -0
  74. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/cargo_cache.py +0 -0
  75. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/ci_github.py +0 -0
  76. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/ci_store.py +0 -0
  77. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/claim.py +0 -0
  78. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/cli.py +0 -0
  79. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/client.py +0 -0
  80. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/__init__.py +0 -0
  81. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/_common.py +0 -0
  82. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/acceptance.py +0 -0
  83. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/agent_ops.py +0 -0
  84. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/audit.py +0 -0
  85. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/chat.py +0 -0
  86. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/dispatch.py +0 -0
  87. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/dispatch_workers.py +0 -0
  88. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/drive.py +0 -0
  89. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/gate_a.py +0 -0
  90. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/gates.py +0 -0
  91. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/issues.py +0 -0
  92. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/lifecycle.py +0 -0
  93. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/merge.py +0 -0
  94. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/milestone.py +0 -0
  95. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/plan_followup.py +0 -0
  96. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/plans.py +0 -0
  97. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/portal.py +0 -0
  98. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/release.py +0 -0
  99. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/report.py +0 -0
  100. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/review.py +0 -0
  101. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/scorecard.py +0 -0
  102. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/sessions.py +0 -0
  103. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/setup.py +0 -0
  104. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/status.py +0 -0
  105. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/terminal.py +0 -0
  106. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/test_gate.py +0 -0
  107. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/commands/tui.py +0 -0
  108. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/comments.py +0 -0
  109. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/config.py +0 -0
  110. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/conflict_fix.py +0 -0
  111. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dao.py +0 -0
  112. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/__init__.py +0 -0
  113. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/fixture.py +0 -0
  114. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/index.html +0 -0
  115. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/server.py +0 -0
  116. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/terminal.py +0 -0
  117. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/.gitignore +0 -0
  118. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/components.json +0 -0
  119. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/assets/Gallery-da3qNiIw.js +0 -0
  120. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  121. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/assets/Terminal-skVFCxPU.js +0 -0
  122. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/assets/index-DltfZR5f.js +0 -0
  123. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  124. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  125. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  126. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  127. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  128. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/index.html +0 -0
  129. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  130. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/sw.js +0 -0
  131. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  132. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  133. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  134. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  135. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  136. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  137. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  138. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  139. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  140. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  141. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/eslint.config.js +0 -0
  142. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/index.html +0 -0
  143. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  144. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/package-lock.json +0 -0
  145. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/package.json +0 -0
  146. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  147. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/playwright.config.ts +0 -0
  148. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/postcss.config.js +0 -0
  149. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  150. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  151. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  152. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/App.tsx +0 -0
  153. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/api/client.ts +0 -0
  154. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  155. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  156. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  157. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  158. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  159. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  160. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  161. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  162. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  163. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  164. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  165. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  166. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  167. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  168. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  169. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  170. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  171. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  172. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  173. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  174. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  175. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  176. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  177. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  178. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  179. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  180. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  181. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  182. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  183. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  184. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  185. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  186. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  187. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  188. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  189. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/index.css +0 -0
  190. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  191. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  192. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/main.tsx +0 -0
  193. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  194. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  195. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  196. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  197. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  198. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  199. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  200. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  201. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  202. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  203. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  204. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  205. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  206. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  207. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  208. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  209. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  210. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  211. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  212. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  213. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  214. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  215. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  216. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/tailwind.config.js +0 -0
  217. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/tsconfig.json +0 -0
  218. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  219. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dashboard/webapp/vite.config.ts +0 -0
  220. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dead_end.py +0 -0
  221. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/README.md +0 -0
  222. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-agent.service +0 -0
  223. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-db-backup.service +0 -0
  224. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-db-backup.sh +0 -0
  225. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-db-backup.timer +0 -0
  226. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-drive-queue.service +0 -0
  227. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-drive-queue.timer +0 -0
  228. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-notify.service +0 -0
  229. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-notify.timer +0 -0
  230. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-release-propagate.service +0 -0
  231. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-release-propagate.timer +0 -0
  232. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-release-window.service +0 -0
  233. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-release-window.timer +0 -0
  234. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-serve.service +0 -0
  235. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-web-dist-build.service +0 -0
  236. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-web-dist-build.timer +0 -0
  237. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy/coord-web.service +0 -0
  238. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy_manifest.py +0 -0
  239. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deploy_units.py +0 -0
  240. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/deps.py +0 -0
  241. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/diagnose.py +0 -0
  242. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dispatch.py +0 -0
  243. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/dist_name.py +0 -0
  244. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/drive.py +0 -0
  245. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/drive_state.py +0 -0
  246. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/events.py +0 -0
  247. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/failure_class.py +0 -0
  248. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/filelock.py +0 -0
  249. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/fleet_config_health.py +0 -0
  250. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/freshness.py +0 -0
  251. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/gate_a.py +0 -0
  252. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/gate_b.py +0 -0
  253. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/gate_snapshot.py +0 -0
  254. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/gates.py +0 -0
  255. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/github_ops.py +0 -0
  256. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/goal.py +0 -0
  257. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/graph_health.py +0 -0
  258. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/__init__.py +0 -0
  259. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/aggregate.py +0 -0
  260. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/__init__.py +0 -0
  261. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/agent_install.py +0 -0
  262. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/cargo_targets.py +0 -0
  263. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/claude_binary.py +0 -0
  264. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/deploy_lane_facts.py +0 -0
  265. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/disk.py +0 -0
  266. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/fleet_board.py +0 -0
  267. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  268. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/fleet_phantom.py +0 -0
  269. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/fleet_unit_drift.py +0 -0
  270. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/graph.py +0 -0
  271. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/plan_usage.py +0 -0
  272. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/repo_state.py +0 -0
  273. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/spawned_coord.py +0 -0
  274. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/timer_active.py +0 -0
  275. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/toolchain.py +0 -0
  276. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/unit_drift.py +0 -0
  277. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/unit_enablement.py +0 -0
  278. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/checks/worktrees.py +0 -0
  279. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/cli.py +0 -0
  280. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/context.py +0 -0
  281. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/fleet_snapshot.py +0 -0
  282. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/models.py +0 -0
  283. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/pypi.py +0 -0
  284. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/registry.py +0 -0
  285. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/render.py +0 -0
  286. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/health/units.py +0 -0
  287. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/hooks.py +0 -0
  288. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/housekeeping.py +0 -0
  289. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/interactive.py +0 -0
  290. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/issue_store.py +0 -0
  291. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/liveness_auditor.py +0 -0
  292. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/machine_pause.py +0 -0
  293. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/milestone_chat.py +0 -0
  294. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/milestone_dispatch.py +0 -0
  295. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/milestone_gate.py +0 -0
  296. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/milestone_order.py +0 -0
  297. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/mock_author.py +0 -0
  298. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/models.py +0 -0
  299. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/network.py +0 -0
  300. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/new_issue_chat.py +0 -0
  301. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/__init__.py +0 -0
  302. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/baseline.py +0 -0
  303. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/cli.py +0 -0
  304. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/collect.py +0 -0
  305. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/digest.py +0 -0
  306. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/models.py +0 -0
  307. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/predicate.py +0 -0
  308. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/service.py +0 -0
  309. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/store.py +0 -0
  310. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notifier/transport.py +0 -0
  311. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/notify.py +0 -0
  312. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/openapi.py +0 -0
  313. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/overlap_fence.py +0 -0
  314. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/parentage.py +0 -0
  315. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/parentage_github.py +0 -0
  316. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/pipeline.py +0 -0
  317. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/plan_parser.py +0 -0
  318. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/plans.py +0 -0
  319. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/platform_paths.py +0 -0
  320. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/portal_bridge.py +0 -0
  321. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/pr_body_lint.py +0 -0
  322. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/prereqs.py +0 -0
  323. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/progress.py +0 -0
  324. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/providers/__init__.py +0 -0
  325. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/providers/base.py +0 -0
  326. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/providers/claude.py +0 -0
  327. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/providers/claude_pty.py +0 -0
  328. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/providers/opencode.py +0 -0
  329. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/reconcile.py +0 -0
  330. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/refine_chat.py +0 -0
  331. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/release_cordon.py +0 -0
  332. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/release_propagate.py +0 -0
  333. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/release_verify.py +0 -0
  334. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/release_window.py +0 -0
  335. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/revalidate.py +0 -0
  336. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/review.py +0 -0
  337. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/scorecard.py +0 -0
  338. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/skills/update-issue/SKILL.md +0 -0
  339. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/smoke.py +0 -0
  340. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/spend_ceiling.py +0 -0
  341. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/split_work.py +0 -0
  342. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/stage_projection.py +0 -0
  343. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/test_chat.py +0 -0
  344. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/test_orchestrator.py +0 -0
  345. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/test_report.py +0 -0
  346. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/tui_release.py +0 -0
  347. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/usage.py +0 -0
  348. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/usage_limits.py +0 -0
  349. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/usage_rollup.py +0 -0
  350. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coord/worker_events.py +0 -0
  351. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/coordinator.example.yml +0 -0
  352. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-agent.service +0 -0
  353. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-db-backup.service +0 -0
  354. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-db-backup.sh +0 -0
  355. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-db-backup.timer +0 -0
  356. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-drive-queue.service +0 -0
  357. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-drive-queue.timer +0 -0
  358. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-notify.service +0 -0
  359. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-notify.timer +0 -0
  360. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-release-propagate.service +0 -0
  361. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-release-propagate.timer +0 -0
  362. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-release-window.service +0 -0
  363. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-release-window.timer +0 -0
  364. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-serve.service +0 -0
  365. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-web-dist-build.service +0 -0
  366. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-web-dist-build.sh +0 -0
  367. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-web-dist-build.timer +0 -0
  368. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-web-rollback.sh +0 -0
  369. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/coord-web.service +0 -0
  370. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/deploy/node-shim.sh +0 -0
  371. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/ARCHITECTURE.md +0 -0
  372. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/ARCH_SECURITY_GATES.md +0 -0
  373. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/COCKPIT.md +0 -0
  374. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/CONTROL_CENTER.md +0 -0
  375. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/CROSS_PLATFORM.md +0 -0
  376. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/CUSTOMER_PORTAL.md +0 -0
  377. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/DRIVE_QUEUE.md +0 -0
  378. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/EPHEMERAL_WORKERS.md +0 -0
  379. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/FORGE_MIGRATION.md +0 -0
  380. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/GRAPHIFY_SETUP.md +0 -0
  381. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/ISSUE_GUIDANCE.md +0 -0
  382. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/MAC_MINI.md +0 -0
  383. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  384. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/NOTIFIER.md +0 -0
  385. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/OPENCODE_VERIFICATION.md +0 -0
  386. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/OPERATING_GOTCHAS.md +0 -0
  387. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/ORACLE_LOOP.md +0 -0
  388. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/PHONE_WEBAPP.md +0 -0
  389. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/PIPELINE_V2.md +0 -0
  390. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/PLATFORM_EVOLUTION.md +0 -0
  391. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/SECOND_BACKEND.md +0 -0
  392. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/STORE_SERVICE.md +0 -0
  393. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  394. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/WEB_CONTROL_CENTER.md +0 -0
  395. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/mocks/web/README.md +0 -0
  396. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/mocks/web/_tokens.css +0 -0
  397. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/mocks/web/issue-detail.html +0 -0
  398. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/mocks/web/pipeline-narrow.html +0 -0
  399. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/docs/mocks/web/pipeline-wide.html +0 -0
  400. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/graphify-out/.gitignore +0 -0
  401. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/install-agent.sh +0 -0
  402. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/pyproject.toml +0 -0
  403. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/audit_review_verdict_overrides.py +0 -0
  404. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  405. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/build-worker-image.sh +0 -0
  406. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/coordinator-machine.py +0 -0
  407. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/epic-down.sh +0 -0
  408. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/epic-up.sh +0 -0
  409. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/preflight.sh +0 -0
  410. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/provision-worker.sh +0 -0
  411. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  412. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  413. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/azure-workers/verify-github-token.sh +0 -0
  414. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/codegen.py +0 -0
  415. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/drive-batch.sh +0 -0
  416. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/gen_board_fixture.py +0 -0
  417. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/run_tests_in_populated_home.sh +0 -0
  418. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/run_tests_without_gh.sh +0 -0
  419. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/smoke_437_interactive.py +0 -0
  420. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/verify_878_review_capture.py +0 -0
  421. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/verify_release_published.py +0 -0
  422. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/scripts/verify_release_wheel.py +0 -0
  423. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/setup.cfg +0 -0
  424. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/SMOKE_SET.md +0 -0
  425. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/__init__.py +0 -0
  426. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  427. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-33/contract.md +0 -0
  428. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-33/manifest.yml +0 -0
  429. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  430. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  431. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  432. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  433. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-37/conftest.py +0 -0
  434. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-37/contract.md +0 -0
  435. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-37/manifest.yml +0 -0
  436. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  437. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  438. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/contract.md +0 -0
  439. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/manifest.yml +0 -0
  440. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  441. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  442. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  443. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  444. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  445. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  446. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  447. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  448. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  449. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  450. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-51/contract.md +0 -0
  451. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  452. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  453. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-51/manifest.yml +0 -0
  454. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  455. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-51/tsconfig.json +0 -0
  456. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  457. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/conftest.py +0 -0
  458. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/board-pipeline-basic.json +0 -0
  459. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  460. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  461. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  462. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/playwright/all_pass.json +0 -0
  463. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  464. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/playwright/mixed_fail.json +0 -0
  465. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  466. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  467. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/playwright/skip.json +0 -0
  468. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/playwright/truncated.json +0 -0
  469. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  470. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  471. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  472. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  473. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  474. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  475. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  476. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  477. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_acceptance_drivers.py +0 -0
  478. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent.py +0 -0
  479. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_api_error.py +0 -0
  480. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_app.py +0 -0
  481. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_branch_base.py +0 -0
  482. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_branch_capture.py +0 -0
  483. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_config_free_1712.py +0 -0
  484. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_deploy_units_endpoint.py +0 -0
  485. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_dirty_worktree.py +0 -0
  486. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_graph_self_heal.py +0 -0
  487. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_health_h3.py +0 -0
  488. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_idle_restart.py +0 -0
  489. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_push_failure.py +0 -0
  490. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_reap.py +0 -0
  491. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_repos_and_pull.py +0 -0
  492. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_restart_services_endpoint.py +0 -0
  493. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_startup_diagnostics.py +0 -0
  494. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_update.py +0 -0
  495. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_update_bluegreen.py +0 -0
  496. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_usage_limit.py +0 -0
  497. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_agent_zero_commit.py +0 -0
  498. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_ambient_home_isolation.py +0 -0
  499. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_approve_reject_plan.py +0 -0
  500. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_approve_usage_gate.py +0 -0
  501. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_assignment_already_recorded_daemon.py +0 -0
  502. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_audit_log.py +0 -0
  503. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_audit_outcome.py +0 -0
  504. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_audit_query.py +0 -0
  505. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_auto_loop.py +0 -0
  506. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_auto_release_publish_2035.py +0 -0
  507. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_base_checkout_restore.py +0 -0
  508. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_board_cap_762.py +0 -0
  509. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_board_fixture.py +0 -0
  510. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_board_read_path.py +0 -0
  511. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_board_service.py +0 -0
  512. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_board_state.py +0 -0
  513. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_board_wire.py +0 -0
  514. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_brain.py +0 -0
  515. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_branch_model.py +0 -0
  516. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_bug_intake.py +0 -0
  517. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_build_worker_image_env_update.py +0 -0
  518. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cargo_cache.py +0 -0
  519. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_ci_store.py +0 -0
  520. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_claim.py +0 -0
  521. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_acceptance.py +0 -0
  522. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_assign.py +0 -0
  523. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  524. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_assign_interactive_remote.py +0 -0
  525. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_assign_provider.py +0 -0
  526. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_audit.py +0 -0
  527. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_chat_continue.py +0 -0
  528. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_diagnose_config_provenance.py +0 -0
  529. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_diagnose_graph.py +0 -0
  530. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_doctor.py +0 -0
  531. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_doctor_config_free_1801.py +0 -0
  532. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  533. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_drive.py +0 -0
  534. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_escalate.py +0 -0
  535. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_fix_headless_review.py +0 -0
  536. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_gate_a.py +0 -0
  537. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_install_drift.py +0 -0
  538. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_install_skills.py +0 -0
  539. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_issue_create_label.py +0 -0
  540. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_issue_reopen.py +0 -0
  541. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_merge.py +0 -0
  542. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_assign.py +0 -0
  543. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_capture.py +0 -0
  544. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_chat_add_child.py +0 -0
  545. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_dispatch.py +0 -0
  546. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_gate_b.py +0 -0
  547. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_gate_c.py +0 -0
  548. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_order.py +0 -0
  549. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  550. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_milestone_ship.py +0 -0
  551. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_network.py +0 -0
  552. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_new_issue_chat.py +0 -0
  553. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_plans.py +0 -0
  554. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_portal.py +0 -0
  555. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_pull_artifact.py +0 -0
  556. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_queue.py +0 -0
  557. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_reattach_sessions.py +0 -0
  558. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_refine_board.py +0 -0
  559. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_release_preflight.py +0 -0
  560. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_release_propagate.py +0 -0
  561. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_release_window.py +0 -0
  562. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_scorecard.py +0 -0
  563. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_set_review_findings.py +0 -0
  564. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_status_advisory_terminal.py +0 -0
  565. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_status_merge_queue.py +0 -0
  566. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_status_provider.py +0 -0
  567. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_status_review_finalizing.py +0 -0
  568. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_status_test_failed_tag.py +0 -0
  569. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_status_usage_limit.py +0 -0
  570. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_sync_comments_873.py +0 -0
  571. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_test_plan.py +0 -0
  572. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_track.py +0 -0
  573. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_tui_update.py +0 -0
  574. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cli_wait.py +0 -0
  575. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_client_base_install.py +0 -0
  576. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_comments.py +0 -0
  577. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_completion_summary.py +0 -0
  578. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_config.py +0 -0
  579. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_config_acceptance.py +0 -0
  580. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_config_audit.py +0 -0
  581. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_config_pricing.py +0 -0
  582. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_config_usage_gate.py +0 -0
  583. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_conflict_fix.py +0 -0
  584. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_conflict_fix_semantic.py +0 -0
  585. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_coord_test.py +0 -0
  586. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_coord_test_runner_routing.py +0 -0
  587. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_coord_test_runner_toolchain.py +0 -0
  588. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_coord_web_sse_restart_live.py +0 -0
  589. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_coordinator_machine.py +0 -0
  590. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_cross_platform_imports.py +0 -0
  591. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dashboard.py +0 -0
  592. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dashboard_fixture.py +0 -0
  593. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dashboard_terminal.py +0 -0
  594. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dashboard_terminal_live.py +0 -0
  595. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dead_end.py +0 -0
  596. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deploy_coord_db_backup.py +0 -0
  597. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deploy_coord_web_dist.py +0 -0
  598. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deploy_coord_web_rollback.py +0 -0
  599. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deploy_drive_queue_unit.py +0 -0
  600. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deploy_manifest.py +0 -0
  601. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deploy_units_lane.py +0 -0
  602. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deploy_web_unit.py +0 -0
  603. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_deps.py +0 -0
  604. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_diagnose.py +0 -0
  605. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dispatch.py +0 -0
  606. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dispatch_target_validation.py +0 -0
  607. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_dist_name.py +0 -0
  608. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_done_housekeeping.py +0 -0
  609. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_drive.py +0 -0
  610. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_drive_state.py +0 -0
  611. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_drive_tmux.py +0 -0
  612. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_epic_up_capability_detection.py +0 -0
  613. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  614. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_epic_up_image_provenance.py +0 -0
  615. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_errors.py +0 -0
  616. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_events.py +0 -0
  617. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_failure_class.py +0 -0
  618. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_filelock.py +0 -0
  619. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  620. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_fix_of_force_override.py +0 -0
  621. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_fleet_config_health.py +0 -0
  622. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_fleet_health_probes.py +0 -0
  623. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_fleet_health_snapshot.py +0 -0
  624. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_freshness.py +0 -0
  625. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_gate_a.py +0 -0
  626. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_gate_b.py +0 -0
  627. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_gate_snapshot_staleness.py +0 -0
  628. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_gates.py +0 -0
  629. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_generated_types_fixture.py +0 -0
  630. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_github_ops.py +0 -0
  631. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_goal.py +0 -0
  632. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_graph_health.py +0 -0
  633. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_handoff.py +0 -0
  634. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_checks.py +0 -0
  635. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_cli.py +0 -0
  636. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_cli_graph.py +0 -0
  637. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_config.py +0 -0
  638. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_context.py +0 -0
  639. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_deploy_lane_facts.py +0 -0
  640. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_incident_regression.py +0 -0
  641. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_pypi.py +0 -0
  642. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_registry.py +0 -0
  643. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_timer_active.py +0 -0
  644. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_toolchain.py +0 -0
  645. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_unit_drift.py +0 -0
  646. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_health_unit_enablement.py +0 -0
  647. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_hooks.py +0 -0
  648. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_human_attended_437.py +0 -0
  649. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_init.py +0 -0
  650. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_integration.py +0 -0
  651. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_interactive_briefing_echo.py +0 -0
  652. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_interactive_prefill_state.py +0 -0
  653. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_interactive_session_relaunch.py +0 -0
  654. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_interactive_test_verdict_backstop.py +0 -0
  655. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_interactive_token_attribution.py +0 -0
  656. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_interactive_worktree.py +0 -0
  657. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_issue_store_seam.py +0 -0
  658. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_liveness_auditor.py +0 -0
  659. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_liveness_notify.py +0 -0
  660. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_machine_pause.py +0 -0
  661. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_merge_verify.py +0 -0
  662. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_milestone_chat.py +0 -0
  663. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_milestone_dispatch.py +0 -0
  664. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_milestone_gate.py +0 -0
  665. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_milestone_order.py +0 -0
  666. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_milestone_seam.py +0 -0
  667. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_mock_author.py +0 -0
  668. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_model_tiering.py +0 -0
  669. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_models.py +0 -0
  670. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_models_config_labels.py +0 -0
  671. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_needs_attention.py +0 -0
  672. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_network.py +0 -0
  673. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_new_issue_chat.py +0 -0
  674. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_no_direct_gh_calls.py +0 -0
  675. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_node_shim.py +0 -0
  676. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_baseline.py +0 -0
  677. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_cli.py +0 -0
  678. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_collect.py +0 -0
  679. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_config.py +0 -0
  680. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_drive_seam.py +0 -0
  681. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_isolation.py +0 -0
  682. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_predicate.py +0 -0
  683. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_quiet_hours.py +0 -0
  684. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notifier_service.py +0 -0
  685. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notify.py +0 -0
  686. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_notify_drain.py +0 -0
  687. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_openapi.py +0 -0
  688. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_operational_defaults.py +0 -0
  689. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_overlap_fence.py +0 -0
  690. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_packaged_deploy_units.py +0 -0
  691. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_parentage.py +0 -0
  692. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_paste_landed.py +0 -0
  693. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_pipeline.py +0 -0
  694. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_plan_followup_approve_plan_command.py +0 -0
  695. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_plan_followup_pr_command.py +0 -0
  696. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_plan_followup_review_command.py +0 -0
  697. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_plan_only.py +0 -0
  698. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_plan_parser.py +0 -0
  699. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_platform_paths.py +0 -0
  700. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_portal_bridge.py +0 -0
  701. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_portal_config.py +0 -0
  702. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_pr_body_lint.py +0 -0
  703. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_prereqs.py +0 -0
  704. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_production_db_guard.py +0 -0
  705. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_progress.py +0 -0
  706. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_provider_seam.py +0 -0
  707. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_providers.py +0 -0
  708. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_providers_config_labels.py +0 -0
  709. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_providers_pty.py +0 -0
  710. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_quiet_hours.py +0 -0
  711. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_quiet_hours_store_2146.py +0 -0
  712. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_reap_merged_sessions.py +0 -0
  713. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_reap_stale_interactive_tick.py +0 -0
  714. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_reconcile_branch.py +0 -0
  715. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_reconcile_completions.py +0 -0
  716. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_reconcile_merges.py +0 -0
  717. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_reconcile_usage_limit_done.py +0 -0
  718. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_refine_chat.py +0 -0
  719. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_release_cordon_2101.py +0 -0
  720. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_release_propagate.py +0 -0
  721. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_release_unified_1242.py +0 -0
  722. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_release_verify.py +0 -0
  723. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_release_window.py +0 -0
  724. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_remote_auto_prune.py +0 -0
  725. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_remote_interactive_reaper.py +0 -0
  726. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_report_result_push.py +0 -0
  727. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_retry.py +0 -0
  728. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_retry_advisory_1606.py +0 -0
  729. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_retry_type_1636.py +0 -0
  730. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_revalidate.py +0 -0
  731. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review.py +0 -0
  732. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_end_review_without_verdict.py +0 -0
  733. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_parse_failure_diagnostic.py +0 -0
  734. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_reaffirm.py +0 -0
  735. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_state.py +0 -0
  736. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_verdict_backstop.py +0 -0
  737. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_verdict_override_audit.py +0 -0
  738. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_verdict_relay.py +0 -0
  739. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_review_zero_commits.py +0 -0
  740. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_scoped_review_wiring.py +0 -0
  741. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_scorecard.py +0 -0
  742. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_serve.py +0 -0
  743. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_serve_app_board_trim.py +0 -0
  744. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_session.py +0 -0
  745. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_slice_issue_attribution.py +0 -0
  746. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_smoke.py +0 -0
  747. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_smoke_live_checkout_restore.py +0 -0
  748. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_smoke_workflow.py +0 -0
  749. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_spend_ceiling.py +0 -0
  750. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_spend_ceiling_coordinator.py +0 -0
  751. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_split.py +0 -0
  752. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_split_work.py +0 -0
  753. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_stage_projection.py +0 -0
  754. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_stalled_pipeline.py +0 -0
  755. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_state.py +0 -0
  756. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_state_review_findings_daemon.py +0 -0
  757. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_status_fleet_footer.py +0 -0
  758. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_stop_1567.py +0 -0
  759. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_stuck.py +0 -0
  760. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_terminal_command.py +0 -0
  761. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_test_chat.py +0 -0
  762. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_test_orchestrator.py +0 -0
  763. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_test_report.py +0 -0
  764. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_test_verdict_parsing.py +0 -0
  765. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_test_verdict_transcript_floor.py +0 -0
  766. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_thin_client_board_audit.py +0 -0
  767. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_thin_client_config_load_1080.py +0 -0
  768. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_thin_client_daemon_routing_906.py +0 -0
  769. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_tmux_host.py +0 -0
  770. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_tmux_session.py +0 -0
  771. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_transcript_floor.py +0 -0
  772. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_usage.py +0 -0
  773. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_usage_limits.py +0 -0
  774. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_usage_rollup.py +0 -0
  775. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_venv_live_install_2121.py +0 -0
  776. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_version_single_source.py +0 -0
  777. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_watch.py +0 -0
  778. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_worker_events.py +0 -0
  779. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_worker_image_pin_sync.py +0 -0
  780. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_worker_safety.py +0 -0
  781. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_worker_test_scoping.py +0 -0
  782. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_worktree.py +0 -0
  783. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  784. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/Cargo.lock +0 -0
  785. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/Cargo.toml +0 -0
  786. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/cargo-config-local-quadraui.toml.example +0 -0
  787. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/audit.rs +0 -0
  788. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/chat.rs +0 -0
  789. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/data.rs +0 -0
  790. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/dialogs.rs +0 -0
  791. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/drive.rs +0 -0
  792. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/escalation.rs +0 -0
  793. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/events.rs +0 -0
  794. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/fixtures.rs +0 -0
  795. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/fleet_health.rs +0 -0
  796. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/fleet_sessions.rs +0 -0
  797. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/fleet_terminals.rs +0 -0
  798. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/format.rs +0 -0
  799. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/milestone_dag.rs +0 -0
  800. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/mod.rs +0 -0
  801. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/msv.rs +0 -0
  802. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/pipeline.rs +0 -0
  803. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/plans.rs +0 -0
  804. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/render.rs +0 -0
  805. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/reports.rs +0 -0
  806. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/sessions.rs +0 -0
  807. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/settings_ui.rs +0 -0
  808. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/sidebar.rs +0 -0
  809. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/terminal.rs +0 -0
  810. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/tests.rs +0 -0
  811. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/app/workspace.rs +0 -0
  812. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/bin/gtk.rs +0 -0
  813. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/commands.rs +0 -0
  814. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/lib.rs +0 -0
  815. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/main.rs +0 -0
  816. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/src/settings.rs +0 -0
  817. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/tests/acceptance.rs +0 -0
  818. {code_coordinator-0.5.62 → code_coordinator-0.5.64}/tui/tests/cli.rs +0 -0
@@ -0,0 +1,94 @@
1
+ # #2180: a minimal, CI-ONLY coordinator.yml so `.github/workflows/*.yml` can
2
+ # invoke `coord acceptance run --all --ci` (#2164's CI wrapper, PR #2173).
3
+ #
4
+ # This is deliberately NOT the fleet's real coordinator.yml. That file lives
5
+ # outside this repo (~/.coord/coordinator.yml on the coordinator host,
6
+ # "updated out-of-band" per scripts/coord-test-runner.sh's own header) and is
7
+ # unreachable from a GitHub Actions runner. `coord acceptance run` needs
8
+ # SOME coordinator.yml to resolve `acceptance.drivers.claude-coordinator`
9
+ # (and, being the same parser as the fleet config, a non-empty `repos:` /
10
+ # `machines:` list even though nothing here is a real machine) — this file
11
+ # is that, scoped to exactly what CI needs and nothing else.
12
+ #
13
+ # The three routes below mirror the fleet's real
14
+ # `acceptance.drivers.claude-coordinator.routes` (#1125 in-repo path
15
+ # routing: coord/dashboard/webapp/** -> web-playwright, coord/** ->
16
+ # cli-pytest, tui/** -> tui-tuidriver) with ONE deliberate difference: none
17
+ # of these `run:` commands reference the `{ms}` template.
18
+ #
19
+ # `{ms}` only gets substituted when `coord acceptance run` is scoped to one
20
+ # issue (`--issue N`, resolved via the issue's manifest-mapped ms-NN dir,
21
+ # coord/commands/acceptance.py). `--all` (Gate C, what `--ci` requires)
22
+ # always passes `ms=None` — coord.acceptance_drivers.render_run_command
23
+ # documents that it leaves `{ms}` UNSUBSTITUTED (literal) in that case,
24
+ # by design, for a driver whose `run:` never references it at all (like
25
+ # tui-tuidriver's below). A route written for `--issue` scoping, like the
26
+ # fleet's real `pytest tests/acceptance/{ms}`, would try to literally
27
+ # collect a path named `tests/acceptance/{ms}` under `--all` and crash
28
+ # outright — confirmed locally 2026-08-14 authoring this file:
29
+ # $ pytest 'tests/acceptance/{ms}' -q
30
+ # ERROR: file or directory not found: tests/acceptance/{ms}
31
+ # So the two use cases need different `run:` commands over the SAME
32
+ # underlying suite: the fleet config's per-issue routes stay as they are
33
+ # (a worker's own `--issue N` self-check, unaffected by this file), and
34
+ # this file's routes are written to always cover every ms-NN under that
35
+ # route in one pass — exactly what the accumulated Gate C suite needs.
36
+ repos:
37
+ - name: claude-coordinator
38
+ github: JDonaghy/claude-coordinator
39
+ default_branch: main
40
+
41
+ # Not a real fleet machine — just enough for coord.config.load() to parse.
42
+ # `coord.acceptance.acceptance_capability_gap` gives an unrecognized host
43
+ # (any GitHub Actions runner, which will never match `host:` below) the
44
+ # benefit of the doubt and proceeds rather than refusing, so this entry is
45
+ # never actually matched against anything at run time.
46
+ machines:
47
+ - name: ci-runner
48
+ host: ci-runner
49
+
50
+ acceptance:
51
+ drivers:
52
+ claude-coordinator:
53
+ routes:
54
+ # #1540: coord/dashboard/webapp/** MUST stay above coord/** below —
55
+ # driver_for() resolves the first matching route (fnmatch,
56
+ # first-match not most-specific), and coord/dashboard/webapp/** is a
57
+ # strict subset of coord/**.
58
+ - match: coord/dashboard/webapp/**
59
+ kind: web-playwright
60
+ # No `setup:` here — the CI job that uses this route provisions
61
+ # explicitly (npm ci, playwright install chromium --with-deps)
62
+ # before invoking the wrapper, matching the shape that job already
63
+ # had before #2180 wired the wrapper in.
64
+ # The trailing `--` matters: _run_web_playwright appends
65
+ # ` --reporter=json` verbatim (coord/acceptance_drivers.py), so
66
+ # without it npm would try to interpret --reporter=json as an npm
67
+ # CLI flag instead of forwarding it to the playwright binary.
68
+ run: "cd coord/dashboard/webapp && npm run test:acceptance --"
69
+ mock: "*.html"
70
+ capability: browser
71
+ - match: coord/**
72
+ kind: cli-pytest
73
+ # Whole tree, not one ms-NN dir -- see the file header.
74
+ run: "pytest tests/acceptance"
75
+ mock: "*.out"
76
+ capability: python
77
+ - match: tui/**
78
+ kind: tui-tuidriver
79
+ # Unlike the two routes above, this one is identical to the
80
+ # fleet's real route: it never referenced `{ms}` even for
81
+ # `--issue` scoping, since `cargo test --test acceptance` always
82
+ # runs the whole tui/tests/acceptance.rs entrypoint (which
83
+ # `include!`s every ms-NN/*.rs slice) regardless of `{ms}`.
84
+ # RUSTC_BOOTSTRAP=1 + -Z unstable-options: --format json is
85
+ # nightly-gated; verified working on stable rustc (#1042).
86
+ # --features test-support: tui/Cargo.toml's `acceptance` test
87
+ # target has `required-features = ["test-support"]`, so a plain
88
+ # `cargo test` (no flag) silently skips building/running it
89
+ # altogether -- that gap is exactly what made this route
90
+ # unreachable from CI before #2180.
91
+ run: "cd tui && RUSTC_BOOTSTRAP=1 cargo test --test acceptance --features test-support -- -Z unstable-options --format json"
92
+ mock: "*.screen"
93
+ capability: rust
94
+ entrypoint: tui/tests/acceptance.rs
@@ -0,0 +1,122 @@
1
+ name: Rust tests
2
+
3
+ # Closes the gap documented in GOAL.md (2026-06-11):
4
+ # "CI is pytest-only, so Rust repos (tui/quadraui/vimcode) still have no
5
+ # automated gate; they need an explicit cargo build && cargo test gate."
6
+ # Issue #741 called for either resolving or tracking the gap — this resolves it
7
+ # for the coord-tui crate (the tui/ subdirectory of this repo).
8
+ #
9
+ # #1973: tui/Cargo.toml pins quadraui by `git`/`rev` rather than a sibling
10
+ # path dependency, so `cargo test` here fetches quadraui straight from
11
+ # GitHub at the pinned rev — there is nothing left to check out or reproduce
12
+ # a sibling-directory layout for. That also retired this workflow's original
13
+ # #1865 role: the schedule/workflow_dispatch "canary" triggers below used to
14
+ # build tui/ against quadraui's *moving* `develop` branch specifically to
15
+ # catch a quadraui-side break before it reached coord-tui. Since the pin, a
16
+ # scheduled run here would just rebuild the same pinned rev every time and
17
+ # report green regardless of what quadraui's develop is doing — a canary
18
+ # that can't smell smoke. Per #1973's decision, vimcode (which keeps the
19
+ # floating path dep on purpose) is the sole canary for quadraui breaks going
20
+ # forward; this workflow is back to being a plain gate on tui/** changes.
21
+ on:
22
+ push:
23
+ branches: [main]
24
+ paths:
25
+ - 'tui/**'
26
+ # #2180: tui/tests/acceptance.rs (the sealed oracle's crate root,
27
+ # `include!`d into `cargo test --test acceptance`) is under tui/** and
28
+ # already covered above, but the JIT-authored slices it `include!`s
29
+ # live at the REPO ROOT (tests/acceptance/ms-33/, ms-38/), outside
30
+ # tui/**. Without this, a worker's fix to a red-by-design slice would
31
+ # never re-trigger this workflow at all.
32
+ - 'tests/acceptance/**'
33
+ # Self-trigger so edits to this workflow are exercised by their own PR.
34
+ - '.github/workflows/cargo-test.yml'
35
+ # Same reasoning as tests/acceptance/** above, for the CI-local config
36
+ # the new acceptance step (below) reads its driver command from.
37
+ - '.github/coord-ci-acceptance.yml'
38
+ pull_request:
39
+ branches: [main]
40
+ paths:
41
+ - 'tui/**'
42
+ - 'tests/acceptance/**'
43
+ # Self-trigger so edits to this workflow are exercised by their own PR.
44
+ - '.github/workflows/cargo-test.yml'
45
+ - '.github/coord-ci-acceptance.yml'
46
+ # Manual re-run convenience — no longer a "check tui/ against quadraui
47
+ # develop" canary (see #1973 note above); it now just builds tui/ at
48
+ # whatever ref is checked out, same as push/pull_request.
49
+ workflow_dispatch:
50
+
51
+ jobs:
52
+ cargo-test:
53
+ runs-on: ubuntu-latest
54
+ steps:
55
+ - uses: actions/checkout@v4
56
+
57
+ - uses: dtolnay/rust-toolchain@stable
58
+
59
+ - uses: Swatinem/rust-cache@v2
60
+ with:
61
+ workspaces: tui
62
+
63
+ # A few tui integration tests (commands::tests) spawn the real `coord`
64
+ # CLI (e.g. `coord --version`) via Command::new("coord") and assert it
65
+ # succeeds, so the Python package must be installed and on PATH inside
66
+ # this otherwise Rust-only job.
67
+ - uses: actions/setup-python@v5
68
+ with:
69
+ python-version: '3.12'
70
+
71
+ - name: Install coord CLI (tui integration tests spawn it)
72
+ run: pip install -e .
73
+
74
+ - name: cargo test (tui)
75
+ working-directory: tui
76
+ run: cargo test
77
+
78
+ # #2180: the tui-tuidriver sealed acceptance route (acceptance.drivers
79
+ # routes "tui/**" -> tui-tuidriver -> tui/tests/acceptance.rs, which
80
+ # `include!`s tests/acceptance/ms-33/ and ms-38/) run through the
81
+ # #2164 CI wrapper. Plain `cargo test` above does NOT exercise this —
82
+ # the `acceptance` test target has `required-features = ["test-
83
+ # support"]` (tui/Cargo.toml), so cargo silently skips building it
84
+ # without that flag. Before #2180 nothing in CI ran this route at all.
85
+ # Working directory is the repo root (not `tui`, unlike the step
86
+ # above): the driver's own `run:` command does its own `cd tui`.
87
+ #
88
+ # TEMPORARILY continue-on-error (STEP level only — same reasoning and
89
+ # same shape as the `windows` job in test.yml, see its header comment
90
+ # for why step-level and not job-level): running this route for the
91
+ # very first time (verified locally, 2026-08-14, authoring this PR)
92
+ # surfaced SIX pre-existing failures that predate #2180 and are not
93
+ # yet declared in either manifest's `expected_red:` —
94
+ # - ms-38/manifest.yml's own comment already documents all five
95
+ # `plans_detail_1122::*` tests as blocked on a harness gap (no
96
+ # public fixture seam for a seeded plan row) — #2164's
97
+ # `expected_red:` mechanism didn't exist when that comment was
98
+ # written; it's the natural home for these now.
99
+ # - ms-33's `audit_1039::populated_list_rows_are_relative_time` is a
100
+ # newly-discovered ticking-time-bomb regression: its fixture pins
101
+ # timestamps "~1 year in the past" (a fixed epoch, ts~=1752156191)
102
+ # so `format_unix_time()` always renders an "... ago" suffix — true
103
+ # when ms-33 was authored, false today (now >13 months stale) now
104
+ # that format_unix_time() has crossed whatever threshold stops
105
+ # appending "ago" for very old timestamps. This one is NOT already
106
+ # documented as expected — it looks like a genuine, ordinary bug a
107
+ # test-author/fix session should look at, not just declare red.
108
+ # Both `tests/acceptance/` and its `manifest.yml` files are SEALED
109
+ # (coord.config.AcceptanceConfig.sealed_paths) — a `type="work"`
110
+ # session (this one) editing them trips the oracle-tamper gate at
111
+ # review, so this PR deliberately does not add `expected_red:` entries
112
+ # itself. REVISIT: once a test-author/fix session addresses the six
113
+ # failures above (declaring the five documented ones in
114
+ # `expected_red:`, fixing or re-baselining the sixth), drop this
115
+ # continue-on-error and this becomes a real, blocking gate like the
116
+ # `acceptance` (ms-51) and cli-pytest (ms-37) routes already are.
117
+ - name: coord acceptance run --all --ci (tui-tuidriver route, ms-33/ms-38)
118
+ run: >-
119
+ coord acceptance run --repo claude-coordinator --all --ci
120
+ --for-path tui/src/main.rs
121
+ --config .github/coord-ci-acceptance.yml --path .
122
+ continue-on-error: true
@@ -18,7 +18,33 @@ jobs:
18
18
  with:
19
19
  python-version: ${{ matrix.python-version }}
20
20
  - run: pip install -e ".[dev]"
21
- - run: pytest
21
+ # #2180: `--ignore=tests/acceptance` — the sealed oracle-loop suite
22
+ # (tests/acceptance/ms-NN/) is split out of the ordinary suite and
23
+ # gated separately, through `coord acceptance run --all --ci` (see the
24
+ # `acceptance-cli` step below and the `acceptance` job further down),
25
+ # which honours each ms-NN/manifest.yml's `expected_red:` registry
26
+ # (#2164). Left in here, a red-by-design slice would fail this job
27
+ # outright — every ordinary PR in the repo, not just the one the slice
28
+ # belongs to — exactly the quadraui#554/#490 failure mode #2180 exists
29
+ # to close. ms-33/ms-38 (Rust, feature-gated behind test-support) and
30
+ # ms-51 (Playwright, not .py) were never swept in here; ms-37 (plain
31
+ # .py files under testpaths=["tests"]) was the one accidental gap.
32
+ - run: pytest --ignore=tests/acceptance
33
+ # #2180: the cli-pytest sealed route (acceptance.drivers routes
34
+ # "coord/**" -> cli-pytest -> tests/acceptance/ms-37) run through the
35
+ # #2164 CI wrapper instead of a raw `pytest tests/acceptance` call, so
36
+ # expected_red is honoured. One matrix leg only — the suite result
37
+ # doesn't depend on the Python version any differently than the
38
+ # ordinary suite above does, so running it twice would just double the
39
+ # cost for no new signal. See .github/coord-ci-acceptance.yml's header
40
+ # for why this points at a CI-local config rather than
41
+ # ~/.coord/coordinator.yml (unreachable from a runner).
42
+ - name: coord acceptance run --all --ci (cli-pytest route, ms-37)
43
+ if: matrix.python-version == '3.12'
44
+ run: >-
45
+ coord acceptance run --repo claude-coordinator --all --ci
46
+ --for-path coord/cli.py
47
+ --config .github/coord-ci-acceptance.yml --path .
22
48
 
23
49
  # #1895 (CP-4 slice of #1159): real Windows verification — the repo is
24
50
  # public, so `windows-latest` runners cost nothing.
@@ -83,7 +109,10 @@ jobs:
83
109
  # visible in the log as a failed test.
84
110
  - run: pip install -e ".[dev]"
85
111
  continue-on-error: true
86
- - run: pytest
112
+ # #2180: same split as the `test` job above — the sealed acceptance
113
+ # suite is gated separately through the #2164 CI wrapper, not swept
114
+ # into this job's ordinary pytest run.
115
+ - run: pytest --ignore=tests/acceptance
87
116
  continue-on-error: true
88
117
 
89
118
  # #1484: run the full suite with `gh` made unresolvable on PATH.
@@ -113,7 +142,9 @@ jobs:
113
142
  with:
114
143
  python-version: "3.12"
115
144
  - run: pip install -e ".[dev]"
116
- - run: scripts/run_tests_without_gh.sh python -m pytest tests/ -q
145
+ # #2180: same split as the `test` job — the sealed acceptance suite is
146
+ # gated separately through the #2164 CI wrapper.
147
+ - run: scripts/run_tests_without_gh.sh python -m pytest tests/ -q --ignore=tests/acceptance
117
148
 
118
149
  # #2170: run the full suite in the environment of a REAL FLEET MACHINE — a
119
150
  # populated `~/.coord/` (thin-client shaped), no `sqlite3` on PATH, and a
@@ -154,7 +185,9 @@ jobs:
154
185
  with:
155
186
  python-version: "3.12"
156
187
  - run: pip install -e ".[dev]"
157
- - run: scripts/run_tests_in_populated_home.sh python -m pytest tests/ -q
188
+ # #2180: same split as the `test` job — the sealed acceptance suite is
189
+ # gated separately through the #2164 CI wrapper.
190
+ - run: scripts/run_tests_in_populated_home.sh python -m pytest tests/ -q --ignore=tests/acceptance
158
191
  - name: What a red result here means
159
192
  if: failure()
160
193
  run: |
@@ -271,6 +304,20 @@ jobs:
271
304
  # full path/title on failure, so the ms-NN + issue are already in the
272
305
  # job's own output; the failure-hint step below just spells out the two
273
306
  # possible causes so whoever triages it doesn't have to rediscover them.
307
+ #
308
+ # #2180: the `npm run test:acceptance` step now runs THROUGH `coord
309
+ # acceptance run --all --ci` (#2164) instead of calling Playwright
310
+ # directly. Same suite, same reporter under the hood — the wrapper's
311
+ # web-playwright driver shape appends `--reporter=json` and reads
312
+ # PLAYWRIGHT_JSON_OUTPUT_FILE itself (coord/acceptance_drivers.py) — but
313
+ # now a test-id listed in a manifest's `expected_red:` that fails does not
314
+ # redden this job (a sealed slice authored red before its fix exists,
315
+ # #2164's whole point), while one that unexpectedly PASSES does, loudly
316
+ # (#1965's vacuous-assertion case). Before this, ms-51 going red for any
317
+ # reason failed this job exactly the same as every other kind of red —
318
+ # there was no way to merge a red-by-design slice without `--force-merge`.
319
+ # .github/coord-ci-acceptance.yml's header explains why this points at a
320
+ # CI-local config instead of the fleet's real ~/.coord/coordinator.yml.
274
321
  acceptance:
275
322
  runs-on: ubuntu-latest
276
323
  defaults:
@@ -288,7 +335,12 @@ jobs:
288
335
  node-version: '20'
289
336
  - run: npm ci
290
337
  - run: npx playwright install chromium --with-deps
291
- - run: npm run test:acceptance
338
+ - name: coord acceptance run --all --ci (web-playwright route, ms-51)
339
+ working-directory: .
340
+ run: >-
341
+ coord acceptance run --repo claude-coordinator --all --ci
342
+ --for-path coord/dashboard/webapp/src/App.tsx
343
+ --config .github/coord-ci-acceptance.yml --path .
292
344
  - name: A red result here is attributable, not a mystery
293
345
  if: failure()
294
346
  run: |
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.62
3
+ Version: 0.5.64
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.62
3
+ Version: 0.5.64
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
@@ -14,6 +14,7 @@ pyproject.toml
14
14
  .githooks/post-checkout
15
15
  .githooks/post-commit
16
16
  .githooks/post-merge
17
+ .github/coord-ci-acceptance.yml
17
18
  .github/ISSUE_TEMPLATE/bug_report.md
18
19
  .github/workflows/auto-release.yml
19
20
  .github/workflows/cargo-test.yml
@@ -8,6 +8,7 @@
8
8
  ".githooks/post-commit",
9
9
  ".githooks/post-merge",
10
10
  ".github/ISSUE_TEMPLATE/bug_report.md",
11
+ ".github/coord-ci-acceptance.yml",
11
12
  ".github/workflows/auto-release.yml",
12
13
  ".github/workflows/cargo-test.yml",
13
14
  ".github/workflows/publish.yml",
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.62",
2
+ "tag": "0.5.64",
3
3
  "distance": 0,
4
- "node": "g84d64a795986ab501062308d9e29da81f86cfb79",
4
+ "node": "gfd34f94b90b737b1d9df054d5147d16c070c4748",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-14"
@@ -886,6 +886,75 @@ def find_ms_manifest_for_issue_via_api(
886
886
  return None
887
887
 
888
888
 
889
+ def missing_expected_red_warning(
890
+ repo_github: str, branch: str, issue_number: int, *, gh_ops: Any = None,
891
+ ) -> str | None:
892
+ """#2191 — the writer/gate seam: is *issue_number* the signature of an
893
+ unwritten ``expected_red`` registry on *branch*'s manifest? That
894
+ signature is checkable without ever running the suite: the manifest
895
+ maps at least one test id to *issue_number* (a slice was authored for
896
+ it) but records ZERO ``expected_red`` entries for it, and the issue is
897
+ still open. #2164 shipped a reader (:func:`apply_expected_red`), a
898
+ clearer (:func:`clear_expected_red_via_pr`) and a lister
899
+ (:func:`list_expected_red_via_api`) for this registry but no writer —
900
+ :data:`coord.test_author.TEST_AUTHOR_SYSTEM_PROMPT` step 4b is the
901
+ writer (the test-author records what it observed FAIL in its step-4
902
+ run). This function is the gate half: it does not trust the prompt was
903
+ followed, so it re-derives "was anything recorded" from the manifest
904
+ itself at slice-PR-open time (:func:`coord.merge_queue.process`'s
905
+ "Open PRs first" loop, gated on ``assignment_type == "test-author"``)
906
+ and flags exactly the case a skipped step 4b produces.
907
+
908
+ Returns ``None`` — nothing to flag — when: *branch*'s manifest doesn't
909
+ reference *issue_number* at all (no slice authored yet, out of scope);
910
+ ``expected_red`` already has a non-empty entry for it (the writer did
911
+ its job, or the slice is genuinely all-green and needs none); the issue
912
+ is closed (its slice already served its purpose — flagging it now is
913
+ stale noise, not #2191's live deadlock); or any lookup fails. The last
914
+ case is deliberate fail-open, matching every other best-effort API
915
+ sweep in this module (:func:`find_ms_manifest_for_issue_via_api`,
916
+ :func:`coord.merge_queue._issue_has_expected_red_entries`) — this check
917
+ is advisory (see the "refused or warned" phrasing in #2191's acceptance
918
+ criteria; callers choose which), so an unreachable API must degrade to
919
+ "say nothing," never to blocking a PR the check itself couldn't
920
+ evaluate.
921
+
922
+ Otherwise returns a human-readable warning naming the missing ids.
923
+ """
924
+ ops = gh_ops or _default_github_ops()
925
+ found = find_ms_manifest_for_issue_via_api(
926
+ repo_github, branch, issue_number, gh_ops=ops,
927
+ )
928
+ if found is None:
929
+ return None
930
+ path, _text, _blob_sha, data = found
931
+ if data.expected_red.get(issue_number):
932
+ return None
933
+ test_ids = test_ids_for_issue(data.tests, issue_number)
934
+ if not test_ids:
935
+ return None
936
+ live_state = getattr(ops, "get_issues_live_state", None)
937
+ if live_state is None:
938
+ return None
939
+ try:
940
+ states = live_state(repo_github, [issue_number])
941
+ except Exception: # noqa: BLE001 — best-effort, fail open (see docstring)
942
+ return None
943
+ if states.get(issue_number) != "open":
944
+ return None
945
+ return (
946
+ f"#{issue_number}: {path} maps {len(test_ids)} test-id(s) to this "
947
+ f"issue ({', '.join(sorted(test_ids))}) but records no "
948
+ "`expected_red` entries for it — the #2191 signature of an "
949
+ "unwritten registry (the test-author's step 4b never ran, or was "
950
+ "skipped). If this slice is genuinely all-green already, ignore; "
951
+ "otherwise every red id here fails CI with nothing telling "
952
+ "`coord acceptance run --all --ci` that's expected, and `coord "
953
+ "merge` will need `--force-merge` or a hand-edited manifest to "
954
+ "land it."
955
+ )
956
+
957
+
889
958
  def list_expected_red_via_api(
890
959
  repo_github: str, branch: str, *, gh_ops: Any = None,
891
960
  ) -> "dict[str, dict[int, frozenset[str]]]":
@@ -43,6 +43,8 @@ from coord.drive_queue import (
43
43
  DEFAULT_MAX_ATTEMPTS,
44
44
  DEFAULT_MAX_PARALLEL_PER_REPO,
45
45
  HOLD_RELEASED,
46
+ HOLD_SCOPE_ENTRY,
47
+ HOLD_SCOPE_FLEET,
46
48
  QUEUE_ALERT_ISSUE,
47
49
  QUEUE_ALERT_REPO,
48
50
  QUEUE_ALERT_STAGE,
@@ -155,6 +157,19 @@ def drive_queue_group() -> None:
155
157
  "treated as a failure. Requires --hold-after."
156
158
  ),
157
159
  )
160
+ @click.option(
161
+ "--scope",
162
+ "hold_scope",
163
+ type=click.Choice([HOLD_SCOPE_ENTRY, HOLD_SCOPE_FLEET]),
164
+ default=HOLD_SCOPE_ENTRY,
165
+ show_default=True,
166
+ help=(
167
+ "How far a fired gate reaches (#2186). `entry` holds only entries "
168
+ "whose own --after names THIS one. `fleet` is the whole-queue stop — "
169
+ "launch NOTHING anywhere, for the rare case (a rename, a schema "
170
+ "migration) where that is really what's needed. Requires --hold-after."
171
+ ),
172
+ )
158
173
  @_CONFIG_OPTION
159
174
  def drive_queue_add(
160
175
  repo: str,
@@ -165,6 +180,7 @@ def drive_queue_add(
165
180
  hold_after: bool,
166
181
  hold_reason: str,
167
182
  resume_when: str,
183
+ hold_scope: str,
168
184
  config_path: Path,
169
185
  ) -> None:
170
186
  """Queue REPO ISSUE for `coord drive`, or update it if already queued.
@@ -175,14 +191,36 @@ def drive_queue_add(
175
191
  """
176
192
  from coord.state import enqueue_drive_queue, list_drive_queue # noqa: PLC0415
177
193
 
194
+ existing_entries = entries_from_rows(list_drive_queue())
178
195
  try:
179
196
  after = parse_after_spec(after_specs, repo)
180
197
  validate_config_repo(config_path, repo)
181
- validate_hold_flags(hold_after, hold_reason, resume_when)
182
- validate_enqueue(entries_from_rows(list_drive_queue()), repo, issue, after)
198
+ validate_hold_flags(hold_after, hold_reason, resume_when, hold_scope)
199
+ validate_enqueue(existing_entries, repo, issue, after)
183
200
  except QueueError as exc:
184
201
  raise click.ClickException(str(exc)) from None
185
202
 
203
+ # #2186: the UPDATE path in `_enqueue_drive_queue_local` always writes
204
+ # whatever `hold_scope` THIS call passed (default `entry`) — so re-adding
205
+ # an already fleet-scoped gate without repeating `--scope fleet` silently
206
+ # narrows it. That fails toward the safer/narrower scope, not a
207
+ # correctness bug, but it is a real behaviour change an operator who only
208
+ # meant to touch `--machine`/`--after` would not expect, so it is echoed
209
+ # rather than left silent.
210
+ previous = next((e for e in existing_entries if e.key == entry_key(repo, issue)), None)
211
+ scope_downgrade_warning = ""
212
+ if (
213
+ previous is not None
214
+ and previous.hold_scope == HOLD_SCOPE_FLEET
215
+ and hold_after
216
+ and hold_scope != HOLD_SCOPE_FLEET
217
+ ):
218
+ scope_downgrade_warning = (
219
+ f"\nwarning: {entry_key(repo, issue)} was scope=fleet — this add did not "
220
+ f"repeat --scope {HOLD_SCOPE_FLEET}, so its gate is now scope={hold_scope} "
221
+ "(entries-only). Pass --scope fleet again if the fleet-wide stop was still needed."
222
+ )
223
+
186
224
  enqueue_drive_queue(
187
225
  repo,
188
226
  issue,
@@ -192,37 +230,51 @@ def drive_queue_add(
192
230
  hold_after=hold_after,
193
231
  hold_reason=hold_reason,
194
232
  resume_when=resume_when,
233
+ hold_scope=hold_scope,
195
234
  )
196
235
  suffix = f" after {', '.join(after)}" if after else ""
197
236
  pinned = f" on {machine}" if machine else ""
198
237
  gate = ""
199
238
  if hold_after:
200
239
  gate = " · holds the queue when done"
240
+ if hold_scope == HOLD_SCOPE_FLEET:
241
+ gate += " (fleet-wide — nothing anywhere launches)"
201
242
  if resume_when:
202
243
  gate += f" (auto-resume when `{resume_when}` passes)"
203
- click.echo(f"queued {entry_key(repo, issue)}{pinned}{suffix}{gate}")
244
+ click.echo(f"queued {entry_key(repo, issue)}{pinned}{suffix}{gate}{scope_downgrade_warning}")
204
245
 
205
246
 
206
- def validate_hold_flags(hold_after: bool, hold_reason: str, resume_when: str) -> None:
207
- """Refuse gate detail without a gate (#1757).
208
-
209
- `--resume-when` / `--hold-reason` on an entry with no `--hold-after` would
210
- be stored and then never read — a silent no-op on the ONE flag whose whole
211
- job is to stop the queue. An operator who mistyped that has no signal at
212
- all that overnight sequencing will now blow straight through the deploy
213
- step, so this is a usage error, not a warning.
247
+ def validate_hold_flags(
248
+ hold_after: bool,
249
+ hold_reason: str,
250
+ resume_when: str,
251
+ hold_scope: str = HOLD_SCOPE_ENTRY,
252
+ ) -> None:
253
+ """Refuse gate detail without a gate (#1757, extended by #2186).
254
+
255
+ `--resume-when` / `--hold-reason` / a non-default `--scope` on an entry
256
+ with no `--hold-after` would be stored and then never read — a silent
257
+ no-op on the ONE flag whose whole job is to stop the queue (or narrow
258
+ what it stops). An operator who mistyped that has no signal at all that
259
+ overnight sequencing will now blow straight through the deploy step, so
260
+ this is a usage error, not a warning.
214
261
  """
215
262
  if hold_after:
216
263
  return
217
264
  offenders = [
218
265
  flag
219
- for flag, value in (("--resume-when", resume_when), ("--hold-reason", hold_reason))
266
+ for flag, value in (
267
+ ("--resume-when", resume_when),
268
+ ("--hold-reason", hold_reason),
269
+ )
220
270
  if value
221
271
  ]
272
+ if hold_scope == HOLD_SCOPE_FLEET:
273
+ offenders.append("--scope=fleet")
222
274
  if offenders:
223
275
  raise QueueError(
224
276
  f"{' and '.join(offenders)} require --hold-after "
225
- "(without it there is no gate to resume or explain)"
277
+ "(without it there is no gate to resume, explain, or scope)"
226
278
  )
227
279
 
228
280
 
@@ -277,6 +329,8 @@ def drive_queue_list(repo: str | None, output_json: bool, config_path: Path) ->
277
329
  bits.append(f"deferrals={entry.deferrals}")
278
330
  if entry.hold_after:
279
331
  bits.append(f"hold={entry.hold_state or 'armed'}")
332
+ if entry.hold_scope == HOLD_SCOPE_FLEET:
333
+ bits.append("scope=fleet")
280
334
  click.echo(" ".join(bits))
281
335
  if entry.last_reason:
282
336
  click.echo(f" last{_reason_age_suffix(entry, now)}: {entry.last_reason}")
@@ -325,7 +379,12 @@ def _hold_lines(entry: QueueEntry) -> list[str]:
325
379
  """
326
380
  if not entry.hold_after:
327
381
  return []
328
- lines = [f" hold-after: {entry.gate_reason}"]
382
+ scope_suffix = (
383
+ " [fleet-wide — holds everything, not just this entry's dependents]"
384
+ if entry.hold_scope == HOLD_SCOPE_FLEET
385
+ else ""
386
+ )
387
+ lines = [f" hold-after: {entry.gate_reason}{scope_suffix}"]
329
388
  if entry.resume_when:
330
389
  probe = f" resume-when: {entry.resume_when}"
331
390
  if entry.hold_probes:
@@ -416,6 +475,10 @@ def drive_queue_status(output_json: bool, config_path: Path) -> None:
416
475
  "reason": e.gate_reason,
417
476
  "resume_when": e.resume_when,
418
477
  "probes": e.hold_probes,
478
+ # #2186: typed, so a client reads what this gate
479
+ # holds without parsing the `[fleet-wide ...]`
480
+ # suffix back out of the rendered text.
481
+ "scope": e.hold_scope,
419
482
  }
420
483
  for e in held
421
484
  ],
@@ -401,6 +401,13 @@ def _ensure_schema(conn: sqlite3.Connection) -> None:
401
401
  hold_state TEXT NOT NULL DEFAULT '',
402
402
  hold_probes INTEGER NOT NULL DEFAULT 0,
403
403
  launch_host TEXT NOT NULL DEFAULT '',
404
+ -- #2186: how far a FIRED gate reaches. 'entry' (the default) holds
405
+ -- only entries whose own after_json names this row's key; 'fleet'
406
+ -- is the pre-#2186 whole-queue stop, kept for an explicit
407
+ -- --scope=fleet. NOT NULL DEFAULT 'entry' so a row written before
408
+ -- this column existed reads as the narrower scope, never a silent
409
+ -- fleet-wide one — see coord.drive_queue.QueueEntry.hold_scope.
410
+ hold_scope TEXT NOT NULL DEFAULT 'entry',
404
411
  UNIQUE(repo_name, issue_number)
405
412
  );
406
413
 
@@ -717,6 +724,13 @@ def _migrate_add_columns(conn: sqlite3.Connection) -> None:
717
724
  # carries its age instead of rendering a stale snapshot as current
718
725
  # state. NULL for every row predating this migration.
719
726
  "ALTER TABLE drive_queue ADD COLUMN reason_at REAL",
727
+ # #2186: deploy-gate SCOPE — see the CREATE TABLE comment above and
728
+ # coord/drive_queue.py's HOLD_SCOPE_ENTRY/HOLD_SCOPE_FLEET. Every row
729
+ # predating this migration (and every armed-but-not-yet-fired gate)
730
+ # defaults to 'entry', the narrower reading — a fired gate on such a
731
+ # row holds only its own dependents rather than the whole queue, which
732
+ # is the #2186 fix itself, not just a schema detail.
733
+ "ALTER TABLE drive_queue ADD COLUMN hold_scope TEXT NOT NULL DEFAULT 'entry'",
720
734
  ]
721
735
  for sql in migrations:
722
736
  try: