code-coordinator 0.5.145__tar.gz → 0.5.147__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 (867) hide show
  1. code_coordinator-0.5.147/.github/workflows/acceptance-web.yml +126 -0
  2. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/.github/workflows/test.yml +56 -82
  3. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/PKG-INFO +1 -1
  4. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/code_coordinator.egg-info/PKG-INFO +1 -1
  5. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/code_coordinator.egg-info/SOURCES.txt +1 -0
  6. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/code_coordinator.egg-info/scm_file_list.json +1 -0
  7. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/code_coordinator.egg-info/scm_version.json +2 -2
  8. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/drive.py +25 -1
  9. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/test_author.py +39 -13
  10. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_ci_acceptance_gate_1950.py +136 -15
  11. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_decide.py +72 -0
  12. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_test_author.py +44 -6
  13. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/dialogs.rs +7 -16
  14. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/drive_queue.rs +193 -4
  15. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/escalation.rs +32 -0
  16. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/.claude/commands/board.md +0 -0
  17. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/.claude/commands/complete-session.md +0 -0
  18. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/.claude/commands/coordinator.md +0 -0
  19. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/.githooks/_lib.sh +0 -0
  20. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/.githooks/post-checkout +0 -0
  21. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/.githooks/post-commit +0 -0
  22. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/.githooks/post-merge +0 -0
  23. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  24. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/.github/coord-ci-acceptance.yml +0 -0
  25. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/.github/workflows/auto-release.yml +0 -0
  26. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/.github/workflows/cargo-test.yml +0 -0
  27. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/.github/workflows/publish.yml +0 -0
  28. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/.github/workflows/release-tui.yml +0 -0
  29. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/.gitignore +0 -0
  30. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/CLAUDE.md +0 -0
  31. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/GOAL.md +0 -0
  32. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/LICENSE +0 -0
  33. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/MANIFEST.in +0 -0
  34. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/README.md +0 -0
  35. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/code_coordinator.egg-info/dependency_links.txt +0 -0
  36. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/code_coordinator.egg-info/entry_points.txt +0 -0
  37. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/code_coordinator.egg-info/requires.txt +0 -0
  38. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/code_coordinator.egg-info/top_level.txt +0 -0
  39. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/__init__.py +0 -0
  40. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/_board_mapping.py +0 -0
  41. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/acceptance.py +0 -0
  42. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/acceptance_drivers.py +0 -0
  43. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/agent.py +0 -0
  44. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/agent_app.py +0 -0
  45. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/agent_update.py +0 -0
  46. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/agents/opencode/.gitignore +0 -0
  47. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/agents/opencode/agents/work.md +0 -0
  48. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/agents/opencode/routing.jsonc +0 -0
  49. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/audit.py +0 -0
  50. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/auto_loop.py +0 -0
  51. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/block_log.py +0 -0
  52. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/board_bool_guard.py +0 -0
  53. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/board_service.py +0 -0
  54. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/board_wire.py +0 -0
  55. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/brain.py +0 -0
  56. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/branch_model.py +0 -0
  57. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/bug_intake.py +0 -0
  58. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/cargo_cache.py +0 -0
  59. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/ci_github.py +0 -0
  60. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/ci_store.py +0 -0
  61. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/claim.py +0 -0
  62. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/cli.py +0 -0
  63. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/client.py +0 -0
  64. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/__init__.py +0 -0
  65. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/_common.py +0 -0
  66. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/acceptance.py +0 -0
  67. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/agent_ops.py +0 -0
  68. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/audit.py +0 -0
  69. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/chat.py +0 -0
  70. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/dispatch.py +0 -0
  71. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/dispatch_workers.py +0 -0
  72. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/drive_queue.py +0 -0
  73. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/gate_a.py +0 -0
  74. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/gates.py +0 -0
  75. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/issues.py +0 -0
  76. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/lifecycle.py +0 -0
  77. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/merge.py +0 -0
  78. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/milestone.py +0 -0
  79. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/plan_followup.py +0 -0
  80. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/plans.py +0 -0
  81. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/portal.py +0 -0
  82. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/release.py +0 -0
  83. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/repo.py +0 -0
  84. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/report.py +0 -0
  85. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/review.py +0 -0
  86. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/scorecard.py +0 -0
  87. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/sessions.py +0 -0
  88. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/setup.py +0 -0
  89. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/status.py +0 -0
  90. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/terminal.py +0 -0
  91. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/test_gate.py +0 -0
  92. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/commands/tui.py +0 -0
  93. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/comments.py +0 -0
  94. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/config.py +0 -0
  95. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/config_reload.py +0 -0
  96. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/conflict_fix.py +0 -0
  97. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dao.py +0 -0
  98. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/__init__.py +0 -0
  99. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/fixture.py +0 -0
  100. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/index.html +0 -0
  101. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/server.py +0 -0
  102. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/terminal.py +0 -0
  103. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/.gitignore +0 -0
  104. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/components.json +0 -0
  105. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
  106. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  107. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
  108. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
  109. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  110. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  111. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  112. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  113. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  114. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/dist/index.html +0 -0
  115. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  116. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/dist/sw.js +0 -0
  117. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  118. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  119. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  120. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  121. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  122. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  123. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  124. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  125. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  126. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  127. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/eslint.config.js +0 -0
  128. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/index.html +0 -0
  129. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  130. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/package-lock.json +0 -0
  131. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/package.json +0 -0
  132. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  133. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/playwright.config.ts +0 -0
  134. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/postcss.config.js +0 -0
  135. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  136. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  137. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  138. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/App.tsx +0 -0
  139. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/api/client.ts +0 -0
  140. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  141. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  142. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  143. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  144. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  145. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  146. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  147. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  148. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  149. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  150. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  151. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  152. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  153. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  154. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  155. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  156. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  157. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  158. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  159. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  160. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  161. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  162. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  163. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  164. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  165. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  166. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  167. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  168. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  169. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  170. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  171. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  172. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  173. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  174. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  175. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/index.css +0 -0
  176. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  177. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  178. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/main.tsx +0 -0
  179. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  180. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  181. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  182. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  183. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  184. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  185. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  186. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  187. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  188. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  189. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  190. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  191. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  192. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  193. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  194. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  195. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  196. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  197. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  198. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  199. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  200. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  201. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  202. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/tailwind.config.js +0 -0
  203. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/tsconfig.json +0 -0
  204. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  205. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dashboard/webapp/vite.config.ts +0 -0
  206. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/db.py +0 -0
  207. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dead_end.py +0 -0
  208. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/README.md +0 -0
  209. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-agent.service +0 -0
  210. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-db-backup.service +0 -0
  211. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-db-backup.sh +0 -0
  212. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-db-backup.timer +0 -0
  213. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-drive-queue.service +0 -0
  214. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-drive-queue.timer +0 -0
  215. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-notify.service +0 -0
  216. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-notify.timer +0 -0
  217. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-release-propagate.service +0 -0
  218. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-release-propagate.timer +0 -0
  219. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-release-window.service +0 -0
  220. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-release-window.timer +0 -0
  221. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-serve.service +0 -0
  222. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-web-dist-build.service +0 -0
  223. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-web-dist-build.timer +0 -0
  224. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy/coord-web.service +0 -0
  225. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy_manifest.py +0 -0
  226. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deploy_units.py +0 -0
  227. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/deps.py +0 -0
  228. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/diagnose.py +0 -0
  229. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dispatch.py +0 -0
  230. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/dist_name.py +0 -0
  231. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/drive.py +0 -0
  232. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/drive_queue.py +0 -0
  233. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/drive_state.py +0 -0
  234. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/events.py +0 -0
  235. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/failure_class.py +0 -0
  236. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/filelock.py +0 -0
  237. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/fleet_config_health.py +0 -0
  238. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/freshness.py +0 -0
  239. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/gate_a.py +0 -0
  240. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/gate_b.py +0 -0
  241. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/gate_snapshot.py +0 -0
  242. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/gates.py +0 -0
  243. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/github_ops.py +0 -0
  244. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/goal.py +0 -0
  245. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/graph_health.py +0 -0
  246. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/__init__.py +0 -0
  247. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/aggregate.py +0 -0
  248. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/__init__.py +0 -0
  249. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/agent_install.py +0 -0
  250. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/cargo_targets.py +0 -0
  251. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/claude_binary.py +0 -0
  252. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/deploy_lane_facts.py +0 -0
  253. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/disk.py +0 -0
  254. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/fleet_board.py +0 -0
  255. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  256. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/fleet_phantom.py +0 -0
  257. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/fleet_unit_drift.py +0 -0
  258. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/graph.py +0 -0
  259. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/graphify_cli.py +0 -0
  260. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/index_lock.py +0 -0
  261. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/plan_usage.py +0 -0
  262. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/repo_state.py +0 -0
  263. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/spawned_coord.py +0 -0
  264. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/timer_active.py +0 -0
  265. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/toolchain.py +0 -0
  266. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/unit_drift.py +0 -0
  267. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/unit_enablement.py +0 -0
  268. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/checks/worktrees.py +0 -0
  269. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/cli.py +0 -0
  270. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/context.py +0 -0
  271. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/fleet_snapshot.py +0 -0
  272. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/models.py +0 -0
  273. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/pypi.py +0 -0
  274. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/registry.py +0 -0
  275. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/render.py +0 -0
  276. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/health/units.py +0 -0
  277. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/hooks.py +0 -0
  278. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/housekeeping.py +0 -0
  279. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/interactive.py +0 -0
  280. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/issue_store.py +0 -0
  281. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/liveness_auditor.py +0 -0
  282. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/machine_pause.py +0 -0
  283. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/merge_queue.py +0 -0
  284. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/milestone_chat.py +0 -0
  285. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/milestone_dispatch.py +0 -0
  286. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/milestone_gate.py +0 -0
  287. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/milestone_order.py +0 -0
  288. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/mock_author.py +0 -0
  289. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/models.py +0 -0
  290. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/network.py +0 -0
  291. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/new_issue_chat.py +0 -0
  292. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/notifier/__init__.py +0 -0
  293. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/notifier/baseline.py +0 -0
  294. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/notifier/cli.py +0 -0
  295. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/notifier/collect.py +0 -0
  296. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/notifier/digest.py +0 -0
  297. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/notifier/models.py +0 -0
  298. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/notifier/predicate.py +0 -0
  299. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/notifier/service.py +0 -0
  300. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/notifier/store.py +0 -0
  301. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/notifier/transport.py +0 -0
  302. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/notify.py +0 -0
  303. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/openapi.py +0 -0
  304. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/overlap_fence.py +0 -0
  305. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/overlap_predict.py +0 -0
  306. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/parentage.py +0 -0
  307. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/parentage_github.py +0 -0
  308. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/pipeline.py +0 -0
  309. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/plan_parser.py +0 -0
  310. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/plans.py +0 -0
  311. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/platform_paths.py +0 -0
  312. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/portal_bridge.py +0 -0
  313. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/portal_store.py +0 -0
  314. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/portal_sync.py +0 -0
  315. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/pr_body_lint.py +0 -0
  316. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/prereqs.py +0 -0
  317. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/progress.py +0 -0
  318. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/providers/__init__.py +0 -0
  319. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/providers/base.py +0 -0
  320. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/providers/claude.py +0 -0
  321. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/providers/claude_pty.py +0 -0
  322. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/providers/opencode.py +0 -0
  323. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/queue_diagnose.py +0 -0
  324. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/reconcile.py +0 -0
  325. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/reconcile_tick.py +0 -0
  326. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/refine_chat.py +0 -0
  327. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/release_cordon.py +0 -0
  328. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/release_propagate.py +0 -0
  329. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/release_verify.py +0 -0
  330. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/release_window.py +0 -0
  331. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/repo_edit.py +0 -0
  332. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/repo_onboard.py +0 -0
  333. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/reports.py +0 -0
  334. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/revalidate.py +0 -0
  335. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/review.py +0 -0
  336. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/scorecard.py +0 -0
  337. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/serve_app.py +0 -0
  338. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/skills/portal-followup/SKILL.md +0 -0
  339. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/skills/update-issue/SKILL.md +0 -0
  340. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/smoke.py +0 -0
  341. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/spend_ceiling.py +0 -0
  342. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/split_work.py +0 -0
  343. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/stage_projection.py +0 -0
  344. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/state.py +0 -0
  345. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/test_chat.py +0 -0
  346. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/test_orchestrator.py +0 -0
  347. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/test_report.py +0 -0
  348. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/tui_release.py +0 -0
  349. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/usage.py +0 -0
  350. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/usage_limits.py +0 -0
  351. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/usage_rollup.py +0 -0
  352. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coord/worker_events.py +0 -0
  353. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/coordinator.example.yml +0 -0
  354. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-agent.service +0 -0
  355. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-db-backup.service +0 -0
  356. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-db-backup.sh +0 -0
  357. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-db-backup.timer +0 -0
  358. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-drive-queue.service +0 -0
  359. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-drive-queue.timer +0 -0
  360. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-notify.service +0 -0
  361. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-notify.timer +0 -0
  362. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-release-propagate.service +0 -0
  363. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-release-propagate.timer +0 -0
  364. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-release-window.service +0 -0
  365. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-release-window.timer +0 -0
  366. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-serve.service +0 -0
  367. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-web-dist-build.service +0 -0
  368. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-web-dist-build.sh +0 -0
  369. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-web-dist-build.timer +0 -0
  370. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-web-rollback.sh +0 -0
  371. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/coord-web.service +0 -0
  372. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/deploy/node-shim.sh +0 -0
  373. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/AGENT_OPERATIONS.md +0 -0
  374. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/ARCHITECTURE.md +0 -0
  375. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/ARCH_SECURITY_GATES.md +0 -0
  376. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/COCKPIT.md +0 -0
  377. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/CONTROL_CENTER.md +0 -0
  378. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/COST_DISCIPLINE.md +0 -0
  379. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/CROSS_PLATFORM.md +0 -0
  380. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/CUSTOMER_PORTAL.md +0 -0
  381. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/DRIVE_QUEUE.md +0 -0
  382. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/EPHEMERAL_WORKERS.md +0 -0
  383. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/FORGE_MIGRATION.md +0 -0
  384. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/GRAPHIFY_SETUP.md +0 -0
  385. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/ISSUE_GUIDANCE.md +0 -0
  386. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/MAC_MINI.md +0 -0
  387. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  388. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/NOTIFIER.md +0 -0
  389. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/OPENCODE_VERIFICATION.md +0 -0
  390. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/OPERATING_GOTCHAS.md +0 -0
  391. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/ORACLE_LOOP.md +0 -0
  392. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/PHONE_WEBAPP.md +0 -0
  393. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/PIPELINE_V2.md +0 -0
  394. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/PLATFORM_EVOLUTION.md +0 -0
  395. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/SECOND_BACKEND.md +0 -0
  396. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/STORE_SERVICE.md +0 -0
  397. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  398. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/WEB_CONTROL_CENTER.md +0 -0
  399. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/WSL_WINDOWS_WORKER.md +0 -0
  400. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/mocks/web/README.md +0 -0
  401. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/mocks/web/_tokens.css +0 -0
  402. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/mocks/web/issue-detail.html +0 -0
  403. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/mocks/web/pipeline-narrow.html +0 -0
  404. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/docs/mocks/web/pipeline-wide.html +0 -0
  405. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/graphify-out/.gitignore +0 -0
  406. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/install-agent.sh +0 -0
  407. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/pyproject.toml +0 -0
  408. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/audit_review_verdict_overrides.py +0 -0
  409. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  410. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/azure-workers/build-worker-image.sh +0 -0
  411. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/azure-workers/coordinator-machine.py +0 -0
  412. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/azure-workers/epic-down.sh +0 -0
  413. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/azure-workers/epic-up.sh +0 -0
  414. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/azure-workers/preflight.sh +0 -0
  415. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/azure-workers/provision-worker.sh +0 -0
  416. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  417. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  418. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/azure-workers/verify-github-token.sh +0 -0
  419. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/codegen.py +0 -0
  420. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/coord-test-runner.sh +0 -0
  421. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/drive-batch.sh +0 -0
  422. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/gen_board_fixture.py +0 -0
  423. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/next_release_tag.py +0 -0
  424. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/run_tests_in_populated_home.sh +0 -0
  425. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/run_tests_without_gh.sh +0 -0
  426. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/smoke_437_interactive.py +0 -0
  427. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/verify_878_review_capture.py +0 -0
  428. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/verify_release_published.py +0 -0
  429. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/scripts/verify_release_wheel.py +0 -0
  430. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/setup.cfg +0 -0
  431. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/SMOKE_SET.md +0 -0
  432. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/__init__.py +0 -0
  433. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  434. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-33/contract.md +0 -0
  435. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-33/manifest.yml +0 -0
  436. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  437. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  438. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  439. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  440. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-37/conftest.py +0 -0
  441. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-37/contract.md +0 -0
  442. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-37/manifest.yml +0 -0
  443. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  444. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  445. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-38/contract.md +0 -0
  446. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-38/manifest.yml +0 -0
  447. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  448. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  449. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  450. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  451. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  452. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  453. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  454. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  455. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  456. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  457. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-51/contract.md +0 -0
  458. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  459. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  460. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-51/manifest.yml +0 -0
  461. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  462. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-51/tsconfig.json +0 -0
  463. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  464. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  465. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-65/contract.md +0 -0
  466. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-65/manifest.yml +0 -0
  467. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  468. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  469. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  470. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  471. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  472. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  473. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  474. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  475. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  476. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/conftest.py +0 -0
  477. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/board-pipeline-basic.json +0 -0
  478. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  479. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  480. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  481. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  482. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/playwright/all_pass.json +0 -0
  483. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  484. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/playwright/mixed_fail.json +0 -0
  485. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  486. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  487. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/playwright/skip.json +0 -0
  488. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/playwright/truncated.json +0 -0
  489. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  490. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  491. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  492. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  493. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  494. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  495. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  496. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  497. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_acceptance.py +0 -0
  498. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_acceptance_drivers.py +0 -0
  499. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent.py +0 -0
  500. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_api_error.py +0 -0
  501. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_app.py +0 -0
  502. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_branch_base.py +0 -0
  503. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_branch_capture.py +0 -0
  504. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_config_free_1712.py +0 -0
  505. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_deploy_units_endpoint.py +0 -0
  506. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_dirty_worktree.py +0 -0
  507. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  508. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_graph_self_heal.py +0 -0
  509. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_health_h3.py +0 -0
  510. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_idle_restart.py +0 -0
  511. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_push_failure.py +0 -0
  512. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_reap.py +0 -0
  513. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_repos_and_pull.py +0 -0
  514. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_restart_services_endpoint.py +0 -0
  515. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_startup_diagnostics.py +0 -0
  516. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_update.py +0 -0
  517. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_update_bluegreen.py +0 -0
  518. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_usage_limit.py +0 -0
  519. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_agent_zero_commit.py +0 -0
  520. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_ambient_home_isolation.py +0 -0
  521. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_approve_reject_plan.py +0 -0
  522. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_approve_usage_gate.py +0 -0
  523. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_assignment_already_recorded_daemon.py +0 -0
  524. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_audit_log.py +0 -0
  525. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_audit_outcome.py +0 -0
  526. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_audit_query.py +0 -0
  527. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_auto_loop.py +0 -0
  528. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_auto_release_publish_2035.py +0 -0
  529. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_base_checkout_restore.py +0 -0
  530. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_block_log.py +0 -0
  531. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_board_cap_762.py +0 -0
  532. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_board_fixture.py +0 -0
  533. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_board_read_path.py +0 -0
  534. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_board_service.py +0 -0
  535. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_board_state.py +0 -0
  536. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_board_wire.py +0 -0
  537. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_brain.py +0 -0
  538. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_branch_model.py +0 -0
  539. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_bug_intake.py +0 -0
  540. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_build_worker_image_env_update.py +0 -0
  541. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cargo_cache.py +0 -0
  542. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_ci_parity_2091.py +0 -0
  543. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_ci_store.py +0 -0
  544. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_claim.py +0 -0
  545. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_acceptance.py +0 -0
  546. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_assign.py +0 -0
  547. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  548. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_assign_interactive_remote.py +0 -0
  549. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_assign_provider.py +0 -0
  550. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  551. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_audit.py +0 -0
  552. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_chat_continue.py +0 -0
  553. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_diagnose_config_provenance.py +0 -0
  554. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_diagnose_graph.py +0 -0
  555. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_doctor.py +0 -0
  556. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_doctor_config_free_1801.py +0 -0
  557. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  558. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_drive.py +0 -0
  559. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_drive_queue.py +0 -0
  560. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_escalate.py +0 -0
  561. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_fix_headless_review.py +0 -0
  562. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_gate_a.py +0 -0
  563. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_install_drift.py +0 -0
  564. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_install_skills.py +0 -0
  565. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_issue_create_label.py +0 -0
  566. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_issue_reopen.py +0 -0
  567. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_merge.py +0 -0
  568. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_milestone_assign.py +0 -0
  569. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_milestone_capture.py +0 -0
  570. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_milestone_chat_add_child.py +0 -0
  571. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_milestone_dispatch.py +0 -0
  572. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_milestone_gate_b.py +0 -0
  573. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_milestone_gate_c.py +0 -0
  574. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_milestone_order.py +0 -0
  575. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  576. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_milestone_ship.py +0 -0
  577. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_network.py +0 -0
  578. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_new_issue_chat.py +0 -0
  579. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_plans.py +0 -0
  580. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_portal.py +0 -0
  581. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_pull_artifact.py +0 -0
  582. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_queue.py +0 -0
  583. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_reattach_sessions.py +0 -0
  584. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_refine_board.py +0 -0
  585. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_release_preflight.py +0 -0
  586. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_release_propagate.py +0 -0
  587. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_release_window.py +0 -0
  588. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_repo_2220.py +0 -0
  589. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_scorecard.py +0 -0
  590. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_set_review_findings.py +0 -0
  591. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_status_advisory_terminal.py +0 -0
  592. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_status_merge_queue.py +0 -0
  593. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_status_provider.py +0 -0
  594. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_status_review_finalizing.py +0 -0
  595. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_status_test_failed_tag.py +0 -0
  596. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_status_usage_limit.py +0 -0
  597. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_sync_comments_873.py +0 -0
  598. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_test_plan.py +0 -0
  599. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_track.py +0 -0
  600. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_tui_update.py +0 -0
  601. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cli_wait.py +0 -0
  602. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_client_base_install.py +0 -0
  603. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_comments.py +0 -0
  604. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_completion_summary.py +0 -0
  605. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_config.py +0 -0
  606. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_config_acceptance.py +0 -0
  607. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_config_audit.py +0 -0
  608. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_config_pricing.py +0 -0
  609. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  610. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_config_usage_gate.py +0 -0
  611. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_conflict_fix.py +0 -0
  612. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_conflict_fix_semantic.py +0 -0
  613. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_coord_test.py +0 -0
  614. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_coord_test_runner_baseline.py +0 -0
  615. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_coord_test_runner_populated_home.py +0 -0
  616. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_coord_test_runner_routing.py +0 -0
  617. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_coord_test_runner_toolchain.py +0 -0
  618. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_coord_web_sse_restart_live.py +0 -0
  619. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_coordinator_machine.py +0 -0
  620. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_cross_platform_imports.py +0 -0
  621. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_dashboard.py +0 -0
  622. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_dashboard_fixture.py +0 -0
  623. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_dashboard_terminal.py +0 -0
  624. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_dashboard_terminal_live.py +0 -0
  625. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_db.py +0 -0
  626. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_dead_end.py +0 -0
  627. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_deploy_coord_db_backup.py +0 -0
  628. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_deploy_coord_web_dist.py +0 -0
  629. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_deploy_coord_web_rollback.py +0 -0
  630. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_deploy_drive_queue_unit.py +0 -0
  631. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_deploy_manifest.py +0 -0
  632. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_deploy_units_lane.py +0 -0
  633. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_deploy_web_unit.py +0 -0
  634. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_deps.py +0 -0
  635. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_diagnose.py +0 -0
  636. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_dispatch.py +0 -0
  637. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_dispatch_target_validation.py +0 -0
  638. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_dist_name.py +0 -0
  639. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_done_housekeeping.py +0 -0
  640. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_drive.py +0 -0
  641. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_drive_queue.py +0 -0
  642. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_drive_state.py +0 -0
  643. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_drive_tmux.py +0 -0
  644. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_epic_up_capability_detection.py +0 -0
  645. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  646. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_epic_up_image_provenance.py +0 -0
  647. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_errors.py +0 -0
  648. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_events.py +0 -0
  649. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_failure_class.py +0 -0
  650. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_filelock.py +0 -0
  651. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  652. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_fix_of_force_override.py +0 -0
  653. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_fleet_config_health.py +0 -0
  654. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_fleet_health_probes.py +0 -0
  655. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_fleet_health_snapshot.py +0 -0
  656. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_freshness.py +0 -0
  657. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_gate_a.py +0 -0
  658. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_gate_b.py +0 -0
  659. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_gate_snapshot_staleness.py +0 -0
  660. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_gates.py +0 -0
  661. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  662. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_generated_types_fixture.py +0 -0
  663. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_github_ops.py +0 -0
  664. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_goal.py +0 -0
  665. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_graph_health.py +0 -0
  666. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_graph_selfheal_absent_2237.py +0 -0
  667. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_handoff.py +0 -0
  668. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_health_checks.py +0 -0
  669. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_health_cli.py +0 -0
  670. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_health_cli_graph.py +0 -0
  671. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_health_config.py +0 -0
  672. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_health_context.py +0 -0
  673. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_health_deploy_lane_facts.py +0 -0
  674. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_health_incident_regression.py +0 -0
  675. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_health_pypi.py +0 -0
  676. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_health_registry.py +0 -0
  677. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_health_timer_active.py +0 -0
  678. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_health_toolchain.py +0 -0
  679. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_health_unit_drift.py +0 -0
  680. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_health_unit_enablement.py +0 -0
  681. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_hooks.py +0 -0
  682. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_human_attended_437.py +0 -0
  683. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_init.py +0 -0
  684. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_integration.py +0 -0
  685. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_interactive_briefing_echo.py +0 -0
  686. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_interactive_prefill_state.py +0 -0
  687. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_interactive_session_relaunch.py +0 -0
  688. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_interactive_test_verdict_backstop.py +0 -0
  689. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_interactive_token_attribution.py +0 -0
  690. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_interactive_worktree.py +0 -0
  691. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_issue_store_seam.py +0 -0
  692. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_liveness_auditor.py +0 -0
  693. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_liveness_notify.py +0 -0
  694. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_machine_pause.py +0 -0
  695. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_merge_queue.py +0 -0
  696. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_merge_verify.py +0 -0
  697. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_milestone_chat.py +0 -0
  698. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_milestone_dispatch.py +0 -0
  699. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_milestone_gate.py +0 -0
  700. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_milestone_order.py +0 -0
  701. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_milestone_seam.py +0 -0
  702. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_mock_author.py +0 -0
  703. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_model_tiering.py +0 -0
  704. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_models.py +0 -0
  705. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_models_config_labels.py +0 -0
  706. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_needs_attention.py +0 -0
  707. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_network.py +0 -0
  708. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_new_issue_chat.py +0 -0
  709. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_next_release_tag.py +0 -0
  710. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_no_direct_gh_calls.py +0 -0
  711. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_node_shim.py +0 -0
  712. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_notifier_baseline.py +0 -0
  713. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_notifier_cli.py +0 -0
  714. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_notifier_collect.py +0 -0
  715. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_notifier_config.py +0 -0
  716. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_notifier_drive_seam.py +0 -0
  717. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_notifier_isolation.py +0 -0
  718. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_notifier_predicate.py +0 -0
  719. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_notifier_quiet_hours.py +0 -0
  720. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_notifier_service.py +0 -0
  721. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_notify.py +0 -0
  722. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_notify_drain.py +0 -0
  723. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_openapi.py +0 -0
  724. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_operational_defaults.py +0 -0
  725. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_overlap_fence.py +0 -0
  726. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_overlap_predict.py +0 -0
  727. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_packaged_deploy_units.py +0 -0
  728. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_parentage.py +0 -0
  729. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_paste_landed.py +0 -0
  730. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_pipeline.py +0 -0
  731. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_plan_followup_approve_plan_command.py +0 -0
  732. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_plan_followup_pr_command.py +0 -0
  733. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_plan_followup_review_command.py +0 -0
  734. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_plan_only.py +0 -0
  735. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_plan_parser.py +0 -0
  736. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_platform_paths.py +0 -0
  737. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_portal_bridge.py +0 -0
  738. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_portal_config.py +0 -0
  739. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_portal_sync.py +0 -0
  740. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_pr_body_lint.py +0 -0
  741. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_prereqs.py +0 -0
  742. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_production_db_guard.py +0 -0
  743. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_progress.py +0 -0
  744. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_provider_seam.py +0 -0
  745. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_providers.py +0 -0
  746. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_providers_config_labels.py +0 -0
  747. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_providers_pty.py +0 -0
  748. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_quiet_hours.py +0 -0
  749. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_quiet_hours_store_2146.py +0 -0
  750. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_reap_merged_sessions.py +0 -0
  751. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_reap_stale_interactive_tick.py +0 -0
  752. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_reconcile.py +0 -0
  753. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_reconcile_branch.py +0 -0
  754. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_reconcile_completions.py +0 -0
  755. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_reconcile_merges.py +0 -0
  756. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_reconcile_no_agent_record.py +0 -0
  757. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_reconcile_tick.py +0 -0
  758. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_reconcile_usage_limit_done.py +0 -0
  759. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_refine_chat.py +0 -0
  760. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_release_cordon_2101.py +0 -0
  761. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  762. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_release_cordon_deadlock_2240.py +0 -0
  763. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_release_propagate.py +0 -0
  764. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_release_unified_1242.py +0 -0
  765. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_release_verify.py +0 -0
  766. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_release_window.py +0 -0
  767. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_remote_auto_prune.py +0 -0
  768. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_remote_interactive_reaper.py +0 -0
  769. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_repo_edit_2220.py +0 -0
  770. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_repo_graph_fleet_2237.py +0 -0
  771. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_repo_onboard_2220.py +0 -0
  772. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_report_result_push.py +0 -0
  773. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_reports.py +0 -0
  774. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_retry.py +0 -0
  775. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_retry_advisory_1606.py +0 -0
  776. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_retry_type_1636.py +0 -0
  777. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_revalidate.py +0 -0
  778. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_review.py +0 -0
  779. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_review_end_review_without_verdict.py +0 -0
  780. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_review_parse_failure_diagnostic.py +0 -0
  781. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_review_reaffirm.py +0 -0
  782. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_review_state.py +0 -0
  783. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_review_verdict_backstop.py +0 -0
  784. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_review_verdict_override_audit.py +0 -0
  785. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_review_verdict_relay.py +0 -0
  786. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_review_zero_commits.py +0 -0
  787. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_scoped_review_wiring.py +0 -0
  788. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_scorecard.py +0 -0
  789. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_serve.py +0 -0
  790. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_serve_app_board_trim.py +0 -0
  791. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_session.py +0 -0
  792. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_slice_issue_attribution.py +0 -0
  793. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_smoke.py +0 -0
  794. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_smoke_live_checkout_restore.py +0 -0
  795. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_smoke_workflow.py +0 -0
  796. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_spend_ceiling.py +0 -0
  797. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_spend_ceiling_coordinator.py +0 -0
  798. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_split.py +0 -0
  799. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_split_work.py +0 -0
  800. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_stage_projection.py +0 -0
  801. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_stalled_pipeline.py +0 -0
  802. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_state.py +0 -0
  803. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_state_review_findings_daemon.py +0 -0
  804. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_status_fleet_footer.py +0 -0
  805. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_stop_1567.py +0 -0
  806. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_stuck.py +0 -0
  807. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_terminal_command.py +0 -0
  808. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_test_chat.py +0 -0
  809. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_test_orchestrator.py +0 -0
  810. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_test_report.py +0 -0
  811. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_test_verdict_parsing.py +0 -0
  812. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_test_verdict_transcript_floor.py +0 -0
  813. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_thin_client_board_audit.py +0 -0
  814. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_thin_client_config_load_1080.py +0 -0
  815. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_thin_client_daemon_routing_906.py +0 -0
  816. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_tmux_host.py +0 -0
  817. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_tmux_session.py +0 -0
  818. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_transcript_floor.py +0 -0
  819. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_usage.py +0 -0
  820. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_usage_limits.py +0 -0
  821. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_usage_rollup.py +0 -0
  822. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_venv_live_install_2121.py +0 -0
  823. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_version_single_source.py +0 -0
  824. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_watch.py +0 -0
  825. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  826. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_worker_events.py +0 -0
  827. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_worker_image_pin_sync.py +0 -0
  828. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_worker_safety.py +0 -0
  829. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_worker_test_scoping.py +0 -0
  830. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_worktree.py +0 -0
  831. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  832. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/Cargo.lock +0 -0
  833. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/Cargo.toml +0 -0
  834. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/cargo-config-local-quadraui.toml.example +0 -0
  835. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/audit.rs +0 -0
  836. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/chat.rs +0 -0
  837. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/data.rs +0 -0
  838. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/doc_tabs.rs +0 -0
  839. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/drive.rs +0 -0
  840. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/events.rs +0 -0
  841. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/fixtures.rs +0 -0
  842. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/fleet_health.rs +0 -0
  843. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/fleet_sessions.rs +0 -0
  844. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/fleet_terminals.rs +0 -0
  845. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/format.rs +0 -0
  846. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/milestone_dag.rs +0 -0
  847. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/mod.rs +0 -0
  848. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/msv.rs +0 -0
  849. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/pipeline.rs +0 -0
  850. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/plans.rs +0 -0
  851. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/render.rs +0 -0
  852. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/reports.rs +0 -0
  853. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/sessions.rs +0 -0
  854. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/settings_ui.rs +0 -0
  855. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/sidebar.rs +0 -0
  856. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/terminal.rs +0 -0
  857. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/tests.rs +0 -0
  858. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/types.rs +0 -0
  859. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/app/workspace.rs +0 -0
  860. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/bin/gtk.rs +0 -0
  861. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/commands.rs +0 -0
  862. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/lib.rs +0 -0
  863. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/main.rs +0 -0
  864. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/src/settings.rs +0 -0
  865. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/tests/acceptance.rs +0 -0
  866. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/tests/cli.rs +0 -0
  867. {code_coordinator-0.5.145 → code_coordinator-0.5.147}/tui/tests/fixtures/board_sample.json +0 -0
@@ -0,0 +1,126 @@
1
+ name: Acceptance (web)
2
+
3
+ # #2389: split out of test.yml's `acceptance` job — it was running on EVERY
4
+ # push/PR to this repo regardless of what changed, unconditionally installing
5
+ # Node + a real Chromium (`npx playwright install chromium --with-deps`)
6
+ # before running the web-playwright (ms-51) acceptance route. A pure `tui/`
7
+ # Rust change (already covered by cargo-test.yml's own tui-tuidriver route,
8
+ # `--for-path tui/src/main.rs`, gated on its own `paths:` filter) had no
9
+ # business paying that cost on every review round — this job is genuinely
10
+ # webapp-specific (`--for-path coord/dashboard/webapp/src/App.tsx`), so it
11
+ # gets the same `paths:`-gated treatment cargo-test.yml already established
12
+ # for the Rust side. Not in the branch-protection required-checks list
13
+ # (only test (3.12)/(3.13), thin-client-strict, e2e, no-gh-on-path are), so
14
+ # this staying un-triggered on an unrelated PR is not a merge blocker.
15
+ on:
16
+ push:
17
+ branches: [main]
18
+ paths:
19
+ - 'coord/dashboard/webapp/**'
20
+ - 'tests/acceptance/**'
21
+ - '.github/coord-ci-acceptance.yml'
22
+ # Self-trigger so edits to this workflow are exercised by their own PR.
23
+ - '.github/workflows/acceptance-web.yml'
24
+ pull_request:
25
+ branches: [main]
26
+ paths:
27
+ - 'coord/dashboard/webapp/**'
28
+ - 'tests/acceptance/**'
29
+ - '.github/coord-ci-acceptance.yml'
30
+ - '.github/workflows/acceptance-web.yml'
31
+ workflow_dispatch:
32
+
33
+ jobs:
34
+ # #1950: the SEALED oracle-loop acceptance suite (tests/acceptance/ms-NN/,
35
+ # playwright.acceptance.config.ts) was run by no automatic gate anywhere —
36
+ # only `coord acceptance run/record`, invoked once while a milestone was
37
+ # being driven and never again. ms-51 went red at #1547 (the responsive
38
+ # shell removed the `<h1>coord</h1>` §1a pins) and stayed red through
39
+ # #1548/#1550/#1551/#1818 with nothing noticing. This job is the cheapest
40
+ # fix named in #1950: run the accumulated sealed suite whenever anything it
41
+ # covers changes, same shape as `e2e` (test.yml) (Python for the `coord`
42
+ # CLI on PATH — the acceptance config's `webServer` shells out to `coord
43
+ # web --fixture ... --dist dist`, see playwright.acceptance.config.ts's
44
+ # module docstring — plus Node + a real chromium).
45
+ #
46
+ # `npm run test:acceptance` with NO `{ms}` filter (unlike a single
47
+ # milestone's `-- ms-NN`) walks the whole `tests/acceptance/` tree — the
48
+ # accumulated suite across every closed milestone, i.e. exactly `coord
49
+ # acceptance run --all` (Gate C) would assemble, just invoked by CI's
50
+ # cadence instead of a milestone-close event.
51
+ #
52
+ # #2180: the `npm run test:acceptance` step now runs THROUGH `coord
53
+ # acceptance run --all --ci` (#2164) instead of calling Playwright
54
+ # directly. Same suite, same reporter under the hood — the wrapper's
55
+ # web-playwright driver shape appends `--reporter=json` and reads
56
+ # PLAYWRIGHT_JSON_OUTPUT_FILE itself (coord/acceptance_drivers.py) — but
57
+ # now a test-id listed in a manifest's `expected_red:` that fails does not
58
+ # redden this job (a sealed slice authored red before its fix exists,
59
+ # #2164's whole point), while one that unexpectedly PASSES does, loudly
60
+ # (#1965's vacuous-assertion case). Before this, ms-51 going red for any
61
+ # reason failed this job exactly the same as every other kind of red —
62
+ # there was no way to merge a red-by-design slice without `--force-merge`.
63
+ # .github/coord-ci-acceptance.yml's header explains why this points at a
64
+ # CI-local config instead of the fleet's real ~/.coord/coordinator.yml.
65
+ acceptance:
66
+ runs-on: ubuntu-latest
67
+ timeout-minutes: 20
68
+ defaults:
69
+ run:
70
+ working-directory: coord/dashboard/webapp
71
+ steps:
72
+ - uses: actions/checkout@v4
73
+ - uses: actions/setup-python@v5
74
+ with:
75
+ python-version: "3.12"
76
+ - working-directory: .
77
+ run: pip install -e ".[dev]"
78
+ - uses: actions/setup-node@v4
79
+ with:
80
+ node-version: '20'
81
+ - run: npm ci
82
+ # #2393: same fix as test.yml's `e2e` job — see that job's comment.
83
+ - name: Cache Playwright browsers
84
+ id: playwright-cache
85
+ uses: actions/cache@v4
86
+ with:
87
+ path: ~/.cache/ms-playwright
88
+ key: ${{ runner.os }}-playwright-${{ hashFiles('coord/dashboard/webapp/package-lock.json') }}
89
+ - name: Install Playwright + OS deps (cache miss)
90
+ if: steps.playwright-cache.outputs.cache-hit != 'true'
91
+ # #2393 follow-up: the Chromium download from Playwright's CDN has hung
92
+ # (not merely failed) multiple times in one day, past what caching alone
93
+ # can paper over on a cache-miss run (a version bump, or the very first
94
+ # run ever). A short per-attempt timeout + retry turns "hang for the
95
+ # whole 20-minute job budget" into "fail fast and try again" — transient
96
+ # CDN/mirror flakiness usually clears within a couple of attempts.
97
+ run: |
98
+ for attempt in 1 2 3; do
99
+ echo "Playwright install attempt $attempt/3..."
100
+ if timeout 300 npx playwright install chromium --with-deps; then
101
+ echo "Playwright install succeeded on attempt $attempt"
102
+ exit 0
103
+ fi
104
+ echo "Playwright install attempt $attempt failed or timed out after 5m"
105
+ sleep 10
106
+ done
107
+ echo "Playwright install failed after 3 attempts"
108
+ exit 1
109
+ - name: Install Playwright OS deps only (cache hit)
110
+ if: steps.playwright-cache.outputs.cache-hit == 'true'
111
+ run: npx playwright install-deps chromium
112
+ - name: coord acceptance run --all --ci (web-playwright route, ms-51)
113
+ working-directory: .
114
+ run: >-
115
+ coord acceptance run --repo claude-coordinator --all --ci
116
+ --for-path coord/dashboard/webapp/src/App.tsx
117
+ --config .github/coord-ci-acceptance.yml --path .
118
+ - name: A red result here is attributable, not a mystery
119
+ if: failure()
120
+ run: |
121
+ echo "::error::The sealed acceptance suite (tests/acceptance/ms-NN/) failed."
122
+ echo "The failing spec's path and 'describe' title name the milestone (ms-NN) and the issue that slice was authored for (see tests/acceptance/ms-NN/manifest.yml)."
123
+ echo "Two causes, and only one fix is right:"
124
+ echo " 1. The app regressed against an still-accurate contract -> fix the app."
125
+ echo " 2. Legitimate app evolution made the contract stale (e.g. #1547 vs ms-51) -> amend the contract: coord acceptance mock <repo> <tracking_issue> --amend '<what changed and why>'"
126
+ echo "Do not silence this job (continue-on-error, skip, etc.) instead of doing one of the above -- that is exactly how ms-51 rotted unnoticed through #1547-#1818 (#1950)."
@@ -252,6 +252,12 @@ jobs:
252
252
 
253
253
  e2e:
254
254
  runs-on: ubuntu-latest
255
+ # #2389: this is the SAME `npx playwright install chromium --with-deps`
256
+ # step that hung 34+ minutes on `acceptance` with no automatic recovery
257
+ # (a job with no `timeout-minutes` defaults to GitHub's 360-minute
258
+ # ceiling) — required, so it stays in this file, but gets the same
259
+ # bounded timeout rather than the implicit 6-hour one.
260
+ timeout-minutes: 20
255
261
  defaults:
256
262
  run:
257
263
  working-directory: coord/dashboard/webapp
@@ -272,90 +278,58 @@ jobs:
272
278
  with:
273
279
  node-version: '20'
274
280
  - run: npm ci
275
- - run: npx playwright install chromium --with-deps
276
- - run: npm run test:e2e
277
-
278
- # #1950: the SEALED oracle-loop acceptance suite (tests/acceptance/ms-NN/,
279
- # playwright.acceptance.config.ts) was run by no automatic gate anywhere
280
- # only `coord acceptance run/record`, invoked once while a milestone was
281
- # being driven and never again. ms-51 went red at #1547 (the responsive
282
- # shell removed the `<h1>coord</h1>` §1a pins) and stayed red through
283
- # #1548/#1550/#1551/#1818 with nothing noticing. This job is the cheapest
284
- # fix named in #1950: run the accumulated sealed suite on every push/PR,
285
- # same shape as `e2e` above (Python for the `coord` CLI on PATH — the
286
- # acceptance config's `webServer` shells out to `coord web --fixture
287
- # ... --dist dist`, see playwright.acceptance.config.ts's module
288
- # docstring — plus Node + a real chromium).
289
- #
290
- # `npm run test:acceptance` with NO `{ms}` filter (unlike a single
291
- # milestone's `-- ms-NN`) walks the whole `tests/acceptance/` tree — the
292
- # accumulated suite across every closed milestone, i.e. exactly `coord
293
- # acceptance run --all` (Gate C) would assemble, just invoked by CI's
294
- # cadence instead of a milestone-close event.
295
- #
296
- # Deliberately NOT added to scripts/coord-test-runner.sh (the Test gate's
297
- # engine, coordinator.yml's `test_command`): that script also runs as a
298
- # systemd *user* unit on the daemon host (#1814's PATH problem) and would
299
- # need node/npm/chromium provisioned there for every future
300
- # coord/dashboard/webapp/** branch's Test stage, not just this
301
- # already-`browser`-capability-gated CI runner. CI is the tighter, cheaper
302
- # loop for this suite; revisit the Test-gate route if CI's cadence turns
303
- # out not to be enough (#1950's own "decide deliberately").
304
- #
305
- # ATTRIBUTABILITY (#1950 item 2): a red result here names a spec file
306
- # under `tests/acceptance/ms-NN/` and, by that suite's own convention
307
- # (tests/acceptance/ms-51/manifest.yml), a `describe` block carrying the
308
- # milestone's tracking issue — e.g. `ms-51/home-active.spec.ts › ms-51
309
- # Home Active tab (#1544) › ...`. Playwright's `list` reporter prints that
310
- # full path/title on failure, so the ms-NN + issue are already in the
311
- # job's own output; the failure-hint step below just spells out the two
312
- # possible causes so whoever triages it doesn't have to rediscover them.
313
- #
314
- # #2180: the `npm run test:acceptance` step now runs THROUGH `coord
315
- # acceptance run --all --ci` (#2164) instead of calling Playwright
316
- # directly. Same suite, same reporter under the hood — the wrapper's
317
- # web-playwright driver shape appends `--reporter=json` and reads
318
- # PLAYWRIGHT_JSON_OUTPUT_FILE itself (coord/acceptance_drivers.py) — but
319
- # now a test-id listed in a manifest's `expected_red:` that fails does not
320
- # redden this job (a sealed slice authored red before its fix exists,
321
- # #2164's whole point), while one that unexpectedly PASSES does, loudly
322
- # (#1965's vacuous-assertion case). Before this, ms-51 going red for any
323
- # reason failed this job exactly the same as every other kind of red —
324
- # there was no way to merge a red-by-design slice without `--force-merge`.
325
- # .github/coord-ci-acceptance.yml's header explains why this points at a
326
- # CI-local config instead of the fleet's real ~/.coord/coordinator.yml.
327
- acceptance:
328
- runs-on: ubuntu-latest
329
- defaults:
330
- run:
331
- working-directory: coord/dashboard/webapp
332
- steps:
333
- - uses: actions/checkout@v4
334
- - uses: actions/setup-python@v5
281
+ # #2393: `npx playwright install chromium --with-deps` was the step
282
+ # that hung 30+ minutes with no automatic recovery (2026-08-18, this
283
+ # job and `acceptance`'s) — a fresh ~300MB Chromium download from
284
+ # Playwright's CDN on EVERY run, no caching, so every run was fully
285
+ # exposed to any network hiccup on that path. Caching the browser
286
+ # binary means most runs skip the download-heavy half entirely; only
287
+ # a cache miss (a `@playwright/test` version bump) pays the network
288
+ # cost. `install-deps` (apt-only, no download) still runs on a cache
289
+ # hit so a runner image without chromium's OS libs preinstalled
290
+ # doesn't break.
291
+ - name: Cache Playwright browsers
292
+ id: playwright-cache
293
+ uses: actions/cache@v4
335
294
  with:
336
- python-version: "3.12"
337
- - working-directory: .
338
- run: pip install -e ".[dev]"
339
- - uses: actions/setup-node@v4
340
- with:
341
- node-version: '20'
342
- - run: npm ci
343
- - run: npx playwright install chromium --with-deps
344
- - name: coord acceptance run --all --ci (web-playwright route, ms-51)
345
- working-directory: .
346
- run: >-
347
- coord acceptance run --repo claude-coordinator --all --ci
348
- --for-path coord/dashboard/webapp/src/App.tsx
349
- --config .github/coord-ci-acceptance.yml --path .
350
- - name: A red result here is attributable, not a mystery
351
- if: failure()
295
+ path: ~/.cache/ms-playwright
296
+ key: ${{ runner.os }}-playwright-${{ hashFiles('coord/dashboard/webapp/package-lock.json') }}
297
+ - name: Install Playwright + OS deps (cache miss)
298
+ if: steps.playwright-cache.outputs.cache-hit != 'true'
299
+ # #2393 follow-up: the Chromium download from Playwright's CDN has hung
300
+ # (not merely failed) multiple times in one day, past what caching alone
301
+ # can paper over on a cache-miss run (a version bump, or the very first
302
+ # run ever). A short per-attempt timeout + retry turns "hang for the
303
+ # whole 20-minute job budget" into "fail fast and try again" — transient
304
+ # CDN/mirror flakiness usually clears within a couple of attempts.
352
305
  run: |
353
- echo "::error::The sealed acceptance suite (tests/acceptance/ms-NN/) failed."
354
- echo "The failing spec's path and 'describe' title name the milestone (ms-NN) and the issue that slice was authored for (see tests/acceptance/ms-NN/manifest.yml)."
355
- echo "Two causes, and only one fix is right:"
356
- echo " 1. The app regressed against an still-accurate contract -> fix the app."
357
- echo " 2. Legitimate app evolution made the contract stale (e.g. #1547 vs ms-51) -> amend the contract: coord acceptance mock <repo> <tracking_issue> --amend '<what changed and why>'"
358
- echo "Do not silence this job (continue-on-error, skip, etc.) instead of doing one of the above -- that is exactly how ms-51 rotted unnoticed through #1547-#1818 (#1950)."
306
+ for attempt in 1 2 3; do
307
+ echo "Playwright install attempt $attempt/3..."
308
+ if timeout 300 npx playwright install chromium --with-deps; then
309
+ echo "Playwright install succeeded on attempt $attempt"
310
+ exit 0
311
+ fi
312
+ echo "Playwright install attempt $attempt failed or timed out after 5m"
313
+ sleep 10
314
+ done
315
+ echo "Playwright install failed after 3 attempts"
316
+ exit 1
317
+ - name: Install Playwright OS deps only (cache hit)
318
+ if: steps.playwright-cache.outputs.cache-hit == 'true'
319
+ run: npx playwright install-deps chromium
320
+ - run: npm run test:e2e
321
+
322
+ # #2389: the SEALED web-playwright acceptance suite (ms-51) moved to its
323
+ # own workflow, acceptance-web.yml, with a `paths:` filter scoped to
324
+ # `coord/dashboard/webapp/**`/`tests/acceptance/**` — mirroring how
325
+ # cargo-test.yml already gates the tui-tuidriver route on `tui/**`. This
326
+ # job was unconditionally installing Node + a real Chromium on every
327
+ # push/PR to this repo regardless of what changed, including pure-Rust
328
+ # `tui/` diffs that have nothing to do with the webapp (#1950's original
329
+ # "cheapest fix" traded diff-scoping for coverage-by-default; #2389
330
+ # restores diff-scoping now that the Rust side has its own equivalent
331
+ # gate). Not in this repo's required-checks list, so this move changes
332
+ # nothing about what blocks a merge.
359
333
 
360
334
  # #1550: `coord/dashboard/webapp/src/api/generated.ts` is produced by
361
335
  # `scripts/codegen.py` from the dashboard's OpenAPI spec
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.145
3
+ Version: 0.5.147
4
4
  Summary: Coordinate Claude Code workers across multiple machines and repos.
5
5
  Author-email: John Donaghy <johnfdonaghy@gmail.com>
6
6
  License-Expression: LicenseRef-FSL-1.1-MIT
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.145
3
+ Version: 0.5.147
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
@@ -16,6 +16,7 @@ pyproject.toml
16
16
  .githooks/post-merge
17
17
  .github/coord-ci-acceptance.yml
18
18
  .github/ISSUE_TEMPLATE/bug_report.md
19
+ .github/workflows/acceptance-web.yml
19
20
  .github/workflows/auto-release.yml
20
21
  .github/workflows/cargo-test.yml
21
22
  .github/workflows/publish.yml
@@ -9,6 +9,7 @@
9
9
  ".githooks/post-merge",
10
10
  ".github/ISSUE_TEMPLATE/bug_report.md",
11
11
  ".github/coord-ci-acceptance.yml",
12
+ ".github/workflows/acceptance-web.yml",
12
13
  ".github/workflows/auto-release.yml",
13
14
  ".github/workflows/cargo-test.yml",
14
15
  ".github/workflows/publish.yml",
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.145",
2
+ "tag": "0.5.147",
3
3
  "distance": 0,
4
- "node": "g2c4967683cf16fc253e1af6018babca87d6eb43a",
4
+ "node": "gbf9c09b2b36fbbb594b25c03bc8ef7844050cd84",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-18"
@@ -692,12 +692,22 @@ def escalate_run(repo: str, issue: int, dismiss: bool, config_path: Path) -> Non
692
692
  "option or a drive-queue-only card; see the command's docstring."
693
693
  ),
694
694
  )
695
+ @click.option(
696
+ "--list", "list_only", is_flag=True, default=False,
697
+ help=(
698
+ "Print REPO ISSUE's numbered option list (same options "
699
+ "`coord report run decisions`/`coord escalate list` would show for "
700
+ "this row) and exit — runs nothing. #2375: the discovery path the "
701
+ "bare/indexed invocation deliberately doesn't provide."
702
+ ),
703
+ )
695
704
  @_CONFIG_OPTION
696
705
  def decide(
697
706
  repo: str,
698
707
  issue: int,
699
708
  option_index: int | None,
700
709
  dismiss: bool,
710
+ list_only: bool,
701
711
  config_path: Path,
702
712
  ) -> None:
703
713
  """Run one option from REPO ISSUE's `decisions` report card.
@@ -724,8 +734,16 @@ def decide(
724
734
  reappearance-or-not on the next `coord report run decisions` is the
725
735
  confirmation signal, not a second "resolved" state that could go
726
736
  stale or lie.
737
+
738
+ #2375: `--list` prints this same card's numbered options and stops —
739
+ the discovery path for picking OPTION_INDEX without running anything.
740
+ It is a NEW flag, not a change to the bare/no-index contract above:
741
+ that contract (#2370's own shipped acceptance criterion — no
742
+ OPTION_INDEX behaves identically to `coord escalate run`) stays exactly
743
+ as it is, since the TUI's "Recommended" click and #2370's acceptance
744
+ test both depend on it firing immediately.
727
745
  """
728
- from coord.reports import find_decision # noqa: PLC0415
746
+ from coord.reports import find_decision, format_option_cell # noqa: PLC0415
729
747
  from coord.state import dismiss_drive_escalation # noqa: PLC0415
730
748
 
731
749
  card = find_decision(repo, issue)
@@ -736,6 +754,12 @@ def decide(
736
754
  if not options:
737
755
  raise click.ClickException(f"decision card for {repo} #{issue} has no options")
738
756
 
757
+ if list_only:
758
+ click.echo(f"{repo} #{issue}: {len(options)} option(s)")
759
+ for i, opt in enumerate(options):
760
+ click.echo(f" {i}: {format_option_cell(opt)}")
761
+ return
762
+
739
763
  if option_index is None:
740
764
  index = next(
741
765
  (i for i, opt in enumerate(options) if opt.get("recommended")), 0
@@ -60,6 +60,13 @@ TEST_AUTHOR_DENY_COMMANDS: list[str] = [
60
60
  "Bash(gh *)",
61
61
  ]
62
62
 
63
+ # #1172 follow-up: how many versioned forks (`-v2`, `-v3`, ...) to probe
64
+ # before giving up on finding a JIT slice's next re-authoring branch. Kept
65
+ # small and finite — a real loop here means something is genuinely wrong
66
+ # (not a legitimate string of re-authoring dispatches), and #1172's own
67
+ # guard should surface that as a loud, readable error rather than spin.
68
+ MAX_REAUTHOR_BRANCH_ATTEMPTS = 20
69
+
63
70
  TEST_AUTHOR_SYSTEM_PROMPT = """\
64
71
  You are an INDEPENDENT acceptance-test author dispatched by the coordinator.
65
72
 
@@ -538,20 +545,39 @@ def dispatch_test_author(
538
545
  branch = target_branch or f"issue-{tracking_issue}-{_slugify(assignment_title)}"
539
546
 
540
547
  if github_ops.pr_is_merged(repo_cfg.github, branch):
541
- raise RuntimeError(
542
- f"branch {branch!r} already has a merged PR dispatching would "
543
- "push new commits onto a dead branch with nothing left to open "
544
- "a PR against them (#1172). "
545
- + (
546
- f"Issue #{issue_number}'s JIT slice already landed; if it "
547
- "needs more tests, this needs a fresh branch (not "
548
- "auto-forked yet) do not retry as-is."
549
- if issue_number is not None else
550
- "The milestone's Gate-A suite PR already merged; if the "
551
- "suite needs more work, open a fresh branch by hand — do "
552
- "not retry as-is."
548
+ if issue_number is not None:
549
+ # #1172's own stated fix scope was "refuse (or fork a fresh
550
+ # branch)" only the refuse half shipped. This is the other
551
+ # half: a genuine re-authoring dispatch (e.g. a Gate-A contract
552
+ # `--amend`, docs/ORACLE_LOOP.md's "amend the contract -> the
553
+ # test-author updates the affected slice") has nowhere else to
554
+ # push once the slice's own PR has merged, so fork onto the next
555
+ # unmerged versioned branch instead of failing outright.
556
+ base_branch = branch
557
+ for suffix in range(2, MAX_REAUTHOR_BRANCH_ATTEMPTS + 1):
558
+ candidate = f"{base_branch}-v{suffix}"
559
+ if not github_ops.pr_is_merged(repo_cfg.github, candidate):
560
+ branch = candidate
561
+ target_branch = candidate
562
+ break
563
+ else:
564
+ raise RuntimeError(
565
+ f"branch {base_branch!r} and its next "
566
+ f"{MAX_REAUTHOR_BRANCH_ATTEMPTS - 1} versioned forks "
567
+ "(-v2..-v"
568
+ f"{MAX_REAUTHOR_BRANCH_ATTEMPTS}) all already have "
569
+ "merged PRs (#1172) — that many re-authoring rounds on "
570
+ "one slice is not a normal amend/re-sync cycle; open a "
571
+ "fresh branch by hand and investigate."
572
+ )
573
+ else:
574
+ raise RuntimeError(
575
+ f"branch {branch!r} already has a merged PR — dispatching "
576
+ "would push new commits onto a dead branch with nothing "
577
+ "left to open a PR against them (#1172). The milestone's "
578
+ "Gate-A suite PR already merged; if the suite needs more "
579
+ "work, open a fresh branch by hand — do not retry as-is."
553
580
  )
554
- )
555
581
 
556
582
  deny_commands = test_author_deny_commands(config, repo_name)
557
583