code-coordinator 0.5.108__tar.gz → 0.5.110__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 (844) hide show
  1. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/.github/workflows/test.yml +39 -33
  2. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/CLAUDE.md +1 -1
  3. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/PKG-INFO +9 -9
  4. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/README.md +8 -8
  5. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/code_coordinator.egg-info/PKG-INFO +9 -9
  6. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/code_coordinator.egg-info/SOURCES.txt +1 -0
  7. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/code_coordinator.egg-info/scm_file_list.json +1 -0
  8. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/code_coordinator.egg-info/scm_version.json +2 -2
  9. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/agent.py +14 -0
  10. {code_coordinator-0.5.108 → code_coordinator-0.5.110/coord}/deploy/coord-db-backup.service +1 -1
  11. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/coord-drive-queue.service +1 -1
  12. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/coord-serve.service +2 -2
  13. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/coord-web-dist-build.service +1 -1
  14. {code_coordinator-0.5.108/coord → code_coordinator-0.5.110}/deploy/coord-db-backup.service +1 -1
  15. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-drive-queue.service +1 -1
  16. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-serve.service +2 -2
  17. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-web-dist-build.service +1 -1
  18. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-web-dist-build.sh +2 -2
  19. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/AGENT_OPERATIONS.md +10 -10
  20. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/ARCHITECTURE.md +2 -2
  21. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/CROSS_PLATFORM.md +1 -1
  22. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/CUSTOMER_PORTAL.md +2 -2
  23. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/DRIVE_QUEUE.md +3 -3
  24. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/FORGE_MIGRATION.md +1 -1
  25. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/ISSUE_GUIDANCE.md +1 -1
  26. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/MAC_MINI.md +2 -2
  27. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +1 -1
  28. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/OPERATING_GOTCHAS.md +2 -2
  29. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/PHONE_WEBAPP.md +2 -2
  30. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/PLATFORM_EVOLUTION.md +1 -1
  31. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/TEST_FIRST_BUG_LANE.md +3 -3
  32. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/azure-workers/epic-up.sh +1 -1
  33. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/azure-workers/provision-worker.sh +5 -5
  34. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/azure-workers/scrub-and-generalize.sh +1 -1
  35. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/azure-workers/verify-github-token.sh +3 -3
  36. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/smoke_437_interactive.py +1 -1
  37. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent.py +105 -0
  38. code_coordinator-0.5.110/tests/test_windows_job_is_a_real_gate_2000.py +131 -0
  39. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/.claude/commands/board.md +0 -0
  40. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/.claude/commands/complete-session.md +0 -0
  41. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/.claude/commands/coordinator.md +0 -0
  42. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/.githooks/_lib.sh +0 -0
  43. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/.githooks/post-checkout +0 -0
  44. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/.githooks/post-commit +0 -0
  45. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/.githooks/post-merge +0 -0
  46. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  47. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/.github/coord-ci-acceptance.yml +0 -0
  48. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/.github/workflows/auto-release.yml +0 -0
  49. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/.github/workflows/cargo-test.yml +0 -0
  50. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/.github/workflows/publish.yml +0 -0
  51. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/.github/workflows/release-tui.yml +0 -0
  52. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/.gitignore +0 -0
  53. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/GOAL.md +0 -0
  54. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/LICENSE +0 -0
  55. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/MANIFEST.in +0 -0
  56. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/code_coordinator.egg-info/dependency_links.txt +0 -0
  57. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/code_coordinator.egg-info/entry_points.txt +0 -0
  58. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/code_coordinator.egg-info/requires.txt +0 -0
  59. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/code_coordinator.egg-info/top_level.txt +0 -0
  60. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/__init__.py +0 -0
  61. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/_board_mapping.py +0 -0
  62. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/acceptance.py +0 -0
  63. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/acceptance_drivers.py +0 -0
  64. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/agent_app.py +0 -0
  65. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/agent_update.py +0 -0
  66. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/agents/opencode/.gitignore +0 -0
  67. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/agents/opencode/agents/work.md +0 -0
  68. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/agents/opencode/routing.jsonc +0 -0
  69. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/audit.py +0 -0
  70. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/auto_loop.py +0 -0
  71. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/block_log.py +0 -0
  72. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/board_bool_guard.py +0 -0
  73. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/board_service.py +0 -0
  74. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/board_wire.py +0 -0
  75. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/brain.py +0 -0
  76. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/branch_model.py +0 -0
  77. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/bug_intake.py +0 -0
  78. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/cargo_cache.py +0 -0
  79. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/ci_github.py +0 -0
  80. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/ci_store.py +0 -0
  81. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/claim.py +0 -0
  82. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/cli.py +0 -0
  83. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/client.py +0 -0
  84. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/__init__.py +0 -0
  85. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/_common.py +0 -0
  86. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/acceptance.py +0 -0
  87. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/agent_ops.py +0 -0
  88. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/audit.py +0 -0
  89. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/chat.py +0 -0
  90. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/dispatch.py +0 -0
  91. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/dispatch_workers.py +0 -0
  92. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/drive.py +0 -0
  93. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/drive_queue.py +0 -0
  94. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/gate_a.py +0 -0
  95. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/gates.py +0 -0
  96. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/issues.py +0 -0
  97. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/lifecycle.py +0 -0
  98. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/merge.py +0 -0
  99. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/milestone.py +0 -0
  100. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/plan_followup.py +0 -0
  101. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/plans.py +0 -0
  102. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/portal.py +0 -0
  103. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/release.py +0 -0
  104. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/repo.py +0 -0
  105. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/report.py +0 -0
  106. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/review.py +0 -0
  107. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/scorecard.py +0 -0
  108. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/sessions.py +0 -0
  109. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/setup.py +0 -0
  110. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/status.py +0 -0
  111. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/terminal.py +0 -0
  112. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/test_gate.py +0 -0
  113. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/commands/tui.py +0 -0
  114. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/comments.py +0 -0
  115. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/config.py +0 -0
  116. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/config_reload.py +0 -0
  117. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/conflict_fix.py +0 -0
  118. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dao.py +0 -0
  119. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/__init__.py +0 -0
  120. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/fixture.py +0 -0
  121. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/index.html +0 -0
  122. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/server.py +0 -0
  123. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/terminal.py +0 -0
  124. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/.gitignore +0 -0
  125. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/components.json +0 -0
  126. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/dist/assets/Gallery-Cq84itDE.js +0 -0
  127. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  128. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/dist/assets/Terminal-DOXLcMue.js +0 -0
  129. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/dist/assets/index-DHn-RIJ8.js +0 -0
  130. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  131. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  132. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  133. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  134. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  135. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/dist/index.html +0 -0
  136. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  137. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/dist/sw.js +0 -0
  138. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  139. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  140. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  141. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  142. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  143. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  144. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  145. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  146. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  147. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  148. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/eslint.config.js +0 -0
  149. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/index.html +0 -0
  150. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  151. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/package-lock.json +0 -0
  152. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/package.json +0 -0
  153. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  154. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/playwright.config.ts +0 -0
  155. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/postcss.config.js +0 -0
  156. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  157. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  158. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  159. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/App.tsx +0 -0
  160. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/api/client.ts +0 -0
  161. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  162. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  163. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  164. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  165. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  166. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  167. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  168. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  169. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  170. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  171. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  172. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  173. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  174. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  175. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  176. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  177. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  178. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  179. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  180. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  181. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  182. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  183. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  184. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  185. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  186. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  187. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  188. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  189. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  190. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  191. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  192. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  193. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  194. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  195. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  196. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/index.css +0 -0
  197. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  198. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  199. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/main.tsx +0 -0
  200. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  201. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  202. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  203. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  204. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  205. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  206. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  207. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  208. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  209. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  210. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  211. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  212. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  213. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  214. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  215. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  216. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  217. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  218. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  219. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  220. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  221. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  222. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  223. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/tailwind.config.js +0 -0
  224. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/tsconfig.json +0 -0
  225. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  226. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dashboard/webapp/vite.config.ts +0 -0
  227. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/db.py +0 -0
  228. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dead_end.py +0 -0
  229. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/README.md +0 -0
  230. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/coord-agent.service +0 -0
  231. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/coord-db-backup.sh +0 -0
  232. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/coord-db-backup.timer +0 -0
  233. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/coord-drive-queue.timer +0 -0
  234. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/coord-notify.service +0 -0
  235. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/coord-notify.timer +0 -0
  236. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/coord-release-propagate.service +0 -0
  237. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/coord-release-propagate.timer +0 -0
  238. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/coord-release-window.service +0 -0
  239. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/coord-release-window.timer +0 -0
  240. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/coord-web-dist-build.timer +0 -0
  241. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy/coord-web.service +0 -0
  242. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy_manifest.py +0 -0
  243. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deploy_units.py +0 -0
  244. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/deps.py +0 -0
  245. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/diagnose.py +0 -0
  246. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dispatch.py +0 -0
  247. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/dist_name.py +0 -0
  248. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/drive.py +0 -0
  249. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/drive_queue.py +0 -0
  250. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/drive_state.py +0 -0
  251. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/events.py +0 -0
  252. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/failure_class.py +0 -0
  253. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/filelock.py +0 -0
  254. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/fleet_config_health.py +0 -0
  255. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/freshness.py +0 -0
  256. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/gate_a.py +0 -0
  257. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/gate_b.py +0 -0
  258. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/gate_snapshot.py +0 -0
  259. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/gates.py +0 -0
  260. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/github_ops.py +0 -0
  261. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/goal.py +0 -0
  262. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/graph_health.py +0 -0
  263. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/__init__.py +0 -0
  264. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/aggregate.py +0 -0
  265. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/__init__.py +0 -0
  266. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/agent_install.py +0 -0
  267. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/cargo_targets.py +0 -0
  268. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/claude_binary.py +0 -0
  269. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/deploy_lane_facts.py +0 -0
  270. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/disk.py +0 -0
  271. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/fleet_board.py +0 -0
  272. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  273. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/fleet_phantom.py +0 -0
  274. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/fleet_unit_drift.py +0 -0
  275. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/graph.py +0 -0
  276. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/graphify_cli.py +0 -0
  277. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/index_lock.py +0 -0
  278. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/plan_usage.py +0 -0
  279. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/repo_state.py +0 -0
  280. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/spawned_coord.py +0 -0
  281. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/timer_active.py +0 -0
  282. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/toolchain.py +0 -0
  283. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/unit_drift.py +0 -0
  284. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/unit_enablement.py +0 -0
  285. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/checks/worktrees.py +0 -0
  286. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/cli.py +0 -0
  287. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/context.py +0 -0
  288. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/fleet_snapshot.py +0 -0
  289. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/models.py +0 -0
  290. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/pypi.py +0 -0
  291. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/registry.py +0 -0
  292. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/render.py +0 -0
  293. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/health/units.py +0 -0
  294. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/hooks.py +0 -0
  295. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/housekeeping.py +0 -0
  296. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/interactive.py +0 -0
  297. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/issue_store.py +0 -0
  298. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/liveness_auditor.py +0 -0
  299. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/machine_pause.py +0 -0
  300. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/merge_queue.py +0 -0
  301. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/milestone_chat.py +0 -0
  302. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/milestone_dispatch.py +0 -0
  303. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/milestone_gate.py +0 -0
  304. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/milestone_order.py +0 -0
  305. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/mock_author.py +0 -0
  306. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/models.py +0 -0
  307. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/network.py +0 -0
  308. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/new_issue_chat.py +0 -0
  309. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/notifier/__init__.py +0 -0
  310. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/notifier/baseline.py +0 -0
  311. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/notifier/cli.py +0 -0
  312. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/notifier/collect.py +0 -0
  313. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/notifier/digest.py +0 -0
  314. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/notifier/models.py +0 -0
  315. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/notifier/predicate.py +0 -0
  316. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/notifier/service.py +0 -0
  317. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/notifier/store.py +0 -0
  318. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/notifier/transport.py +0 -0
  319. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/notify.py +0 -0
  320. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/openapi.py +0 -0
  321. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/overlap_fence.py +0 -0
  322. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/overlap_predict.py +0 -0
  323. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/parentage.py +0 -0
  324. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/parentage_github.py +0 -0
  325. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/pipeline.py +0 -0
  326. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/plan_parser.py +0 -0
  327. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/plans.py +0 -0
  328. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/platform_paths.py +0 -0
  329. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/portal_bridge.py +0 -0
  330. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/portal_store.py +0 -0
  331. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/portal_sync.py +0 -0
  332. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/pr_body_lint.py +0 -0
  333. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/prereqs.py +0 -0
  334. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/progress.py +0 -0
  335. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/providers/__init__.py +0 -0
  336. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/providers/base.py +0 -0
  337. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/providers/claude.py +0 -0
  338. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/providers/claude_pty.py +0 -0
  339. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/providers/opencode.py +0 -0
  340. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/queue_diagnose.py +0 -0
  341. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/reconcile.py +0 -0
  342. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/refine_chat.py +0 -0
  343. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/release_cordon.py +0 -0
  344. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/release_propagate.py +0 -0
  345. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/release_verify.py +0 -0
  346. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/release_window.py +0 -0
  347. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/repo_edit.py +0 -0
  348. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/repo_onboard.py +0 -0
  349. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/reports.py +0 -0
  350. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/revalidate.py +0 -0
  351. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/review.py +0 -0
  352. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/scorecard.py +0 -0
  353. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/serve_app.py +0 -0
  354. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/skills/update-issue/SKILL.md +0 -0
  355. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/smoke.py +0 -0
  356. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/spend_ceiling.py +0 -0
  357. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/split_work.py +0 -0
  358. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/stage_projection.py +0 -0
  359. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/state.py +0 -0
  360. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/test_author.py +0 -0
  361. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/test_chat.py +0 -0
  362. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/test_orchestrator.py +0 -0
  363. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/test_report.py +0 -0
  364. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/tui_release.py +0 -0
  365. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/usage.py +0 -0
  366. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/usage_limits.py +0 -0
  367. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/usage_rollup.py +0 -0
  368. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coord/worker_events.py +0 -0
  369. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/coordinator.example.yml +0 -0
  370. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-agent.service +0 -0
  371. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-db-backup.sh +0 -0
  372. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-db-backup.timer +0 -0
  373. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-drive-queue.timer +0 -0
  374. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-notify.service +0 -0
  375. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-notify.timer +0 -0
  376. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-release-propagate.service +0 -0
  377. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-release-propagate.timer +0 -0
  378. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-release-window.service +0 -0
  379. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-release-window.timer +0 -0
  380. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-web-dist-build.timer +0 -0
  381. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-web-rollback.sh +0 -0
  382. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/coord-web.service +0 -0
  383. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/deploy/node-shim.sh +0 -0
  384. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/ARCH_SECURITY_GATES.md +0 -0
  385. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/COCKPIT.md +0 -0
  386. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/CONTROL_CENTER.md +0 -0
  387. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/COST_DISCIPLINE.md +0 -0
  388. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/EPHEMERAL_WORKERS.md +0 -0
  389. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/GRAPHIFY_SETUP.md +0 -0
  390. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/NOTIFIER.md +0 -0
  391. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/OPENCODE_VERIFICATION.md +0 -0
  392. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/ORACLE_LOOP.md +0 -0
  393. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/PIPELINE_V2.md +0 -0
  394. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/SECOND_BACKEND.md +0 -0
  395. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/STORE_SERVICE.md +0 -0
  396. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/WEB_CONTROL_CENTER.md +0 -0
  397. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/mocks/web/README.md +0 -0
  398. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/mocks/web/_tokens.css +0 -0
  399. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/mocks/web/issue-detail.html +0 -0
  400. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/mocks/web/pipeline-narrow.html +0 -0
  401. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/docs/mocks/web/pipeline-wide.html +0 -0
  402. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/graphify-out/.gitignore +0 -0
  403. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/install-agent.sh +0 -0
  404. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/pyproject.toml +0 -0
  405. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/audit_review_verdict_overrides.py +0 -0
  406. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  407. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/azure-workers/build-worker-image.sh +0 -0
  408. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/azure-workers/coordinator-machine.py +0 -0
  409. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/azure-workers/epic-down.sh +0 -0
  410. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/azure-workers/preflight.sh +0 -0
  411. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  412. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/codegen.py +0 -0
  413. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/coord-test-runner.sh +0 -0
  414. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/drive-batch.sh +0 -0
  415. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/gen_board_fixture.py +0 -0
  416. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/next_release_tag.py +0 -0
  417. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/run_tests_in_populated_home.sh +0 -0
  418. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/run_tests_without_gh.sh +0 -0
  419. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/verify_878_review_capture.py +0 -0
  420. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/verify_release_published.py +0 -0
  421. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/scripts/verify_release_wheel.py +0 -0
  422. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/setup.cfg +0 -0
  423. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/SMOKE_SET.md +0 -0
  424. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/__init__.py +0 -0
  425. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  426. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-33/contract.md +0 -0
  427. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-33/manifest.yml +0 -0
  428. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  429. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  430. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  431. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  432. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-37/conftest.py +0 -0
  433. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-37/contract.md +0 -0
  434. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-37/manifest.yml +0 -0
  435. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  436. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  437. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-38/contract.md +0 -0
  438. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-38/manifest.yml +0 -0
  439. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  440. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  441. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  442. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  443. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  444. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  445. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  446. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  447. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  448. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  449. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-51/contract.md +0 -0
  450. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  451. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  452. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-51/manifest.yml +0 -0
  453. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  454. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-51/tsconfig.json +0 -0
  455. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  456. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/conftest.py +0 -0
  457. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/board-pipeline-basic.json +0 -0
  458. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  459. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  460. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  461. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/playwright/all_pass.json +0 -0
  462. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  463. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/playwright/mixed_fail.json +0 -0
  464. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  465. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  466. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/playwright/skip.json +0 -0
  467. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/playwright/truncated.json +0 -0
  468. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  469. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  470. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  471. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  472. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  473. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  474. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  475. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  476. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_acceptance.py +0 -0
  477. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_acceptance_drivers.py +0 -0
  478. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_api_error.py +0 -0
  479. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_app.py +0 -0
  480. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_branch_base.py +0 -0
  481. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_branch_capture.py +0 -0
  482. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_config_free_1712.py +0 -0
  483. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_deploy_units_endpoint.py +0 -0
  484. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_dirty_worktree.py +0 -0
  485. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_graph_self_heal.py +0 -0
  486. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_health_h3.py +0 -0
  487. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_idle_restart.py +0 -0
  488. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_push_failure.py +0 -0
  489. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_reap.py +0 -0
  490. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_repos_and_pull.py +0 -0
  491. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_restart_services_endpoint.py +0 -0
  492. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_startup_diagnostics.py +0 -0
  493. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_update.py +0 -0
  494. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_update_bluegreen.py +0 -0
  495. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_usage_limit.py +0 -0
  496. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_agent_zero_commit.py +0 -0
  497. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_ambient_home_isolation.py +0 -0
  498. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_approve_reject_plan.py +0 -0
  499. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_approve_usage_gate.py +0 -0
  500. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_assignment_already_recorded_daemon.py +0 -0
  501. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_audit_log.py +0 -0
  502. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_audit_outcome.py +0 -0
  503. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_audit_query.py +0 -0
  504. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_auto_loop.py +0 -0
  505. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_auto_release_publish_2035.py +0 -0
  506. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_base_checkout_restore.py +0 -0
  507. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_block_log.py +0 -0
  508. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_board_cap_762.py +0 -0
  509. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_board_fixture.py +0 -0
  510. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_board_read_path.py +0 -0
  511. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_board_service.py +0 -0
  512. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_board_state.py +0 -0
  513. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_board_wire.py +0 -0
  514. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_brain.py +0 -0
  515. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_branch_model.py +0 -0
  516. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_bug_intake.py +0 -0
  517. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_build_worker_image_env_update.py +0 -0
  518. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cargo_cache.py +0 -0
  519. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_ci_acceptance_gate_1950.py +0 -0
  520. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_ci_parity_2091.py +0 -0
  521. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_ci_store.py +0 -0
  522. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_claim.py +0 -0
  523. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_acceptance.py +0 -0
  524. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_assign.py +0 -0
  525. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  526. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_assign_interactive_remote.py +0 -0
  527. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_assign_provider.py +0 -0
  528. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  529. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_audit.py +0 -0
  530. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_chat_continue.py +0 -0
  531. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_diagnose_config_provenance.py +0 -0
  532. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_diagnose_graph.py +0 -0
  533. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_doctor.py +0 -0
  534. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_doctor_config_free_1801.py +0 -0
  535. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  536. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_drive.py +0 -0
  537. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_drive_queue.py +0 -0
  538. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_escalate.py +0 -0
  539. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_fix_headless_review.py +0 -0
  540. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_gate_a.py +0 -0
  541. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_install_drift.py +0 -0
  542. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_install_skills.py +0 -0
  543. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_issue_create_label.py +0 -0
  544. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_issue_reopen.py +0 -0
  545. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_merge.py +0 -0
  546. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_milestone_assign.py +0 -0
  547. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_milestone_capture.py +0 -0
  548. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_milestone_chat_add_child.py +0 -0
  549. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_milestone_dispatch.py +0 -0
  550. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_milestone_gate_b.py +0 -0
  551. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_milestone_gate_c.py +0 -0
  552. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_milestone_order.py +0 -0
  553. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  554. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_milestone_ship.py +0 -0
  555. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_network.py +0 -0
  556. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_new_issue_chat.py +0 -0
  557. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_plans.py +0 -0
  558. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_portal.py +0 -0
  559. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_pull_artifact.py +0 -0
  560. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_queue.py +0 -0
  561. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_reattach_sessions.py +0 -0
  562. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_refine_board.py +0 -0
  563. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_release_preflight.py +0 -0
  564. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_release_propagate.py +0 -0
  565. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_release_window.py +0 -0
  566. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_repo_2220.py +0 -0
  567. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_scorecard.py +0 -0
  568. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_set_review_findings.py +0 -0
  569. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_status_advisory_terminal.py +0 -0
  570. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_status_merge_queue.py +0 -0
  571. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_status_provider.py +0 -0
  572. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_status_review_finalizing.py +0 -0
  573. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_status_test_failed_tag.py +0 -0
  574. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_status_usage_limit.py +0 -0
  575. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_sync_comments_873.py +0 -0
  576. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_test_plan.py +0 -0
  577. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_track.py +0 -0
  578. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_tui_update.py +0 -0
  579. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cli_wait.py +0 -0
  580. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_client_base_install.py +0 -0
  581. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_comments.py +0 -0
  582. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_completion_summary.py +0 -0
  583. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_config.py +0 -0
  584. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_config_acceptance.py +0 -0
  585. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_config_audit.py +0 -0
  586. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_config_pricing.py +0 -0
  587. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  588. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_config_usage_gate.py +0 -0
  589. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_conflict_fix.py +0 -0
  590. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_conflict_fix_semantic.py +0 -0
  591. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_coord_test.py +0 -0
  592. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_coord_test_runner_baseline.py +0 -0
  593. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_coord_test_runner_routing.py +0 -0
  594. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_coord_test_runner_toolchain.py +0 -0
  595. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_coord_web_sse_restart_live.py +0 -0
  596. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_coordinator_machine.py +0 -0
  597. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_cross_platform_imports.py +0 -0
  598. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_dashboard.py +0 -0
  599. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_dashboard_fixture.py +0 -0
  600. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_dashboard_terminal.py +0 -0
  601. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_dashboard_terminal_live.py +0 -0
  602. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_db.py +0 -0
  603. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_dead_end.py +0 -0
  604. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_deploy_coord_db_backup.py +0 -0
  605. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_deploy_coord_web_dist.py +0 -0
  606. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_deploy_coord_web_rollback.py +0 -0
  607. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_deploy_drive_queue_unit.py +0 -0
  608. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_deploy_manifest.py +0 -0
  609. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_deploy_units_lane.py +0 -0
  610. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_deploy_web_unit.py +0 -0
  611. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_deps.py +0 -0
  612. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_diagnose.py +0 -0
  613. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_dispatch.py +0 -0
  614. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_dispatch_target_validation.py +0 -0
  615. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_dist_name.py +0 -0
  616. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_done_housekeeping.py +0 -0
  617. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_drive.py +0 -0
  618. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_drive_queue.py +0 -0
  619. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_drive_state.py +0 -0
  620. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_drive_tmux.py +0 -0
  621. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_epic_up_capability_detection.py +0 -0
  622. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  623. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_epic_up_image_provenance.py +0 -0
  624. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_errors.py +0 -0
  625. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_events.py +0 -0
  626. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_failure_class.py +0 -0
  627. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_filelock.py +0 -0
  628. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  629. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_fix_of_force_override.py +0 -0
  630. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_fleet_config_health.py +0 -0
  631. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_fleet_health_probes.py +0 -0
  632. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_fleet_health_snapshot.py +0 -0
  633. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_freshness.py +0 -0
  634. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_gate_a.py +0 -0
  635. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_gate_b.py +0 -0
  636. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_gate_snapshot_staleness.py +0 -0
  637. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_gates.py +0 -0
  638. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  639. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_generated_types_fixture.py +0 -0
  640. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_github_ops.py +0 -0
  641. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_goal.py +0 -0
  642. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_graph_health.py +0 -0
  643. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_graph_selfheal_absent_2237.py +0 -0
  644. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_handoff.py +0 -0
  645. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_health_checks.py +0 -0
  646. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_health_cli.py +0 -0
  647. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_health_cli_graph.py +0 -0
  648. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_health_config.py +0 -0
  649. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_health_context.py +0 -0
  650. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_health_deploy_lane_facts.py +0 -0
  651. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_health_incident_regression.py +0 -0
  652. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_health_pypi.py +0 -0
  653. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_health_registry.py +0 -0
  654. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_health_timer_active.py +0 -0
  655. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_health_toolchain.py +0 -0
  656. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_health_unit_drift.py +0 -0
  657. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_health_unit_enablement.py +0 -0
  658. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_hooks.py +0 -0
  659. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_human_attended_437.py +0 -0
  660. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_init.py +0 -0
  661. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_integration.py +0 -0
  662. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_interactive_briefing_echo.py +0 -0
  663. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_interactive_prefill_state.py +0 -0
  664. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_interactive_session_relaunch.py +0 -0
  665. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_interactive_test_verdict_backstop.py +0 -0
  666. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_interactive_token_attribution.py +0 -0
  667. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_interactive_worktree.py +0 -0
  668. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_issue_store_seam.py +0 -0
  669. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_liveness_auditor.py +0 -0
  670. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_liveness_notify.py +0 -0
  671. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_machine_pause.py +0 -0
  672. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_merge_queue.py +0 -0
  673. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_merge_verify.py +0 -0
  674. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_milestone_chat.py +0 -0
  675. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_milestone_dispatch.py +0 -0
  676. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_milestone_gate.py +0 -0
  677. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_milestone_order.py +0 -0
  678. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_milestone_seam.py +0 -0
  679. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_mock_author.py +0 -0
  680. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_model_tiering.py +0 -0
  681. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_models.py +0 -0
  682. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_models_config_labels.py +0 -0
  683. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_needs_attention.py +0 -0
  684. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_network.py +0 -0
  685. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_new_issue_chat.py +0 -0
  686. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_next_release_tag.py +0 -0
  687. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_no_direct_gh_calls.py +0 -0
  688. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_node_shim.py +0 -0
  689. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_notifier_baseline.py +0 -0
  690. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_notifier_cli.py +0 -0
  691. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_notifier_collect.py +0 -0
  692. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_notifier_config.py +0 -0
  693. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_notifier_drive_seam.py +0 -0
  694. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_notifier_isolation.py +0 -0
  695. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_notifier_predicate.py +0 -0
  696. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_notifier_quiet_hours.py +0 -0
  697. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_notifier_service.py +0 -0
  698. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_notify.py +0 -0
  699. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_notify_drain.py +0 -0
  700. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_openapi.py +0 -0
  701. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_operational_defaults.py +0 -0
  702. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_overlap_fence.py +0 -0
  703. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_overlap_predict.py +0 -0
  704. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_packaged_deploy_units.py +0 -0
  705. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_parentage.py +0 -0
  706. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_paste_landed.py +0 -0
  707. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_pipeline.py +0 -0
  708. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_plan_followup_approve_plan_command.py +0 -0
  709. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_plan_followup_pr_command.py +0 -0
  710. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_plan_followup_review_command.py +0 -0
  711. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_plan_only.py +0 -0
  712. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_plan_parser.py +0 -0
  713. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_platform_paths.py +0 -0
  714. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_portal_bridge.py +0 -0
  715. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_portal_config.py +0 -0
  716. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_portal_sync.py +0 -0
  717. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_pr_body_lint.py +0 -0
  718. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_prereqs.py +0 -0
  719. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_production_db_guard.py +0 -0
  720. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_progress.py +0 -0
  721. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_provider_seam.py +0 -0
  722. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_providers.py +0 -0
  723. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_providers_config_labels.py +0 -0
  724. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_providers_pty.py +0 -0
  725. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_quiet_hours.py +0 -0
  726. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_quiet_hours_store_2146.py +0 -0
  727. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_reap_merged_sessions.py +0 -0
  728. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_reap_stale_interactive_tick.py +0 -0
  729. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_reconcile_branch.py +0 -0
  730. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_reconcile_completions.py +0 -0
  731. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_reconcile_merges.py +0 -0
  732. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_reconcile_no_agent_record.py +0 -0
  733. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_reconcile_usage_limit_done.py +0 -0
  734. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_refine_chat.py +0 -0
  735. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_release_cordon_2101.py +0 -0
  736. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  737. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_release_cordon_deadlock_2240.py +0 -0
  738. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_release_propagate.py +0 -0
  739. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_release_unified_1242.py +0 -0
  740. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_release_verify.py +0 -0
  741. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_release_window.py +0 -0
  742. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_remote_auto_prune.py +0 -0
  743. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_remote_interactive_reaper.py +0 -0
  744. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_repo_edit_2220.py +0 -0
  745. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_repo_graph_fleet_2237.py +0 -0
  746. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_repo_onboard_2220.py +0 -0
  747. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_report_result_push.py +0 -0
  748. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_reports.py +0 -0
  749. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_retry.py +0 -0
  750. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_retry_advisory_1606.py +0 -0
  751. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_retry_type_1636.py +0 -0
  752. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_revalidate.py +0 -0
  753. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_review.py +0 -0
  754. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_review_end_review_without_verdict.py +0 -0
  755. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_review_parse_failure_diagnostic.py +0 -0
  756. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_review_reaffirm.py +0 -0
  757. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_review_state.py +0 -0
  758. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_review_verdict_backstop.py +0 -0
  759. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_review_verdict_override_audit.py +0 -0
  760. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_review_verdict_relay.py +0 -0
  761. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_review_zero_commits.py +0 -0
  762. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_scoped_review_wiring.py +0 -0
  763. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_scorecard.py +0 -0
  764. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_serve.py +0 -0
  765. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_serve_app_board_trim.py +0 -0
  766. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_session.py +0 -0
  767. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_slice_issue_attribution.py +0 -0
  768. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_smoke.py +0 -0
  769. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_smoke_live_checkout_restore.py +0 -0
  770. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_smoke_workflow.py +0 -0
  771. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_spend_ceiling.py +0 -0
  772. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_spend_ceiling_coordinator.py +0 -0
  773. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_split.py +0 -0
  774. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_split_work.py +0 -0
  775. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_stage_projection.py +0 -0
  776. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_stalled_pipeline.py +0 -0
  777. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_state.py +0 -0
  778. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_state_review_findings_daemon.py +0 -0
  779. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_status_fleet_footer.py +0 -0
  780. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_stop_1567.py +0 -0
  781. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_stuck.py +0 -0
  782. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_terminal_command.py +0 -0
  783. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_test_author.py +0 -0
  784. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_test_chat.py +0 -0
  785. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_test_orchestrator.py +0 -0
  786. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_test_report.py +0 -0
  787. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_test_verdict_parsing.py +0 -0
  788. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_test_verdict_transcript_floor.py +0 -0
  789. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_thin_client_board_audit.py +0 -0
  790. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_thin_client_config_load_1080.py +0 -0
  791. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_thin_client_daemon_routing_906.py +0 -0
  792. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_tmux_host.py +0 -0
  793. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_tmux_session.py +0 -0
  794. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_transcript_floor.py +0 -0
  795. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_usage.py +0 -0
  796. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_usage_limits.py +0 -0
  797. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_usage_rollup.py +0 -0
  798. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_venv_live_install_2121.py +0 -0
  799. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_version_single_source.py +0 -0
  800. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_watch.py +0 -0
  801. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_worker_events.py +0 -0
  802. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_worker_image_pin_sync.py +0 -0
  803. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_worker_safety.py +0 -0
  804. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_worker_test_scoping.py +0 -0
  805. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_worktree.py +0 -0
  806. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  807. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/Cargo.lock +0 -0
  808. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/Cargo.toml +0 -0
  809. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/cargo-config-local-quadraui.toml.example +0 -0
  810. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/audit.rs +0 -0
  811. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/chat.rs +0 -0
  812. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/data.rs +0 -0
  813. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/dialogs.rs +0 -0
  814. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/drive.rs +0 -0
  815. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/drive_queue.rs +0 -0
  816. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/escalation.rs +0 -0
  817. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/events.rs +0 -0
  818. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/fixtures.rs +0 -0
  819. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/fleet_health.rs +0 -0
  820. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/fleet_sessions.rs +0 -0
  821. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/fleet_terminals.rs +0 -0
  822. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/format.rs +0 -0
  823. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/milestone_dag.rs +0 -0
  824. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/mod.rs +0 -0
  825. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/msv.rs +0 -0
  826. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/pipeline.rs +0 -0
  827. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/plans.rs +0 -0
  828. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/render.rs +0 -0
  829. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/reports.rs +0 -0
  830. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/sessions.rs +0 -0
  831. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/settings_ui.rs +0 -0
  832. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/sidebar.rs +0 -0
  833. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/terminal.rs +0 -0
  834. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/tests.rs +0 -0
  835. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/types.rs +0 -0
  836. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/app/workspace.rs +0 -0
  837. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/bin/gtk.rs +0 -0
  838. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/commands.rs +0 -0
  839. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/lib.rs +0 -0
  840. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/main.rs +0 -0
  841. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/src/settings.rs +0 -0
  842. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/tests/acceptance.rs +0 -0
  843. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/tests/cli.rs +0 -0
  844. {code_coordinator-0.5.108 → code_coordinator-0.5.110}/tui/tests/fixtures/board_sample.json +0 -0
@@ -56,35 +56,44 @@ jobs:
56
56
  # 2026-08-08 stall (`parked — CI running: windows`): each drive parked on it
57
57
  # and handed off, which is how five PRs piled up unmerged.
58
58
  #
59
- # What that latency bought per-PR was ~nothing. The job is deliberately red
60
- # and non-blocking (see below), so nothing gates on its result; its output
61
- # is one number (`368 failed, ...`) that only moves when someone works on
62
- # #1156. Running it per-merge keeps that baseline just as current.
59
+ # What that latency bought per-PR was ~nothing while the job was red by
60
+ # design; running it per-merge keeps the baseline just as current. Now that
61
+ # it is a real gate (below), per-PR coverage is worth revisiting and the
62
+ # right move there is probably to keep it per-PR but shrink it to the import
63
+ # smoke #1895's own title describes, rather than the full suite.
63
64
  #
64
- # REVISIT WHEN #1156 LANDS. Once the suite is genuinely green and blocking,
65
- # per-PR coverage is worth its duration again — and at that point the right
66
- # move is probably to keep it per-PR but shrink it to the import smoke
67
- # #1895's own title describes, rather than the full suite.
65
+ # NO `continue-on-error` THIS IS A REAL GATE NOW (#2000).
68
66
  #
69
- # This job is EXPECTED TO BE RED when it lands: `coord.cli` cannot import
70
- # on Windows today (`cli.py` -> `coord/interactive.py`'s unconditional
71
- # `import fcntl`, a POSIX-only stdlib module). #1156 (CP-1, the import
72
- # guards) is what makes this suite green — and #1156 is the one that
73
- # removes the `continue-on-error` below. Until then this is a
74
- # visible-but-non-blocking signal, not a real gate.
67
+ # History: when #1895 landed this job this was EXPECTED TO BE RED, because
68
+ # `coord.cli` could not import on Windows (`cli.py` -> `coord/interactive.py`
69
+ # unconditionally `import fcntl`, a POSIX-only stdlib module), so both steps
70
+ # carried `continue-on-error: true` and the job was a visible-but-
71
+ # non-blocking signal. Two things closed that out:
75
72
  #
76
- # `continue-on-error` MUST stay on the *step*, not the job (#2026).
77
- # At job level it only softens the *workflow run* conclusion; the `windows`
78
- # **check** still reports `failure` to the Checks API. GitHub's own branch
79
- # protection tolerates that, but `coord merge`'s CI gate does not —
80
- # `coord.ci_store._PASSING_CONCLUSIONS` is {success, skipped, neutral} with
81
- # no notion of a non-blocking check, so a job-level flag left every
82
- # claude-coordinator PR unmergeable and stalled the drive queue overnight
83
- # on 2026-08-08 (four finished PRs, everything else green). At step level
84
- # the step's failure is recorded but the job exits 0, so the check is
85
- # `success` and #1895's actual acceptance criterion — "it does not block
86
- # merges while red" finally holds. The failures stay fully visible in the
87
- # job log; that log IS the #1156 specification and the pass/fail baseline.
73
+ # 1. #1156 (CP-1) landed the import guards, killing the `fcntl` failure.
74
+ # 2. #2000 put `tzdata; sys_platform == 'win32'` in the BASE `[project]
75
+ # dependencies` (NOT a CI-only `pip install`) Windows ships no IANA
76
+ # time-zone database, so `zoneinfo` could not resolve `America/Chicago`
77
+ # and the suite died during *collection*. coord/config.py,
78
+ # coord/models.py, coord/failure_class.py and coord/machine_pause.py all
79
+ # resolve named zones at runtime, so that was a shipped defect for every
80
+ # `pip install code-coordinator` Windows user, not a test artefact.
81
+ # tests/test_client_base_install.py pins it in the base deps.
82
+ #
83
+ # With both fixed the flags are gone and a Windows failure reddens this job
84
+ # for real. tests/test_windows_job_is_a_real_gate_2000.py is the regression
85
+ # guard against them creeping back.
86
+ #
87
+ # Why re-arming this cannot re-block the repo: `if: github.event_name ==
88
+ # 'push'` (below) means the job is SKIPPED on every `pull_request` event, and
89
+ # `skipped` is already in `coord.ci_store._PASSING_CONCLUSIONS` — so a red
90
+ # Windows run shows up on main, never on a PR's merge gate. That guard is
91
+ # what makes removing `continue-on-error` safe; it did not exist during the
92
+ # 2026-08-08 stall, when a *job-level* flag (#2026) left every
93
+ # claude-coordinator PR unmergeable overnight because the `windows` **check**
94
+ # still reported `failure` to the Checks API even though the workflow run's
95
+ # conclusion was softened. If this job is ever made per-PR again, that
96
+ # interaction is the thing to re-check first.
88
97
  #
89
98
  # Python 3.12 only, deliberately not the 3.12/3.13 matrix `test` runs above
90
99
  # — the matrix axis there is Python versions on Linux; this job's axis is
@@ -102,18 +111,15 @@ jobs:
102
111
  - uses: actions/setup-python@v5
103
112
  with:
104
113
  python-version: "3.12"
105
- # Both steps carry the flag, not just pytest: a Windows-only *install*
106
- # failure would otherwise redden the job and re-block the whole repo
107
- # exactly as a test failure did. Until #1156, this job's contract is
108
- # "always report, never block" and a failed install is every bit as
109
- # visible in the log as a failed test.
114
+ # #2000: no `continue-on-error` on either step any more a Windows-only
115
+ # install failure (a base dep that does not resolve on win32, say) is
116
+ # exactly as much of a real defect as a test failure, and this job now
117
+ # exists to fail on it. See the header for why re-arming it is safe.
110
118
  - run: pip install -e ".[dev]"
111
- continue-on-error: true
112
119
  # #2180: same split as the `test` job above — the sealed acceptance
113
120
  # suite is gated separately through the #2164 CI wrapper, not swept
114
121
  # into this job's ordinary pytest run.
115
122
  - run: pytest --ignore=tests/acceptance
116
- continue-on-error: true
117
123
 
118
124
  # #1484: run the full suite with `gh` made unresolvable on PATH.
119
125
  #
@@ -1,4 +1,4 @@
1
- # claude-coordinator
1
+ # code-coordinator
2
2
 
3
3
  CLI tool + per-machine agent server that coordinates Claude Code workers across multiple machines and repos over Tailscale.
4
4
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.108
3
+ Version: 0.5.110
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
@@ -38,11 +38,11 @@ Requires-Dist: setuptools-scm>=8; extra == "dev"
38
38
  Requires-Dist: wheel; extra == "dev"
39
39
  Dynamic: license-file
40
40
 
41
- # claude-coordinator
41
+ # code-coordinator
42
42
 
43
43
  Coordinate a fleet of Claude Code workers — and human-attended interactive `claude` sessions — from a single board.
44
44
 
45
- Claude Code is great at one task at a time. Real projects have dozens of issues, spread across repos, that each want their own session, their own scoping, and their own review. `claude-coordinator` runs many workers in parallel — on one machine or across several over Tailscale — behind a coordinator that picks the model, avoids file conflicts, routes by capability, and drives the full **Work → Test → Review → Merge** pipeline. Each stage can run as a cheap `claude -p` worker *or* as a human-attended interactive session you launch and steer from the board.
45
+ Claude Code is great at one task at a time. Real projects have dozens of issues, spread across repos, that each want their own session, their own scoping, and their own review. `code-coordinator` runs many workers in parallel — on one machine or across several over Tailscale — behind a coordinator that picks the model, avoids file conflicts, routes by capability, and drives the full **Work → Test → Review → Merge** pipeline. Each stage can run as a cheap `claude -p` worker *or* as a human-attended interactive session you launch and steer from the board.
46
46
 
47
47
  ## The problem
48
48
 
@@ -110,7 +110,7 @@ Two rules shape the flow:
110
110
  ## Quick demo
111
111
 
112
112
  ```bash
113
- pip install claude-coordinator # from PyPI
113
+ pip install code-coordinator # from PyPI
114
114
  coord init # interactive setup: detects repos, writes coordinator.yml
115
115
  coord agent & # start the agent server (port 7433) — see Quick Start for the systemd setup
116
116
 
@@ -139,7 +139,7 @@ Prefer to drive it by hand? Launch any stage as an interactive session from `coo
139
139
  ### 1. Install
140
140
 
141
141
  ```bash
142
- pip install claude-coordinator
142
+ pip install code-coordinator
143
143
  ```
144
144
 
145
145
  The `coord` CLI is now on your PATH. The same package provides the agent server (`coord agent`), so the coordinator side and the worker side share one install.
@@ -168,7 +168,7 @@ coord agent & # port 7433; auto-detects the machine from hostname
168
168
  For anything beyond a trial, use the installer (systemd user service, auto-restart, survives reboots, separate worker logs):
169
169
 
170
170
  ```bash
171
- curl -sSL https://raw.githubusercontent.com/JDonaghy/claude-coordinator/main/install-agent.sh | bash
171
+ curl -sSL https://raw.githubusercontent.com/JDonaghy/code-coordinator/main/install-agent.sh | bash
172
172
  ```
173
173
 
174
174
  The same script sets up remote worker machines — see [Worker node setup](#worker-node-setup).
@@ -549,7 +549,7 @@ The tool encodes a pattern from real multi-agent sessions: **separate the tech l
549
549
 
550
550
  1. On the new machine, run the installer (venv + systemd service in one shot):
551
551
  ```bash
552
- curl -sSL https://raw.githubusercontent.com/JDonaghy/claude-coordinator/main/install-agent.sh | bash -s -- --machine <name>
552
+ curl -sSL https://raw.githubusercontent.com/JDonaghy/code-coordinator/main/install-agent.sh | bash -s -- --machine <name>
553
553
  ```
554
554
  No git clone needed — `install-agent.sh` pulls from PyPI.
555
555
  2. Add the machine to `coordinator.yml` under `machines:` with its Tailscale hostname and capabilities.
@@ -562,9 +562,9 @@ For Tailscale setup, see [tailscale.com/kb](https://tailscale.com/kb/). The agen
562
562
  To add a worker machine (no repo checkout needed):
563
563
 
564
564
  ```bash
565
- curl -sSL https://raw.githubusercontent.com/JDonaghy/claude-coordinator/main/install-agent.sh | bash
565
+ curl -sSL https://raw.githubusercontent.com/JDonaghy/code-coordinator/main/install-agent.sh | bash
566
566
  # or with options:
567
- curl -sSL https://raw.githubusercontent.com/JDonaghy/claude-coordinator/main/install-agent.sh | bash -s -- --machine myserver --port 7433
567
+ curl -sSL https://raw.githubusercontent.com/JDonaghy/code-coordinator/main/install-agent.sh | bash -s -- --machine myserver --port 7433
568
568
  ```
569
569
 
570
570
  This installs coord, sets up a systemd service with auto-restart, and starts the agent. Then add the machine to `coordinator.yml` and run `coord status` to verify connectivity.
@@ -1,8 +1,8 @@
1
- # claude-coordinator
1
+ # code-coordinator
2
2
 
3
3
  Coordinate a fleet of Claude Code workers — and human-attended interactive `claude` sessions — from a single board.
4
4
 
5
- Claude Code is great at one task at a time. Real projects have dozens of issues, spread across repos, that each want their own session, their own scoping, and their own review. `claude-coordinator` runs many workers in parallel — on one machine or across several over Tailscale — behind a coordinator that picks the model, avoids file conflicts, routes by capability, and drives the full **Work → Test → Review → Merge** pipeline. Each stage can run as a cheap `claude -p` worker *or* as a human-attended interactive session you launch and steer from the board.
5
+ Claude Code is great at one task at a time. Real projects have dozens of issues, spread across repos, that each want their own session, their own scoping, and their own review. `code-coordinator` runs many workers in parallel — on one machine or across several over Tailscale — behind a coordinator that picks the model, avoids file conflicts, routes by capability, and drives the full **Work → Test → Review → Merge** pipeline. Each stage can run as a cheap `claude -p` worker *or* as a human-attended interactive session you launch and steer from the board.
6
6
 
7
7
  ## The problem
8
8
 
@@ -70,7 +70,7 @@ Two rules shape the flow:
70
70
  ## Quick demo
71
71
 
72
72
  ```bash
73
- pip install claude-coordinator # from PyPI
73
+ pip install code-coordinator # from PyPI
74
74
  coord init # interactive setup: detects repos, writes coordinator.yml
75
75
  coord agent & # start the agent server (port 7433) — see Quick Start for the systemd setup
76
76
 
@@ -99,7 +99,7 @@ Prefer to drive it by hand? Launch any stage as an interactive session from `coo
99
99
  ### 1. Install
100
100
 
101
101
  ```bash
102
- pip install claude-coordinator
102
+ pip install code-coordinator
103
103
  ```
104
104
 
105
105
  The `coord` CLI is now on your PATH. The same package provides the agent server (`coord agent`), so the coordinator side and the worker side share one install.
@@ -128,7 +128,7 @@ coord agent & # port 7433; auto-detects the machine from hostname
128
128
  For anything beyond a trial, use the installer (systemd user service, auto-restart, survives reboots, separate worker logs):
129
129
 
130
130
  ```bash
131
- curl -sSL https://raw.githubusercontent.com/JDonaghy/claude-coordinator/main/install-agent.sh | bash
131
+ curl -sSL https://raw.githubusercontent.com/JDonaghy/code-coordinator/main/install-agent.sh | bash
132
132
  ```
133
133
 
134
134
  The same script sets up remote worker machines — see [Worker node setup](#worker-node-setup).
@@ -509,7 +509,7 @@ The tool encodes a pattern from real multi-agent sessions: **separate the tech l
509
509
 
510
510
  1. On the new machine, run the installer (venv + systemd service in one shot):
511
511
  ```bash
512
- curl -sSL https://raw.githubusercontent.com/JDonaghy/claude-coordinator/main/install-agent.sh | bash -s -- --machine <name>
512
+ curl -sSL https://raw.githubusercontent.com/JDonaghy/code-coordinator/main/install-agent.sh | bash -s -- --machine <name>
513
513
  ```
514
514
  No git clone needed — `install-agent.sh` pulls from PyPI.
515
515
  2. Add the machine to `coordinator.yml` under `machines:` with its Tailscale hostname and capabilities.
@@ -522,9 +522,9 @@ For Tailscale setup, see [tailscale.com/kb](https://tailscale.com/kb/). The agen
522
522
  To add a worker machine (no repo checkout needed):
523
523
 
524
524
  ```bash
525
- curl -sSL https://raw.githubusercontent.com/JDonaghy/claude-coordinator/main/install-agent.sh | bash
525
+ curl -sSL https://raw.githubusercontent.com/JDonaghy/code-coordinator/main/install-agent.sh | bash
526
526
  # or with options:
527
- curl -sSL https://raw.githubusercontent.com/JDonaghy/claude-coordinator/main/install-agent.sh | bash -s -- --machine myserver --port 7433
527
+ curl -sSL https://raw.githubusercontent.com/JDonaghy/code-coordinator/main/install-agent.sh | bash -s -- --machine myserver --port 7433
528
528
  ```
529
529
 
530
530
  This installs coord, sets up a systemd service with auto-restart, and starts the agent. Then add the machine to `coordinator.yml` and run `coord status` to verify connectivity.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.108
3
+ Version: 0.5.110
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
@@ -38,11 +38,11 @@ Requires-Dist: setuptools-scm>=8; extra == "dev"
38
38
  Requires-Dist: wheel; extra == "dev"
39
39
  Dynamic: license-file
40
40
 
41
- # claude-coordinator
41
+ # code-coordinator
42
42
 
43
43
  Coordinate a fleet of Claude Code workers — and human-attended interactive `claude` sessions — from a single board.
44
44
 
45
- Claude Code is great at one task at a time. Real projects have dozens of issues, spread across repos, that each want their own session, their own scoping, and their own review. `claude-coordinator` runs many workers in parallel — on one machine or across several over Tailscale — behind a coordinator that picks the model, avoids file conflicts, routes by capability, and drives the full **Work → Test → Review → Merge** pipeline. Each stage can run as a cheap `claude -p` worker *or* as a human-attended interactive session you launch and steer from the board.
45
+ Claude Code is great at one task at a time. Real projects have dozens of issues, spread across repos, that each want their own session, their own scoping, and their own review. `code-coordinator` runs many workers in parallel — on one machine or across several over Tailscale — behind a coordinator that picks the model, avoids file conflicts, routes by capability, and drives the full **Work → Test → Review → Merge** pipeline. Each stage can run as a cheap `claude -p` worker *or* as a human-attended interactive session you launch and steer from the board.
46
46
 
47
47
  ## The problem
48
48
 
@@ -110,7 +110,7 @@ Two rules shape the flow:
110
110
  ## Quick demo
111
111
 
112
112
  ```bash
113
- pip install claude-coordinator # from PyPI
113
+ pip install code-coordinator # from PyPI
114
114
  coord init # interactive setup: detects repos, writes coordinator.yml
115
115
  coord agent & # start the agent server (port 7433) — see Quick Start for the systemd setup
116
116
 
@@ -139,7 +139,7 @@ Prefer to drive it by hand? Launch any stage as an interactive session from `coo
139
139
  ### 1. Install
140
140
 
141
141
  ```bash
142
- pip install claude-coordinator
142
+ pip install code-coordinator
143
143
  ```
144
144
 
145
145
  The `coord` CLI is now on your PATH. The same package provides the agent server (`coord agent`), so the coordinator side and the worker side share one install.
@@ -168,7 +168,7 @@ coord agent & # port 7433; auto-detects the machine from hostname
168
168
  For anything beyond a trial, use the installer (systemd user service, auto-restart, survives reboots, separate worker logs):
169
169
 
170
170
  ```bash
171
- curl -sSL https://raw.githubusercontent.com/JDonaghy/claude-coordinator/main/install-agent.sh | bash
171
+ curl -sSL https://raw.githubusercontent.com/JDonaghy/code-coordinator/main/install-agent.sh | bash
172
172
  ```
173
173
 
174
174
  The same script sets up remote worker machines — see [Worker node setup](#worker-node-setup).
@@ -549,7 +549,7 @@ The tool encodes a pattern from real multi-agent sessions: **separate the tech l
549
549
 
550
550
  1. On the new machine, run the installer (venv + systemd service in one shot):
551
551
  ```bash
552
- curl -sSL https://raw.githubusercontent.com/JDonaghy/claude-coordinator/main/install-agent.sh | bash -s -- --machine <name>
552
+ curl -sSL https://raw.githubusercontent.com/JDonaghy/code-coordinator/main/install-agent.sh | bash -s -- --machine <name>
553
553
  ```
554
554
  No git clone needed — `install-agent.sh` pulls from PyPI.
555
555
  2. Add the machine to `coordinator.yml` under `machines:` with its Tailscale hostname and capabilities.
@@ -562,9 +562,9 @@ For Tailscale setup, see [tailscale.com/kb](https://tailscale.com/kb/). The agen
562
562
  To add a worker machine (no repo checkout needed):
563
563
 
564
564
  ```bash
565
- curl -sSL https://raw.githubusercontent.com/JDonaghy/claude-coordinator/main/install-agent.sh | bash
565
+ curl -sSL https://raw.githubusercontent.com/JDonaghy/code-coordinator/main/install-agent.sh | bash
566
566
  # or with options:
567
- curl -sSL https://raw.githubusercontent.com/JDonaghy/claude-coordinator/main/install-agent.sh | bash -s -- --machine myserver --port 7433
567
+ curl -sSL https://raw.githubusercontent.com/JDonaghy/code-coordinator/main/install-agent.sh | bash -s -- --machine myserver --port 7433
568
568
  ```
569
569
 
570
570
  This installs coord, sets up a systemd service with auto-restart, and starts the agent. Then add the machine to `coordinator.yml` and run `coord status` to verify connectivity.
@@ -745,6 +745,7 @@ tests/test_usage_rollup.py
745
745
  tests/test_venv_live_install_2121.py
746
746
  tests/test_version_single_source.py
747
747
  tests/test_watch.py
748
+ tests/test_windows_job_is_a_real_gate_2000.py
748
749
  tests/test_worker_events.py
749
750
  tests/test_worker_image_pin_sync.py
750
751
  tests/test_worker_safety.py
@@ -775,6 +775,7 @@
775
775
  "tests/test_venv_live_install_2121.py",
776
776
  "tests/test_version_single_source.py",
777
777
  "tests/test_watch.py",
778
+ "tests/test_windows_job_is_a_real_gate_2000.py",
778
779
  "tests/test_worker_events.py",
779
780
  "tests/test_worker_image_pin_sync.py",
780
781
  "tests/test_worker_safety.py",
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.108",
2
+ "tag": "0.5.110",
3
3
  "distance": 0,
4
- "node": "g88b0fe133f2629aebc4acb6c0cd2f756be9213dc",
4
+ "node": "g587648b558cece37b10d0ceb9906cec225d8ceab",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-16"
@@ -7121,6 +7121,20 @@ class AgentServer:
7121
7121
  assert proc.stdin is not None
7122
7122
  proc.stdin.write(initial_input)
7123
7123
  proc.stdin.flush()
7124
+ # #2306: a provider that does not support stdin message injection
7125
+ # (``capabilities().inject == False``, e.g. OpenCodeProvider,
7126
+ # which takes its briefing on argv) never writes to or closes
7127
+ # this pipe again. Leaving it open blocks the worker forever —
7128
+ # it never sees an EOF on stdin — until the 600s TTFT watchdog
7129
+ # kills it having emitted zero bytes. Close it here so such a
7130
+ # worker gets its EOF immediately after the (empty) initial
7131
+ # write. ``provider_obj`` is ``None`` on the legacy path
7132
+ # (``spec.provider is None``, pre-#324 behaviour) — treat that
7133
+ # as claude/inject-capable and leave stdin open, matching
7134
+ # ``inject_message``'s existing "no provider info => allow"
7135
+ # fallback.
7136
+ if provider_obj is not None and not provider_obj.capabilities().inject: # type: ignore[attr-defined]
7137
+ proc.stdin.close()
7124
7138
  except (BrokenPipeError, OSError) as e:
7125
7139
  log_fh.write(f"\n# failed to send initial briefing: {e}\n")
7126
7140
 
@@ -46,7 +46,7 @@
46
46
 
47
47
  [Unit]
48
48
  Description=Snapshot coord.db to the external SSD (interim, pending #1822)
49
- Documentation=https://github.com/JDonaghy/claude-coordinator/issues/1822
49
+ Documentation=https://github.com/JDonaghy/code-coordinator/issues/1822
50
50
 
51
51
  [Service]
52
52
  Type=oneshot
@@ -43,7 +43,7 @@
43
43
  # pip show code-coordinator | grep -i editable # must print NOTHING
44
44
  #
45
45
  # An editable checkout (e.g. elitebook's dev box, where ~/.local/bin/coord
46
- # points at ~/src/claude-coordinator) lets a worker's branch churn rewrite the
46
+ # points at ~/src/code-coordinator) lets a worker's branch churn rewrite the
47
47
  # runner's own code out from under a live tick. Do not install this unit
48
48
  # there. See docs/DRIVE_QUEUE.md.
49
49
  #
@@ -45,7 +45,7 @@ Type=simple
45
45
  # error rather than a red suite — because a PATH= line here fixes this
46
46
  # host and leaves the next one broken silently, which is the same failure
47
47
  # shape as the bug. Keep both.
48
- # - #1117 added the repo venv (%h/src/claude-coordinator/.venv/bin) so
48
+ # - #1117 added the repo venv (%h/src/code-coordinator/.venv/bin) so
49
49
  # acceptance.drivers subprocesses shelled out via
50
50
  # subprocess.run(shell=True) (e.g. the cli-pytest driver's `pytest
51
51
  # tests/acceptance/{ms}`) resolve `pytest`/`python3` with the repo's
@@ -64,7 +64,7 @@ Type=simple
64
64
  # the structural fix — see the `coord health`/`coord doctor` unit_drift
65
65
  # check (#1831), which flags any unit whose PATH puts a `.venv/bin` entry
66
66
  # ahead of ~/.local/bin or ~/.coord-venv/bin.
67
- Environment=PATH=%h/.cargo/bin:%h/.local/bin:%h/src/claude-coordinator/.venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
67
+ Environment=PATH=%h/.cargo/bin:%h/.local/bin:%h/src/code-coordinator/.venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
68
68
  ExecStart=%h/.coord-venv/bin/coord serve --config %h/.coord/coordinator.yml --host 0.0.0.0 --port 7435
69
69
  Restart=on-failure
70
70
  RestartSec=3
@@ -5,7 +5,7 @@
5
5
  # A systemd *user* unit, Type=oneshot, mirroring coord-drive-queue.service's
6
6
  # tick pattern (timer-fired, its own flock so a slow run can't stack). Runs
7
7
  # deploy/coord-web-dist-build.sh, which:
8
- # - fetches origin/main into ~/src/claude-coordinator (read-only — only
8
+ # - fetches origin/main into ~/src/code-coordinator (read-only — only
9
9
  # `git fetch` + `rev-parse`, never touches that checkout's working tree
10
10
  # or whatever branch an operator has it parked on),
11
11
  # - builds coord/dashboard/webapp from that SHA inside a DEDICATED worktree
@@ -46,7 +46,7 @@
46
46
 
47
47
  [Unit]
48
48
  Description=Snapshot coord.db to the external SSD (interim, pending #1822)
49
- Documentation=https://github.com/JDonaghy/claude-coordinator/issues/1822
49
+ Documentation=https://github.com/JDonaghy/code-coordinator/issues/1822
50
50
 
51
51
  [Service]
52
52
  Type=oneshot
@@ -43,7 +43,7 @@
43
43
  # pip show code-coordinator | grep -i editable # must print NOTHING
44
44
  #
45
45
  # An editable checkout (e.g. elitebook's dev box, where ~/.local/bin/coord
46
- # points at ~/src/claude-coordinator) lets a worker's branch churn rewrite the
46
+ # points at ~/src/code-coordinator) lets a worker's branch churn rewrite the
47
47
  # runner's own code out from under a live tick. Do not install this unit
48
48
  # there. See docs/DRIVE_QUEUE.md.
49
49
  #
@@ -45,7 +45,7 @@ Type=simple
45
45
  # error rather than a red suite — because a PATH= line here fixes this
46
46
  # host and leaves the next one broken silently, which is the same failure
47
47
  # shape as the bug. Keep both.
48
- # - #1117 added the repo venv (%h/src/claude-coordinator/.venv/bin) so
48
+ # - #1117 added the repo venv (%h/src/code-coordinator/.venv/bin) so
49
49
  # acceptance.drivers subprocesses shelled out via
50
50
  # subprocess.run(shell=True) (e.g. the cli-pytest driver's `pytest
51
51
  # tests/acceptance/{ms}`) resolve `pytest`/`python3` with the repo's
@@ -64,7 +64,7 @@ Type=simple
64
64
  # the structural fix — see the `coord health`/`coord doctor` unit_drift
65
65
  # check (#1831), which flags any unit whose PATH puts a `.venv/bin` entry
66
66
  # ahead of ~/.local/bin or ~/.coord-venv/bin.
67
- Environment=PATH=%h/.cargo/bin:%h/.local/bin:%h/src/claude-coordinator/.venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
67
+ Environment=PATH=%h/.cargo/bin:%h/.local/bin:%h/src/code-coordinator/.venv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
68
68
  ExecStart=%h/.coord-venv/bin/coord serve --config %h/.coord/coordinator.yml --host 0.0.0.0 --port 7435
69
69
  Restart=on-failure
70
70
  RestartSec=3
@@ -5,7 +5,7 @@
5
5
  # A systemd *user* unit, Type=oneshot, mirroring coord-drive-queue.service's
6
6
  # tick pattern (timer-fired, its own flock so a slow run can't stack). Runs
7
7
  # deploy/coord-web-dist-build.sh, which:
8
- # - fetches origin/main into ~/src/claude-coordinator (read-only — only
8
+ # - fetches origin/main into ~/src/code-coordinator (read-only — only
9
9
  # `git fetch` + `rev-parse`, never touches that checkout's working tree
10
10
  # or whatever branch an operator has it parked on),
11
11
  # - builds coord/dashboard/webapp from that SHA inside a DEDICATED worktree
@@ -25,7 +25,7 @@
25
25
  # once, THEN start/enable coord-web.
26
26
  #
27
27
  # Safe to run unattended on a timer (see coord-web-dist-build.timer): it
28
- # never touches ~/.coord-venv, ~/src/claude-coordinator's own checkout (it
28
+ # never touches ~/.coord-venv, ~/src/code-coordinator's own checkout (it
29
29
  # uses a DEDICATED `git worktree`, so it can't collide with whatever branch
30
30
  # an operator has that checkout parked on — same reasoning as `coord drive`'s
31
31
  # worktree isolation), or any running coord-agent/coord-serve/coord-web
@@ -97,7 +97,7 @@
97
97
  set -uo pipefail
98
98
 
99
99
  SRC_ROOT="${SRC_ROOT:-$HOME/src}"
100
- REPO_NAME="${REPO_NAME:-claude-coordinator}"
100
+ REPO_NAME="${REPO_NAME:-code-coordinator}"
101
101
  BASE_CHECKOUT="${BASE_CHECKOUT:-$SRC_ROOT/$REPO_NAME}"
102
102
  BRANCH="${BRANCH:-main}"
103
103
 
@@ -227,7 +227,7 @@ Neither one leads reliably. Ask "can pip resolve it?", not "is it
227
227
  published?":
228
228
 
229
229
  ```bash
230
- curl -s https://pypi.org/simple/claude-coordinator/ | grep -q 'claude_coordinator-X\.Y\.Z' && echo installable
230
+ curl -s https://pypi.org/simple/code-coordinator/ | grep -q 'code_coordinator-X\.Y\.Z' && echo installable
231
231
  ```
232
232
 
233
233
  Expect per-machine variation even after that: a mirror/resolver on one
@@ -311,10 +311,10 @@ version/PID first, then choose between a drift-fix and a plain
311
311
  On the target machine:
312
312
 
313
313
  ```bash
314
- curl -sSL https://raw.githubusercontent.com/JDonaghy/claude-coordinator/main/install-agent.sh | bash -s -- --machine <name> --port 7433
314
+ curl -sSL https://raw.githubusercontent.com/JDonaghy/code-coordinator/main/install-agent.sh | bash -s -- --machine <name> --port 7433
315
315
  ```
316
316
 
317
- This creates `~/.coord-venv`, installs `claude-coordinator` from **PyPI**, writes a `coord-agent` systemd user unit, and starts it. The agent does NOT need a git clone of the repo — the `~/src/claude-coordinator` directory should only exist on the machine where you actually develop the coordinator itself.
317
+ This creates `~/.coord-venv`, installs `code-coordinator` from **PyPI**, writes a `coord-agent` systemd user unit, and starts it. The agent does NOT need a git clone of the repo — the `~/src/claude-coordinator` directory should only exist on the machine where you actually develop the coordinator itself.
318
318
 
319
319
  Verify:
320
320
 
@@ -1116,7 +1116,7 @@ From the coordinator machine:
1116
1116
  coord agent update --all
1117
1117
  ```
1118
1118
 
1119
- This POSTs to `/update` on every machine in `coordinator.yml`, telling each agent exactly which version the coordinator wants (`target_version`). Each agent pins its pip install to that exact release (`pip install --upgrade --no-cache-dir claude-coordinator==<target_version>`) and restarts.
1119
+ This POSTs to `/update` on every machine in `coordinator.yml`, telling each agent exactly which version the coordinator wants (`target_version`). Each agent pins its pip install to that exact release (`pip install --upgrade --no-cache-dir code-coordinator==<target_version>`) and restarts.
1120
1120
 
1121
1121
  **#1886: `target_version` is resolved from PyPI's simple index — the same source `pip install -U` itself resolves against — NOT from this CLI's own `__version__`.** A stale operator install (PyPI already has a newer release than the CLI running `coord agent update`) used to silently pin the whole fleet to that stale, older version while still printing a clean `✓` on every machine. If this CLI's own version is behind PyPI's latest, the command now prints a loud warning and targets the *newer* PyPI release instead — never its own age. Pass `--version X.Y.Z` to pin to something else on purpose (a rollback, a pre-release); that skips the PyPI lookup entirely.
1122
1122
 
@@ -1171,7 +1171,7 @@ same machine *and* from the editable CLI in `~/src/claude-coordinator`. It is
1171
1171
  upgraded by exactly one thing: someone remembering to do it.
1172
1172
 
1173
1173
  ```bash
1174
- ~/.coord-cli-venv/bin/pip install --upgrade --no-cache-dir claude-coordinator==X.Y.Z
1174
+ ~/.coord-cli-venv/bin/pip install --upgrade --no-cache-dir code-coordinator==X.Y.Z
1175
1175
  ~/.coord-cli-venv/bin/coord --version # verify — never infer from pip's exit code
1176
1176
  ```
1177
1177
 
@@ -1631,7 +1631,7 @@ echo "agent is on <new-version>"
1631
1631
  Behaviour worth knowing:
1632
1632
 
1633
1633
  - The endpoint **runs `pip install --upgrade --no-cache-dir
1634
- claude-coordinator`** (or `git pull --ff-only` for an editable
1634
+ code-coordinator`** (or `git pull --ff-only` for an editable
1635
1635
  install) in a daemon-less background thread, then `os.execv`-restarts
1636
1636
  **only if the version actually changed**.
1637
1637
  - If the installed version is already current it records
@@ -1674,8 +1674,8 @@ When `last_update.mode` is `editable (git pull)`, the agent's venv has a `pip in
1674
1674
 
1675
1675
  ```bash
1676
1676
  ssh <host>
1677
- ~/.coord-venv/bin/pip uninstall -y claude-coordinator
1678
- ~/.coord-venv/bin/pip install --upgrade claude-coordinator
1677
+ ~/.coord-venv/bin/pip uninstall -y code-coordinator
1678
+ ~/.coord-venv/bin/pip install --upgrade code-coordinator
1679
1679
  XDG_RUNTIME_DIR=/run/user/$(id -u) systemctl --user restart coord-agent
1680
1680
  ```
1681
1681
 
@@ -1714,7 +1714,7 @@ If you have several editable installs to convert, you can script it (assumes SSH
1714
1714
 
1715
1715
  ```bash
1716
1716
  for host in precision elitebook dellserver; do
1717
- ssh $host '~/.coord-venv/bin/pip uninstall -y claude-coordinator && ~/.coord-venv/bin/pip install --upgrade claude-coordinator && XDG_RUNTIME_DIR=/run/user/$(id -u) systemctl --user restart coord-agent'
1717
+ ssh $host '~/.coord-venv/bin/pip uninstall -y code-coordinator && ~/.coord-venv/bin/pip install --upgrade code-coordinator && XDG_RUNTIME_DIR=/run/user/$(id -u) systemctl --user restart coord-agent'
1718
1718
  done
1719
1719
  ```
1720
1720
 
@@ -1815,4 +1815,4 @@ chmod 600 ~/.ssh/authorized_keys # on each agent
1815
1815
 
1816
1816
  For background on why rsync-over-SSH was chosen over direct HTTP download
1817
1817
  (signed URL vs key-auth tradeoffs, GC behaviour, TTL defaults), see the
1818
- original design in [GitHub issue #305](https://github.com/JDonaghy/claude-coordinator/issues/305).
1818
+ original design in [GitHub issue #305](https://github.com/JDonaghy/code-coordinator/issues/305).
@@ -77,7 +77,7 @@ The `coord agent` server exposes a small, JSON-only HTTP API on port 7433. Any c
77
77
  | `GET /stream/<id>` | Server-sent events: tails the worker log |
78
78
  | `POST /cancel/<id>` | Send SIGTERM to a running worker |
79
79
  | `POST /restart` | Restart the agent process (waits for active workers up to `cancel_timeout`) |
80
- | `POST /update` | `pip install --upgrade claude-coordinator` then re-exec |
80
+ | `POST /update` | `pip install --upgrade code-coordinator` then re-exec |
81
81
  | `POST /worktree-clean` | Prune stale worktrees for completed assignments |
82
82
 
83
83
  Example: dispatch a worker with curl.
@@ -273,7 +273,7 @@ Two consequences worth stating plainly, because both have cost real work:
273
273
  - **It only runs on the `coord plan` → `coord approve` path.** The drive queue dispatches
274
274
  through `coord drive` → `coord assign` and never consults the brain, so unattended work —
275
275
  which is most work — got no overlap check at all. Both same-file collisions on
276
- 2026-08-14 (quadraui #306/#309 against #307/#308, and claude-coordinator #2234 against
276
+ 2026-08-14 (quadraui #306/#309 against #307/#308, and code-coordinator #2234 against
277
277
  #2230, all four appending to a single file) arrived through the queue.
278
278
 
279
279
  `claim.py` does not close this gap: it is issue-level only (an active board assignment, or
@@ -1,7 +1,7 @@
1
1
  # Cross-Platform — porting coord to macOS & Windows
2
2
 
3
3
  > **Status:** design draft / RFC (2026-07-13). Captures the target architecture for running
4
- > claude-coordinator natively on macOS and Windows, and for the single-machine "just my laptop"
4
+ > code-coordinator natively on macOS and Windows, and for the single-machine "just my laptop"
5
5
  > topology. Not committed direction — a thinking artifact to react to, decomposable into a milestone
6
6
  > when we pick it up.
7
7
  >
@@ -15,7 +15,7 @@
15
15
  A small, authenticated, public web site where a customer describes what they want, and later comes
16
16
  back to **review a design and sign off on it**. Sign-off produces an **outcome definition** — a
17
17
  plain-language acceptance contract — plus an epic/milestone decomposition, which is handed to
18
- claude-coordinator and driven by the existing `Work → Test → Review → Merge` pipeline. Progress
18
+ code-coordinator and driven by the existing `Work → Test → Review → Merge` pipeline. Progress
19
19
  reports back in git-free language.
20
20
 
21
21
  The customer never sees git, never sees an issue number, and never talks to a live agent.
@@ -223,7 +223,7 @@ be resisted: it would buy obscurity in exchange for a second release lane.
223
223
  live in GitHub Actions secrets and `wrangler secret put` — never in `wrangler.toml`, never in a
224
224
  committed `.dev.vars`.
225
225
 
226
- **MIT.** Note the asymmetry, and that it is deliberate: `claude-coordinator` is **FSL-1.1-MIT**
226
+ **MIT.** Note the asymmetry, and that it is deliberate: `code-coordinator` is **FSL-1.1-MIT**
227
227
  (source-available, no competing service for two years, then MIT), while the portal is permissive from
228
228
  day one. The portal is an intake and sign-off surface for a coordinator fleet — without one it is a
229
229
  form that talks to nothing. The defensible part is the pipeline it feeds (gates, oracle, review), and