code-coordinator 0.5.121__tar.gz → 0.5.125__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 (858) hide show
  1. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/SOURCES.txt +2 -0
  4. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/scm_file_list.json +2 -0
  5. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/scm_version.json +2 -2
  6. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/agent.py +11 -0
  7. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/ci_store.py +27 -4
  8. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/drive_queue.py +35 -12
  9. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/plan_followup.py +48 -17
  10. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/db.py +10 -1
  11. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/drive.py +22 -2
  12. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/drive_queue.py +71 -0
  13. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/drive_state.py +8 -0
  14. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/merge_queue.py +179 -8
  15. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/review.py +133 -0
  16. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/split_work.py +13 -1
  17. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/coord-test-runner.sh +13 -2
  18. code_coordinator-0.5.125/tests/acceptance/ms-65/board_tabs_2282.rs +852 -0
  19. code_coordinator-0.5.125/tests/acceptance/ms-65/manifest.yml +137 -0
  20. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_ci_store.py +12 -2
  21. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_drive_queue.py +46 -0
  22. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_fix_headless_review.py +102 -0
  23. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_drive.py +93 -0
  24. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_drive_queue.py +127 -0
  25. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_merge_queue.py +224 -0
  26. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_operational_defaults.py +26 -0
  27. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review.py +220 -0
  28. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/tests/acceptance.rs +1 -0
  29. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/tests/fixtures/board_sample.json +1 -0
  30. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.claude/commands/board.md +0 -0
  31. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.claude/commands/complete-session.md +0 -0
  32. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.claude/commands/coordinator.md +0 -0
  33. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.githooks/_lib.sh +0 -0
  34. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.githooks/post-checkout +0 -0
  35. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.githooks/post-commit +0 -0
  36. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.githooks/post-merge +0 -0
  37. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  38. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.github/coord-ci-acceptance.yml +0 -0
  39. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.github/workflows/auto-release.yml +0 -0
  40. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.github/workflows/cargo-test.yml +0 -0
  41. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.github/workflows/publish.yml +0 -0
  42. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.github/workflows/release-tui.yml +0 -0
  43. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.github/workflows/test.yml +0 -0
  44. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/.gitignore +0 -0
  45. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/CLAUDE.md +0 -0
  46. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/GOAL.md +0 -0
  47. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/LICENSE +0 -0
  48. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/MANIFEST.in +0 -0
  49. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/README.md +0 -0
  50. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/dependency_links.txt +0 -0
  51. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/entry_points.txt +0 -0
  52. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/requires.txt +0 -0
  53. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/code_coordinator.egg-info/top_level.txt +0 -0
  54. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/__init__.py +0 -0
  55. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/_board_mapping.py +0 -0
  56. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/acceptance.py +0 -0
  57. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/acceptance_drivers.py +0 -0
  58. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/agent_app.py +0 -0
  59. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/agent_update.py +0 -0
  60. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/agents/opencode/.gitignore +0 -0
  61. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/agents/opencode/agents/work.md +0 -0
  62. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/agents/opencode/routing.jsonc +0 -0
  63. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/audit.py +0 -0
  64. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/auto_loop.py +0 -0
  65. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/block_log.py +0 -0
  66. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/board_bool_guard.py +0 -0
  67. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/board_service.py +0 -0
  68. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/board_wire.py +0 -0
  69. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/brain.py +0 -0
  70. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/branch_model.py +0 -0
  71. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/bug_intake.py +0 -0
  72. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/cargo_cache.py +0 -0
  73. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/ci_github.py +0 -0
  74. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/claim.py +0 -0
  75. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/cli.py +0 -0
  76. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/client.py +0 -0
  77. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/__init__.py +0 -0
  78. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/_common.py +0 -0
  79. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/acceptance.py +0 -0
  80. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/agent_ops.py +0 -0
  81. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/audit.py +0 -0
  82. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/chat.py +0 -0
  83. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/dispatch.py +0 -0
  84. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/dispatch_workers.py +0 -0
  85. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/drive.py +0 -0
  86. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/gate_a.py +0 -0
  87. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/gates.py +0 -0
  88. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/issues.py +0 -0
  89. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/lifecycle.py +0 -0
  90. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/merge.py +0 -0
  91. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/milestone.py +0 -0
  92. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/plans.py +0 -0
  93. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/portal.py +0 -0
  94. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/release.py +0 -0
  95. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/repo.py +0 -0
  96. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/report.py +0 -0
  97. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/review.py +0 -0
  98. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/scorecard.py +0 -0
  99. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/sessions.py +0 -0
  100. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/setup.py +0 -0
  101. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/status.py +0 -0
  102. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/terminal.py +0 -0
  103. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/test_gate.py +0 -0
  104. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/commands/tui.py +0 -0
  105. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/comments.py +0 -0
  106. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/config.py +0 -0
  107. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/config_reload.py +0 -0
  108. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/conflict_fix.py +0 -0
  109. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dao.py +0 -0
  110. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/__init__.py +0 -0
  111. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/fixture.py +0 -0
  112. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/index.html +0 -0
  113. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/server.py +0 -0
  114. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/terminal.py +0 -0
  115. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/.gitignore +0 -0
  116. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/components.json +0 -0
  117. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
  118. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  119. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
  120. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
  121. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  122. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  123. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  124. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  125. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  126. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/index.html +0 -0
  127. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  128. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/sw.js +0 -0
  129. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  130. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  131. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  132. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  133. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  134. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  135. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  136. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  137. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  138. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  139. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/eslint.config.js +0 -0
  140. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/index.html +0 -0
  141. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  142. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/package-lock.json +0 -0
  143. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/package.json +0 -0
  144. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  145. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/playwright.config.ts +0 -0
  146. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/postcss.config.js +0 -0
  147. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  148. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  149. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  150. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/App.tsx +0 -0
  151. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/api/client.ts +0 -0
  152. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  153. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  154. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  155. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  156. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  157. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  158. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  159. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  160. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  161. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  162. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  163. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  164. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  165. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  166. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  167. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  168. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  169. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  170. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  171. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  172. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  173. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  174. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  175. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  176. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  177. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  178. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  179. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  180. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  181. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  182. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  183. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  184. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  185. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  186. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  187. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/index.css +0 -0
  188. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  189. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  190. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/main.tsx +0 -0
  191. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  192. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  193. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  194. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  195. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  196. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  197. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  198. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  199. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  200. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  201. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  202. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  203. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  204. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  205. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  206. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  207. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  208. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  209. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  210. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  211. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  212. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  213. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  214. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/tailwind.config.js +0 -0
  215. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/tsconfig.json +0 -0
  216. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  217. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dashboard/webapp/vite.config.ts +0 -0
  218. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dead_end.py +0 -0
  219. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/README.md +0 -0
  220. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-agent.service +0 -0
  221. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-db-backup.service +0 -0
  222. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-db-backup.sh +0 -0
  223. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-db-backup.timer +0 -0
  224. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-drive-queue.service +0 -0
  225. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-drive-queue.timer +0 -0
  226. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-notify.service +0 -0
  227. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-notify.timer +0 -0
  228. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-release-propagate.service +0 -0
  229. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-release-propagate.timer +0 -0
  230. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-release-window.service +0 -0
  231. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-release-window.timer +0 -0
  232. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-serve.service +0 -0
  233. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-web-dist-build.service +0 -0
  234. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-web-dist-build.timer +0 -0
  235. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy/coord-web.service +0 -0
  236. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy_manifest.py +0 -0
  237. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deploy_units.py +0 -0
  238. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/deps.py +0 -0
  239. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/diagnose.py +0 -0
  240. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dispatch.py +0 -0
  241. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/dist_name.py +0 -0
  242. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/events.py +0 -0
  243. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/failure_class.py +0 -0
  244. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/filelock.py +0 -0
  245. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/fleet_config_health.py +0 -0
  246. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/freshness.py +0 -0
  247. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/gate_a.py +0 -0
  248. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/gate_b.py +0 -0
  249. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/gate_snapshot.py +0 -0
  250. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/gates.py +0 -0
  251. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/github_ops.py +0 -0
  252. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/goal.py +0 -0
  253. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/graph_health.py +0 -0
  254. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/__init__.py +0 -0
  255. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/aggregate.py +0 -0
  256. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/__init__.py +0 -0
  257. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/agent_install.py +0 -0
  258. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/cargo_targets.py +0 -0
  259. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/claude_binary.py +0 -0
  260. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/deploy_lane_facts.py +0 -0
  261. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/disk.py +0 -0
  262. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/fleet_board.py +0 -0
  263. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  264. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/fleet_phantom.py +0 -0
  265. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/fleet_unit_drift.py +0 -0
  266. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/graph.py +0 -0
  267. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/graphify_cli.py +0 -0
  268. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/index_lock.py +0 -0
  269. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/plan_usage.py +0 -0
  270. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/repo_state.py +0 -0
  271. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/spawned_coord.py +0 -0
  272. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/timer_active.py +0 -0
  273. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/toolchain.py +0 -0
  274. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/unit_drift.py +0 -0
  275. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/unit_enablement.py +0 -0
  276. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/checks/worktrees.py +0 -0
  277. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/cli.py +0 -0
  278. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/context.py +0 -0
  279. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/fleet_snapshot.py +0 -0
  280. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/models.py +0 -0
  281. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/pypi.py +0 -0
  282. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/registry.py +0 -0
  283. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/render.py +0 -0
  284. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/health/units.py +0 -0
  285. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/hooks.py +0 -0
  286. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/housekeeping.py +0 -0
  287. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/interactive.py +0 -0
  288. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/issue_store.py +0 -0
  289. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/liveness_auditor.py +0 -0
  290. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/machine_pause.py +0 -0
  291. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/milestone_chat.py +0 -0
  292. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/milestone_dispatch.py +0 -0
  293. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/milestone_gate.py +0 -0
  294. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/milestone_order.py +0 -0
  295. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/mock_author.py +0 -0
  296. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/models.py +0 -0
  297. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/network.py +0 -0
  298. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/new_issue_chat.py +0 -0
  299. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/__init__.py +0 -0
  300. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/baseline.py +0 -0
  301. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/cli.py +0 -0
  302. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/collect.py +0 -0
  303. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/digest.py +0 -0
  304. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/models.py +0 -0
  305. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/predicate.py +0 -0
  306. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/service.py +0 -0
  307. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/store.py +0 -0
  308. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notifier/transport.py +0 -0
  309. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/notify.py +0 -0
  310. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/openapi.py +0 -0
  311. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/overlap_fence.py +0 -0
  312. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/overlap_predict.py +0 -0
  313. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/parentage.py +0 -0
  314. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/parentage_github.py +0 -0
  315. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/pipeline.py +0 -0
  316. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/plan_parser.py +0 -0
  317. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/plans.py +0 -0
  318. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/platform_paths.py +0 -0
  319. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/portal_bridge.py +0 -0
  320. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/portal_store.py +0 -0
  321. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/portal_sync.py +0 -0
  322. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/pr_body_lint.py +0 -0
  323. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/prereqs.py +0 -0
  324. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/progress.py +0 -0
  325. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/providers/__init__.py +0 -0
  326. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/providers/base.py +0 -0
  327. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/providers/claude.py +0 -0
  328. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/providers/claude_pty.py +0 -0
  329. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/providers/opencode.py +0 -0
  330. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/queue_diagnose.py +0 -0
  331. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/reconcile.py +0 -0
  332. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/refine_chat.py +0 -0
  333. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/release_cordon.py +0 -0
  334. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/release_propagate.py +0 -0
  335. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/release_verify.py +0 -0
  336. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/release_window.py +0 -0
  337. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/repo_edit.py +0 -0
  338. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/repo_onboard.py +0 -0
  339. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/reports.py +0 -0
  340. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/revalidate.py +0 -0
  341. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/scorecard.py +0 -0
  342. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/serve_app.py +0 -0
  343. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/skills/portal-followup/SKILL.md +0 -0
  344. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/skills/update-issue/SKILL.md +0 -0
  345. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/smoke.py +0 -0
  346. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/spend_ceiling.py +0 -0
  347. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/stage_projection.py +0 -0
  348. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/state.py +0 -0
  349. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/test_author.py +0 -0
  350. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/test_chat.py +0 -0
  351. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/test_orchestrator.py +0 -0
  352. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/test_report.py +0 -0
  353. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/tui_release.py +0 -0
  354. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/usage.py +0 -0
  355. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/usage_limits.py +0 -0
  356. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/usage_rollup.py +0 -0
  357. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coord/worker_events.py +0 -0
  358. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/coordinator.example.yml +0 -0
  359. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-agent.service +0 -0
  360. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-db-backup.service +0 -0
  361. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-db-backup.sh +0 -0
  362. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-db-backup.timer +0 -0
  363. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-drive-queue.service +0 -0
  364. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-drive-queue.timer +0 -0
  365. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-notify.service +0 -0
  366. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-notify.timer +0 -0
  367. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-release-propagate.service +0 -0
  368. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-release-propagate.timer +0 -0
  369. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-release-window.service +0 -0
  370. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-release-window.timer +0 -0
  371. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-serve.service +0 -0
  372. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-web-dist-build.service +0 -0
  373. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-web-dist-build.sh +0 -0
  374. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-web-dist-build.timer +0 -0
  375. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-web-rollback.sh +0 -0
  376. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/coord-web.service +0 -0
  377. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/deploy/node-shim.sh +0 -0
  378. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/AGENT_OPERATIONS.md +0 -0
  379. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/ARCHITECTURE.md +0 -0
  380. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/ARCH_SECURITY_GATES.md +0 -0
  381. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/COCKPIT.md +0 -0
  382. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/CONTROL_CENTER.md +0 -0
  383. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/COST_DISCIPLINE.md +0 -0
  384. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/CROSS_PLATFORM.md +0 -0
  385. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/CUSTOMER_PORTAL.md +0 -0
  386. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/DRIVE_QUEUE.md +0 -0
  387. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/EPHEMERAL_WORKERS.md +0 -0
  388. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/FORGE_MIGRATION.md +0 -0
  389. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/GRAPHIFY_SETUP.md +0 -0
  390. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/ISSUE_GUIDANCE.md +0 -0
  391. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/MAC_MINI.md +0 -0
  392. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  393. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/NOTIFIER.md +0 -0
  394. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/OPENCODE_VERIFICATION.md +0 -0
  395. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/OPERATING_GOTCHAS.md +0 -0
  396. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/ORACLE_LOOP.md +0 -0
  397. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/PHONE_WEBAPP.md +0 -0
  398. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/PIPELINE_V2.md +0 -0
  399. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/PLATFORM_EVOLUTION.md +0 -0
  400. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/SECOND_BACKEND.md +0 -0
  401. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/STORE_SERVICE.md +0 -0
  402. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  403. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/WEB_CONTROL_CENTER.md +0 -0
  404. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/mocks/web/README.md +0 -0
  405. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/mocks/web/_tokens.css +0 -0
  406. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/mocks/web/issue-detail.html +0 -0
  407. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/mocks/web/pipeline-narrow.html +0 -0
  408. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/docs/mocks/web/pipeline-wide.html +0 -0
  409. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/graphify-out/.gitignore +0 -0
  410. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/install-agent.sh +0 -0
  411. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/pyproject.toml +0 -0
  412. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/audit_review_verdict_overrides.py +0 -0
  413. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  414. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/build-worker-image.sh +0 -0
  415. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/coordinator-machine.py +0 -0
  416. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/epic-down.sh +0 -0
  417. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/epic-up.sh +0 -0
  418. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/preflight.sh +0 -0
  419. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/provision-worker.sh +0 -0
  420. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  421. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  422. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/azure-workers/verify-github-token.sh +0 -0
  423. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/codegen.py +0 -0
  424. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/drive-batch.sh +0 -0
  425. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/gen_board_fixture.py +0 -0
  426. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/next_release_tag.py +0 -0
  427. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/run_tests_in_populated_home.sh +0 -0
  428. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/run_tests_without_gh.sh +0 -0
  429. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/smoke_437_interactive.py +0 -0
  430. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/verify_878_review_capture.py +0 -0
  431. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/verify_release_published.py +0 -0
  432. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/scripts/verify_release_wheel.py +0 -0
  433. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/setup.cfg +0 -0
  434. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/SMOKE_SET.md +0 -0
  435. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/__init__.py +0 -0
  436. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  437. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-33/contract.md +0 -0
  438. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-33/manifest.yml +0 -0
  439. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  440. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  441. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  442. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  443. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-37/conftest.py +0 -0
  444. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-37/contract.md +0 -0
  445. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-37/manifest.yml +0 -0
  446. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  447. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  448. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/contract.md +0 -0
  449. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/manifest.yml +0 -0
  450. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  451. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  452. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  453. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  454. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  455. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  456. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  457. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  458. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  459. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  460. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-51/contract.md +0 -0
  461. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  462. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  463. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-51/manifest.yml +0 -0
  464. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  465. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-51/tsconfig.json +0 -0
  466. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/contract.md +0 -0
  467. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  468. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  469. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  470. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  471. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  472. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  473. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  474. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  475. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  476. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/conftest.py +0 -0
  477. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/board-pipeline-basic.json +0 -0
  478. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  479. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  480. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  481. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  482. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/playwright/all_pass.json +0 -0
  483. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  484. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/playwright/mixed_fail.json +0 -0
  485. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  486. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  487. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/playwright/skip.json +0 -0
  488. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/playwright/truncated.json +0 -0
  489. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  490. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  491. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  492. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  493. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  494. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  495. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  496. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  497. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_acceptance.py +0 -0
  498. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_acceptance_drivers.py +0 -0
  499. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent.py +0 -0
  500. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_api_error.py +0 -0
  501. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_app.py +0 -0
  502. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_branch_base.py +0 -0
  503. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_branch_capture.py +0 -0
  504. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_config_free_1712.py +0 -0
  505. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_deploy_units_endpoint.py +0 -0
  506. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_dirty_worktree.py +0 -0
  507. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_graph_self_heal.py +0 -0
  508. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_health_h3.py +0 -0
  509. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_idle_restart.py +0 -0
  510. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_push_failure.py +0 -0
  511. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_reap.py +0 -0
  512. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_repos_and_pull.py +0 -0
  513. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_restart_services_endpoint.py +0 -0
  514. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_startup_diagnostics.py +0 -0
  515. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_update.py +0 -0
  516. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_update_bluegreen.py +0 -0
  517. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_usage_limit.py +0 -0
  518. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_agent_zero_commit.py +0 -0
  519. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_ambient_home_isolation.py +0 -0
  520. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_approve_reject_plan.py +0 -0
  521. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_approve_usage_gate.py +0 -0
  522. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_assignment_already_recorded_daemon.py +0 -0
  523. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_audit_log.py +0 -0
  524. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_audit_outcome.py +0 -0
  525. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_audit_query.py +0 -0
  526. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_auto_loop.py +0 -0
  527. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_auto_release_publish_2035.py +0 -0
  528. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_base_checkout_restore.py +0 -0
  529. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_block_log.py +0 -0
  530. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_board_cap_762.py +0 -0
  531. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_board_fixture.py +0 -0
  532. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_board_read_path.py +0 -0
  533. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_board_service.py +0 -0
  534. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_board_state.py +0 -0
  535. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_board_wire.py +0 -0
  536. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_brain.py +0 -0
  537. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_branch_model.py +0 -0
  538. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_bug_intake.py +0 -0
  539. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_build_worker_image_env_update.py +0 -0
  540. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cargo_cache.py +0 -0
  541. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_ci_acceptance_gate_1950.py +0 -0
  542. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_ci_parity_2091.py +0 -0
  543. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_claim.py +0 -0
  544. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_acceptance.py +0 -0
  545. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_assign.py +0 -0
  546. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  547. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_assign_interactive_remote.py +0 -0
  548. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_assign_provider.py +0 -0
  549. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  550. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_audit.py +0 -0
  551. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_chat_continue.py +0 -0
  552. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_diagnose_config_provenance.py +0 -0
  553. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_diagnose_graph.py +0 -0
  554. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_doctor.py +0 -0
  555. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_doctor_config_free_1801.py +0 -0
  556. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  557. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_drive.py +0 -0
  558. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_escalate.py +0 -0
  559. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_gate_a.py +0 -0
  560. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_install_drift.py +0 -0
  561. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_install_skills.py +0 -0
  562. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_issue_create_label.py +0 -0
  563. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_issue_reopen.py +0 -0
  564. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_merge.py +0 -0
  565. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_assign.py +0 -0
  566. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_capture.py +0 -0
  567. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_chat_add_child.py +0 -0
  568. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_dispatch.py +0 -0
  569. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_gate_b.py +0 -0
  570. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_gate_c.py +0 -0
  571. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_order.py +0 -0
  572. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  573. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_milestone_ship.py +0 -0
  574. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_network.py +0 -0
  575. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_new_issue_chat.py +0 -0
  576. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_plans.py +0 -0
  577. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_portal.py +0 -0
  578. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_pull_artifact.py +0 -0
  579. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_queue.py +0 -0
  580. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_reattach_sessions.py +0 -0
  581. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_refine_board.py +0 -0
  582. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_release_preflight.py +0 -0
  583. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_release_propagate.py +0 -0
  584. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_release_window.py +0 -0
  585. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_repo_2220.py +0 -0
  586. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_scorecard.py +0 -0
  587. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_set_review_findings.py +0 -0
  588. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_status_advisory_terminal.py +0 -0
  589. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_status_merge_queue.py +0 -0
  590. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_status_provider.py +0 -0
  591. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_status_review_finalizing.py +0 -0
  592. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_status_test_failed_tag.py +0 -0
  593. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_status_usage_limit.py +0 -0
  594. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_sync_comments_873.py +0 -0
  595. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_test_plan.py +0 -0
  596. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_track.py +0 -0
  597. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_tui_update.py +0 -0
  598. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cli_wait.py +0 -0
  599. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_client_base_install.py +0 -0
  600. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_comments.py +0 -0
  601. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_completion_summary.py +0 -0
  602. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_config.py +0 -0
  603. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_config_acceptance.py +0 -0
  604. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_config_audit.py +0 -0
  605. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_config_pricing.py +0 -0
  606. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  607. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_config_usage_gate.py +0 -0
  608. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_conflict_fix.py +0 -0
  609. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_conflict_fix_semantic.py +0 -0
  610. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_coord_test.py +0 -0
  611. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_coord_test_runner_baseline.py +0 -0
  612. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_coord_test_runner_routing.py +0 -0
  613. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_coord_test_runner_toolchain.py +0 -0
  614. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_coord_web_sse_restart_live.py +0 -0
  615. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_coordinator_machine.py +0 -0
  616. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_cross_platform_imports.py +0 -0
  617. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dashboard.py +0 -0
  618. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dashboard_fixture.py +0 -0
  619. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dashboard_terminal.py +0 -0
  620. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dashboard_terminal_live.py +0 -0
  621. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_db.py +0 -0
  622. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dead_end.py +0 -0
  623. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deploy_coord_db_backup.py +0 -0
  624. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deploy_coord_web_dist.py +0 -0
  625. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deploy_coord_web_rollback.py +0 -0
  626. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deploy_drive_queue_unit.py +0 -0
  627. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deploy_manifest.py +0 -0
  628. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deploy_units_lane.py +0 -0
  629. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deploy_web_unit.py +0 -0
  630. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_deps.py +0 -0
  631. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_diagnose.py +0 -0
  632. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dispatch.py +0 -0
  633. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dispatch_target_validation.py +0 -0
  634. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_dist_name.py +0 -0
  635. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_done_housekeeping.py +0 -0
  636. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_drive_state.py +0 -0
  637. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_drive_tmux.py +0 -0
  638. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_epic_up_capability_detection.py +0 -0
  639. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  640. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_epic_up_image_provenance.py +0 -0
  641. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_errors.py +0 -0
  642. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_events.py +0 -0
  643. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_failure_class.py +0 -0
  644. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_filelock.py +0 -0
  645. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  646. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_fix_of_force_override.py +0 -0
  647. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_fleet_config_health.py +0 -0
  648. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_fleet_health_probes.py +0 -0
  649. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_fleet_health_snapshot.py +0 -0
  650. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_freshness.py +0 -0
  651. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_gate_a.py +0 -0
  652. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_gate_b.py +0 -0
  653. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_gate_snapshot_staleness.py +0 -0
  654. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_gates.py +0 -0
  655. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  656. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_generated_types_fixture.py +0 -0
  657. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_github_ops.py +0 -0
  658. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_goal.py +0 -0
  659. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_graph_health.py +0 -0
  660. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_graph_selfheal_absent_2237.py +0 -0
  661. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_handoff.py +0 -0
  662. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_checks.py +0 -0
  663. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_cli.py +0 -0
  664. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_cli_graph.py +0 -0
  665. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_config.py +0 -0
  666. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_context.py +0 -0
  667. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_deploy_lane_facts.py +0 -0
  668. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_incident_regression.py +0 -0
  669. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_pypi.py +0 -0
  670. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_registry.py +0 -0
  671. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_timer_active.py +0 -0
  672. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_toolchain.py +0 -0
  673. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_unit_drift.py +0 -0
  674. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_health_unit_enablement.py +0 -0
  675. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_hooks.py +0 -0
  676. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_human_attended_437.py +0 -0
  677. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_init.py +0 -0
  678. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_integration.py +0 -0
  679. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_interactive_briefing_echo.py +0 -0
  680. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_interactive_prefill_state.py +0 -0
  681. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_interactive_session_relaunch.py +0 -0
  682. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_interactive_test_verdict_backstop.py +0 -0
  683. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_interactive_token_attribution.py +0 -0
  684. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_interactive_worktree.py +0 -0
  685. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_issue_store_seam.py +0 -0
  686. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_liveness_auditor.py +0 -0
  687. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_liveness_notify.py +0 -0
  688. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_machine_pause.py +0 -0
  689. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_merge_verify.py +0 -0
  690. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_milestone_chat.py +0 -0
  691. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_milestone_dispatch.py +0 -0
  692. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_milestone_gate.py +0 -0
  693. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_milestone_order.py +0 -0
  694. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_milestone_seam.py +0 -0
  695. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_mock_author.py +0 -0
  696. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_model_tiering.py +0 -0
  697. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_models.py +0 -0
  698. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_models_config_labels.py +0 -0
  699. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_needs_attention.py +0 -0
  700. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_network.py +0 -0
  701. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_new_issue_chat.py +0 -0
  702. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_next_release_tag.py +0 -0
  703. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_no_direct_gh_calls.py +0 -0
  704. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_node_shim.py +0 -0
  705. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_baseline.py +0 -0
  706. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_cli.py +0 -0
  707. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_collect.py +0 -0
  708. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_config.py +0 -0
  709. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_drive_seam.py +0 -0
  710. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_isolation.py +0 -0
  711. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_predicate.py +0 -0
  712. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_quiet_hours.py +0 -0
  713. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notifier_service.py +0 -0
  714. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notify.py +0 -0
  715. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_notify_drain.py +0 -0
  716. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_openapi.py +0 -0
  717. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_overlap_fence.py +0 -0
  718. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_overlap_predict.py +0 -0
  719. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_packaged_deploy_units.py +0 -0
  720. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_parentage.py +0 -0
  721. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_paste_landed.py +0 -0
  722. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_pipeline.py +0 -0
  723. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_plan_followup_approve_plan_command.py +0 -0
  724. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_plan_followup_pr_command.py +0 -0
  725. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_plan_followup_review_command.py +0 -0
  726. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_plan_only.py +0 -0
  727. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_plan_parser.py +0 -0
  728. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_platform_paths.py +0 -0
  729. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_portal_bridge.py +0 -0
  730. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_portal_config.py +0 -0
  731. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_portal_sync.py +0 -0
  732. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_pr_body_lint.py +0 -0
  733. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_prereqs.py +0 -0
  734. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_production_db_guard.py +0 -0
  735. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_progress.py +0 -0
  736. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_provider_seam.py +0 -0
  737. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_providers.py +0 -0
  738. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_providers_config_labels.py +0 -0
  739. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_providers_pty.py +0 -0
  740. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_quiet_hours.py +0 -0
  741. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_quiet_hours_store_2146.py +0 -0
  742. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reap_merged_sessions.py +0 -0
  743. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reap_stale_interactive_tick.py +0 -0
  744. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reconcile.py +0 -0
  745. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reconcile_branch.py +0 -0
  746. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reconcile_completions.py +0 -0
  747. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reconcile_merges.py +0 -0
  748. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reconcile_no_agent_record.py +0 -0
  749. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reconcile_usage_limit_done.py +0 -0
  750. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_refine_chat.py +0 -0
  751. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_release_cordon_2101.py +0 -0
  752. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  753. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_release_cordon_deadlock_2240.py +0 -0
  754. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_release_propagate.py +0 -0
  755. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_release_unified_1242.py +0 -0
  756. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_release_verify.py +0 -0
  757. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_release_window.py +0 -0
  758. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_remote_auto_prune.py +0 -0
  759. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_remote_interactive_reaper.py +0 -0
  760. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_repo_edit_2220.py +0 -0
  761. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_repo_graph_fleet_2237.py +0 -0
  762. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_repo_onboard_2220.py +0 -0
  763. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_report_result_push.py +0 -0
  764. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_reports.py +0 -0
  765. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_retry.py +0 -0
  766. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_retry_advisory_1606.py +0 -0
  767. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_retry_type_1636.py +0 -0
  768. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_revalidate.py +0 -0
  769. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_end_review_without_verdict.py +0 -0
  770. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_parse_failure_diagnostic.py +0 -0
  771. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_reaffirm.py +0 -0
  772. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_state.py +0 -0
  773. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_verdict_backstop.py +0 -0
  774. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_verdict_override_audit.py +0 -0
  775. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_verdict_relay.py +0 -0
  776. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_review_zero_commits.py +0 -0
  777. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_scoped_review_wiring.py +0 -0
  778. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_scorecard.py +0 -0
  779. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_serve.py +0 -0
  780. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_serve_app_board_trim.py +0 -0
  781. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_session.py +0 -0
  782. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_slice_issue_attribution.py +0 -0
  783. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_smoke.py +0 -0
  784. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_smoke_live_checkout_restore.py +0 -0
  785. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_smoke_workflow.py +0 -0
  786. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_spend_ceiling.py +0 -0
  787. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_spend_ceiling_coordinator.py +0 -0
  788. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_split.py +0 -0
  789. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_split_work.py +0 -0
  790. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_stage_projection.py +0 -0
  791. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_stalled_pipeline.py +0 -0
  792. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_state.py +0 -0
  793. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_state_review_findings_daemon.py +0 -0
  794. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_status_fleet_footer.py +0 -0
  795. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_stop_1567.py +0 -0
  796. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_stuck.py +0 -0
  797. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_terminal_command.py +0 -0
  798. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_test_author.py +0 -0
  799. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_test_chat.py +0 -0
  800. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_test_orchestrator.py +0 -0
  801. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_test_report.py +0 -0
  802. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_test_verdict_parsing.py +0 -0
  803. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_test_verdict_transcript_floor.py +0 -0
  804. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_thin_client_board_audit.py +0 -0
  805. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_thin_client_config_load_1080.py +0 -0
  806. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_thin_client_daemon_routing_906.py +0 -0
  807. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_tmux_host.py +0 -0
  808. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_tmux_session.py +0 -0
  809. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_transcript_floor.py +0 -0
  810. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_usage.py +0 -0
  811. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_usage_limits.py +0 -0
  812. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_usage_rollup.py +0 -0
  813. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_venv_live_install_2121.py +0 -0
  814. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_version_single_source.py +0 -0
  815. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_watch.py +0 -0
  816. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  817. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_worker_events.py +0 -0
  818. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_worker_image_pin_sync.py +0 -0
  819. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_worker_safety.py +0 -0
  820. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_worker_test_scoping.py +0 -0
  821. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_worktree.py +0 -0
  822. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  823. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/Cargo.lock +0 -0
  824. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/Cargo.toml +0 -0
  825. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/cargo-config-local-quadraui.toml.example +0 -0
  826. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/audit.rs +0 -0
  827. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/chat.rs +0 -0
  828. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/data.rs +0 -0
  829. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/dialogs.rs +0 -0
  830. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/drive.rs +0 -0
  831. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/drive_queue.rs +0 -0
  832. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/escalation.rs +0 -0
  833. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/events.rs +0 -0
  834. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/fixtures.rs +0 -0
  835. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/fleet_health.rs +0 -0
  836. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/fleet_sessions.rs +0 -0
  837. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/fleet_terminals.rs +0 -0
  838. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/format.rs +0 -0
  839. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/milestone_dag.rs +0 -0
  840. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/mod.rs +0 -0
  841. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/msv.rs +0 -0
  842. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/pipeline.rs +0 -0
  843. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/plans.rs +0 -0
  844. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/render.rs +0 -0
  845. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/reports.rs +0 -0
  846. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/sessions.rs +0 -0
  847. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/settings_ui.rs +0 -0
  848. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/sidebar.rs +0 -0
  849. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/terminal.rs +0 -0
  850. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/tests.rs +0 -0
  851. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/types.rs +0 -0
  852. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/app/workspace.rs +0 -0
  853. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/bin/gtk.rs +0 -0
  854. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/commands.rs +0 -0
  855. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/lib.rs +0 -0
  856. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/main.rs +0 -0
  857. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/src/settings.rs +0 -0
  858. {code_coordinator-0.5.121 → code_coordinator-0.5.125}/tui/tests/cli.rs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.121
3
+ Version: 0.5.125
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.121
3
+ Version: 0.5.125
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
@@ -784,7 +784,9 @@ tests/acceptance/ms-51/home-active.spec.ts
784
784
  tests/acceptance/ms-51/manifest.yml
785
785
  tests/acceptance/ms-51/tsconfig.json
786
786
  tests/acceptance/ms-51/mocks/home-active.html
787
+ tests/acceptance/ms-65/board_tabs_2282.rs
787
788
  tests/acceptance/ms-65/contract.md
789
+ tests/acceptance/ms-65/manifest.yml
788
790
  tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen
789
791
  tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen
790
792
  tests/acceptance/ms-65/mocks/board-preview-tab.screen
@@ -429,7 +429,9 @@
429
429
  "tests/acceptance/ms-51/manifest.yml",
430
430
  "tests/acceptance/ms-51/mocks/home-active.html",
431
431
  "tests/acceptance/ms-51/tsconfig.json",
432
+ "tests/acceptance/ms-65/board_tabs_2282.rs",
432
433
  "tests/acceptance/ms-65/contract.md",
434
+ "tests/acceptance/ms-65/manifest.yml",
433
435
  "tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen",
434
436
  "tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen",
435
437
  "tests/acceptance/ms-65/mocks/board-preview-tab.screen",
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.121",
2
+ "tag": "0.5.125",
3
3
  "distance": 0,
4
- "node": "gfcdd7f8f7839bc92680284bc0e829ec126748357",
4
+ "node": "g45b284e5f4bdc6047cbd9db9e0a0d4f1c11ca154",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-17"
@@ -3186,6 +3186,17 @@ not apply to it.
3186
3186
  - If even the scoped run genuinely cannot finish in time, follow the \
3187
3187
  background-and-poll pattern in the ONE-SHOT section above — do not invent \
3188
3188
  a chunk-and-loop workaround.
3189
+ - #2192: check your own diff now — does it change user-visible behavior \
3190
+ AND add/modify zero test files? That exact pattern was 18.5% of this \
3191
+ repo's blocking reviews (#2132): the code was correct, but CLAUDE.md's \
3192
+ "Testing — black-box coverage is the acceptance bar" rule was skipped, so \
3193
+ the adversarial reviewer rejected it — costing a paid review leg plus a \
3194
+ fix + re-review round trip to catch something you can see for free right \
3195
+ now, in this same already-running session. If it fires, add the test \
3196
+ before declaring done. If this genuinely is a pure refactor / \
3197
+ internal-only change (CLAUDE.md's existing exemption), say so explicitly \
3198
+ in your final message instead — that already satisfies the reviewer, no \
3199
+ test required.
3189
3200
 
3190
3201
  #252: before exiting, emit a SMOKE_TESTS block telling the human what to \
3191
3202
  manually verify. You changed the code; you know what's worth poking.
@@ -324,7 +324,7 @@ CI_RERUN_POLL_INTERVAL_SECONDS = 10.0
324
324
  CI_RERUN_MAX_WAIT_SECONDS = 360.0
325
325
 
326
326
 
327
- def _is_unreadable_check(check) -> bool:
327
+ def is_unreadable_check(check) -> bool:
328
328
  """True for the #1525 synthetic "could not read CI status" / "gh too
329
329
  old" stand-ins (``coord.ci_github._unreadable_check`` /
330
330
  ``_gh_too_old_check``) — the read itself failed, so this says nothing
@@ -332,10 +332,33 @@ def _is_unreadable_check(check) -> bool:
332
332
  importing ``coord.ci_github`` — this module must stay backend-agnostic,
333
333
  and every stub/fake ``CheckRun``-alike in the test suite already has
334
334
  both attributes.
335
+
336
+ Public (#2347) — :mod:`coord.merge_queue` reuses this directly to
337
+ classify a ``checks_failed`` block whose failures are ALL this stand-in
338
+ as a bare check-list *fetch* failure (``CI_UNREADABLE_PREFIX``), distinct
339
+ from both a real "still running" and a real "ran and failed" verdict; see
340
+ that module's docstring for the classification this feeds.
341
+
342
+ Deliberately narrower than "any ``coord: ``-named synthetic check with
343
+ ``conclusion == "unknown"``": :class:`coord.gate_snapshot.GateSnapshot`
344
+ (the board *read* path's ``CiStore`` — :mod:`coord.merge_queue`'s
345
+ ``_entry_gate_status`` can be, and in production is, called with one —
346
+ see ``coord.serve_app``'s ``/board`` handler) emits its OWN such
347
+ stand-in, ``_stale_check`` (``"coord: gate snapshot stale (...)"``), for
348
+ a completely different local condition — the daemon's own refresh loop
349
+ fell behind, not a GitHub read failure — and #2347's classification must
350
+ not relabel that as "GitHub unreachable". Both `coord.ci_github` stand-ins
351
+ share the phrase "read CI status" in their name; `_stale_check` does not,
352
+ so requiring it is what keeps the two apart without this module having
353
+ to import `coord.gate_snapshot` (which itself imports `coord.ci_store` —
354
+ the reverse import would cycle) or duck-type on anything less stable
355
+ than the prose these three call sites already commit to.
335
356
  """
357
+ name = str(getattr(check, "name", ""))
336
358
  return (
337
359
  getattr(check, "conclusion", None) == "unknown"
338
- and str(getattr(check, "name", "")).startswith("coord: ")
360
+ and name.startswith("coord: ")
361
+ and "read CI status" in name
339
362
  )
340
363
 
341
364
 
@@ -381,7 +404,7 @@ def wait_for_ci_settle(
381
404
 
382
405
  A "registering" read — no checks at all yet, or every check present is
383
406
  one of the #1525 synthetic unreadable stand-ins (see
384
- :func:`_is_unreadable_check`) — never counts as settled, however many
407
+ :func:`is_unreadable_check`) — never counts as settled, however many
385
408
  times it's observed; only real, resolved checks do. Genuinely in-flight
386
409
  real checks (a run that registered and is now actually executing) also
387
410
  keep polling — that's the ordinary "wait for CI to finish" case this
@@ -409,7 +432,7 @@ def wait_for_ci_settle(
409
432
  except Exception: # noqa: BLE001 — best-effort cache-bust only
410
433
  pass
411
434
  checks = ci_store.list_checks_for_pr(repo, number)
412
- registering = not checks or all(_is_unreadable_check(c) for c in checks)
435
+ registering = not checks or all(is_unreadable_check(c) for c in checks)
413
436
  if not registering and not in_flight_checks(checks):
414
437
  return CiSettleResult(
415
438
  settled=True, checks=checks, waited_seconds=clock() - start,
@@ -1837,11 +1837,21 @@ def _fetch_gate_a_pending(entries: list) -> dict[str, bool]:
1837
1837
 
1838
1838
  def _fetch_live_ci_gate(
1839
1839
  entries: list, config_path: Path | None
1840
- ) -> dict[str, bool]:
1841
- """``{entry_key: still_blocked}`` for every ``parked`` entry whose OWN
1842
- park reason is CI-shaped (#1891/#1892) — a FRESH, single-entry
1843
- re-derivation of the SAME gate ``coord merge --plan`` computes, taken
1844
- live, right now, this tick (#2182).
1840
+ ) -> tuple[dict[str, bool], dict[str, str]]:
1841
+ """``({entry_key: still_blocked}, {entry_key: reason})`` for every
1842
+ ``parked`` entry whose OWN park reason is CI-shaped
1843
+ (#1891/#1892/#2347) — a FRESH, single-entry re-derivation of the SAME
1844
+ gate ``coord merge --plan`` computes, taken live, right now, this tick
1845
+ (#2182).
1846
+
1847
+ The second dict (#2347) carries the reason text
1848
+ :func:`coord.merge_queue.entry_gate_status` returned alongside each
1849
+ still-blocked verdict — used ONLY to let :func:`coord.drive_queue.
1850
+ plan_tick` rewrite a still-``parked`` entry's ``last_reason`` when the
1851
+ fresh reading is specifically "GitHub unreachable"
1852
+ (``is_ci_unreadable_reason``) and differs from what is currently stored;
1853
+ see that function's ``live_ci_gate_reason`` parameter. Never consulted
1854
+ to decide whether to resume — that remains the first dict's job alone.
1845
1855
 
1846
1856
  THE GAP THIS CLOSES. On the daemon host — the only machine that ever
1847
1857
  runs this tick (``docs/AGENT_OPERATIONS.md``) — ``_fetch_board_view``
@@ -1887,7 +1897,11 @@ def _fetch_live_ci_gate(
1887
1897
  have nothing to add — worse, ``coord.state.load_board()`` guards against
1888
1898
  being called from a thin client at all (#615).
1889
1899
  """
1890
- from coord.merge_queue import is_ci_infra_reason, is_ci_pending_reason # noqa: PLC0415
1900
+ from coord.merge_queue import ( # noqa: PLC0415
1901
+ is_ci_infra_reason,
1902
+ is_ci_pending_reason,
1903
+ is_ci_unreadable_reason,
1904
+ )
1891
1905
 
1892
1906
  targets = [
1893
1907
  e for e in entries
@@ -1895,15 +1909,16 @@ def _fetch_live_ci_gate(
1895
1909
  and (
1896
1910
  is_ci_pending_reason(getattr(e, "last_reason", "") or "")
1897
1911
  or is_ci_infra_reason(getattr(e, "last_reason", "") or "")
1912
+ or is_ci_unreadable_reason(getattr(e, "last_reason", "") or "")
1898
1913
  )
1899
1914
  ]
1900
1915
  if not targets:
1901
- return {}
1916
+ return {}, {}
1902
1917
 
1903
1918
  from coord.board_service import resolve as resolve_board_service # noqa: PLC0415
1904
1919
 
1905
1920
  if resolve_board_service() is not None:
1906
- return {}
1921
+ return {}, {}
1907
1922
 
1908
1923
  try:
1909
1924
  from coord import github_ops as _gh_ops # noqa: PLC0415
@@ -1919,19 +1934,22 @@ def _fetch_live_ci_gate(
1919
1934
  entry_key(q.repo_name, q.issue_number): q for q in _mq.load_queue()
1920
1935
  }
1921
1936
  except Exception: # noqa: BLE001 — see the fail-soft note above
1922
- return {}
1937
+ return {}, {}
1923
1938
 
1924
1939
  overrides: dict[str, bool] = {}
1940
+ reasons: dict[str, str] = {}
1925
1941
  for e in targets:
1926
1942
  q = queue_by_key.get(e.key)
1927
1943
  if q is None or not q.pr_number:
1928
1944
  continue
1929
1945
  try:
1930
- status, _reason = _mq.entry_gate_status(q, board, cfg, ci_store, _gh_ops)
1946
+ status, reason = _mq.entry_gate_status(q, board, cfg, ci_store, _gh_ops)
1931
1947
  except Exception: # noqa: BLE001 — leave this one entry to the ceiling
1932
1948
  continue
1933
1949
  overrides[e.key] = status != _mq.PLAN_READY
1934
- return overrides
1950
+ if reason:
1951
+ reasons[e.key] = reason
1952
+ return overrides, reasons
1935
1953
 
1936
1954
 
1937
1955
  def _fetch_live_blocked_gate(
@@ -2337,7 +2355,11 @@ def drive_queue_tick(
2337
2355
  # on the daemon-host tick could previously be released only by the
2338
2356
  # #2158 45-minute ceiling, never by CI actually reporting, because
2339
2357
  # this tick's board read never computes a live `merge_plan`).
2340
- live_ci_gate = _fetch_live_ci_gate(entries, config_path)
2358
+ # #2347: the reason half — lets a still-parked entry's `last_reason`
2359
+ # be rewritten when the real cause is "GitHub unreachable" rather
2360
+ # than whatever it originally parked on; see `plan_tick`'s
2361
+ # `live_ci_gate_reason` parameter.
2362
+ live_ci_gate, live_ci_gate_reason = _fetch_live_ci_gate(entries, config_path)
2341
2363
 
2342
2364
  # #2230: the same live re-derivation, for RE-EVALUABLE `blocked`
2343
2365
  # entries — see `_fetch_live_blocked_gate`'s docstring for the gap
@@ -2384,6 +2406,7 @@ def drive_queue_tick(
2384
2406
  gate_a_pending=gate_a_pending,
2385
2407
  cordons=cordons,
2386
2408
  live_ci_gate=live_ci_gate,
2409
+ live_ci_gate_reason=live_ci_gate_reason,
2387
2410
  live_blocked_gate=live_blocked_gate,
2388
2411
  editable_drift=editable_drift,
2389
2412
  )
@@ -787,8 +787,9 @@ def _fix_from_review(
787
787
  @click.command(
788
788
  help=(
789
789
  "Dispatch a headless same-branch fix worker.\n\n"
790
- "ASSIGNMENT_ID is either a WORK assignment whose test gate FAILED (or "
791
- "whose PR has red CI), or a REVIEW assignment whose verdict was "
790
+ "ASSIGNMENT_ID is either a WORK assignment whose test gate FAILED "
791
+ "(or whose PR has red CI, or whose oracle-loop acceptance trust "
792
+ "gate FAILED — #2344), or a REVIEW assignment whose verdict was "
792
793
  "request-changes. Either way the fix lands on the ORIGINAL branch and "
793
794
  "updates the ORIGINAL PR — no new issue-N-* branch, no orphan PR."
794
795
  )
@@ -802,12 +803,12 @@ def _fix_from_review(
802
803
  help=(
803
804
  "Override the #555 interactive-work exclusion when fixing a review of "
804
805
  "work that ran under claude-pty, or (#2051) dispatch a WORK-row fix "
805
- "when neither the test verdict nor a live CI read shows a failure "
806
- "for when the caller knows the PR is red but the check missed it "
807
- "(ci_store not configured, a transient read error). Since #2091 the "
808
- "refusal names which of those it was, so check the `note:` line "
809
- "before reaching for this. Does NOT override max_review_iterations "
810
- "or the #522 terminal-work guard."
806
+ "when neither the test verdict, a live CI read, nor the acceptance "
807
+ "trust gate shows a failure — for when the caller knows the PR is red "
808
+ "but the check missed it (ci_store not configured, a transient read "
809
+ "error). Since #2091 the refusal names which of those it was, so "
810
+ "check the `note:` line before reaching for this. Does NOT override "
811
+ "max_review_iterations or the #522 terminal-work guard."
811
812
  ),
812
813
  )
813
814
  def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> None:
@@ -837,10 +838,27 @@ def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> No
837
838
  # `smoke_test=NULL` and must still be fixable.
838
839
  test_failed = assignment.test_state == "failed" or assignment.smoke_test == "fail"
839
840
 
841
+ # #2344: the oracle-loop TRUST GATE (docs/ORACLE_LOOP.md, #2199) is a
842
+ # fourth door onto this command. `_decide_acceptance_gate`
843
+ # (coord/drive.py) dispatches `coord fix <work_aid>` the instant the
844
+ # gate's coordinator-run re-run of the sealed suite comes back red — the
845
+ # same shape as `_decide_test` dispatching on a failed Test verdict.
846
+ # Before this, nothing here recognized that door: a milestone whose
847
+ # trust gate failed in isolation (Test not yet run, or already passed;
848
+ # CI green) hit the #2051 "expected a failed test verdict" refusal on
849
+ # every attempt — structurally unwinnable, not a transient miss — until
850
+ # the drive-queue entry parked after burning its retry budget (ms-65 /
851
+ # #2282, observed live 2026-08-17).
852
+ acceptance_failed = assignment.acceptance_state == "failed"
853
+
840
854
  # #1622 (part 3): red CI is the third trigger. Only consulted when the
841
855
  # local test gate has NOT already failed, so the cheap in-DB path stays
842
- # zero-I/O and the existing failure story keeps priority.
843
- ci_read = CiRead() if test_failed else _read_ci(cfg, assignment)
856
+ # zero-I/O and the existing failure story keeps priority. #2344: same
857
+ # treatment for a failed trust gate — it is definitive evidence on its
858
+ # own, so skip the live CI read entirely rather than let a green CI read
859
+ # (which says nothing about the trust gate's sealed-suite re-run) shadow
860
+ # it below.
861
+ ci_read = CiRead() if (test_failed or acceptance_failed) else _read_ci(cfg, assignment)
844
862
  ci_story = ci_read.story
845
863
 
846
864
  # #2091: the stored Test verdict says PASSED while the branch's live CI
@@ -876,8 +894,9 @@ def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> No
876
894
  err=True,
877
895
  )
878
896
 
879
- # #2051: none of the three doors (failed test verdict, red CI, or the
880
- # review-id door handled above) is open. `_read_ci` is read-only and
897
+ # #2051 (extended by #2344): none of the four doors (failed test
898
+ # verdict, red CI, a failed acceptance trust gate, or the review-id door
899
+ # handled above) is open. `_read_ci` is read-only and
881
900
  # fail-quiet (see :class:`CiRead`) — a missing story means "no CI
882
901
  # evidence of a failure", never "CI is green" — so a caller who KNOWS
883
902
  # the PR is red (ci_store not configured for this repo, a transient
@@ -886,15 +905,16 @@ def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> No
886
905
  # that caller's release valve; it is NOT a way to skip the #555 / #522 /
887
906
  # max_review_iterations guards, which sit elsewhere.
888
907
  forced_without_evidence = False
889
- if not test_failed and ci_story is None:
908
+ if not test_failed and not acceptance_failed and ci_story is None:
890
909
  if not force:
891
910
  click.echo(
892
911
  f"error: assignment {assignment_id} test_state is "
893
912
  f"{assignment.test_state!r} / smoke_test is "
894
- f"{assignment.smoke_test!r}, expected a failed test verdict "
895
- "(or red CI on its PR, or a request-changes review id). If "
896
- "the PR is actually red and this check missed it, re-run "
897
- "with --force.",
913
+ f"{assignment.smoke_test!r} / acceptance_state is "
914
+ f"{assignment.acceptance_state!r}, expected a failed test "
915
+ "verdict (or red CI on its PR, a failed acceptance trust "
916
+ "gate, or a request-changes review id). If the PR is "
917
+ "actually red and this check missed it, re-run with --force.",
898
918
  err=True,
899
919
  )
900
920
  # #2091: say WHY there is no CI evidence. Before this, six
@@ -940,6 +960,14 @@ def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> No
940
960
  test_output_file = COORD_DIR / "test_output" / f"{assignment_id}.txt"
941
961
  if ci_story is not None:
942
962
  test_output = ci_story
963
+ elif acceptance_failed and not test_failed:
964
+ # #2344: the trust gate's own recorded reason is the evidence for
965
+ # this door — `coord acceptance record` writes it to
966
+ # `acceptance_reason` at the same time it flips `acceptance_state`
967
+ # to "failed" (coord/state.py). Neither the CI-story nor the
968
+ # smoke/test-reason fallbacks below apply here: this door fires
969
+ # precisely when Test/CI are NOT what's red.
970
+ test_output = assignment.acceptance_reason or ""
943
971
  elif test_output_file.exists():
944
972
  test_output = test_output_file.read_text()
945
973
  elif assignment.smoke_test_reason or assignment.test_reason:
@@ -965,6 +993,9 @@ def fix(assignment_id: str, config_path: Path, guidance: str, force: bool) -> No
965
993
  "red)"
966
994
  )
967
995
  _failure_heading = "Reported failure (--force, unverified)"
996
+ elif acceptance_failed and not test_failed and ci_story is None:
997
+ _what = "a failed oracle-loop acceptance trust gate (#2199)"
998
+ _failure_heading = "Acceptance trust-gate failure"
968
999
  else:
969
1000
  _what = "red CI" if ci_story is not None else "a failed smoke test"
970
1001
  _failure_heading = "CI failure" if ci_story is not None else "Test failure"
@@ -191,7 +191,8 @@ def _ensure_schema(conn: sqlite3.Connection) -> None:
191
191
  ci_infra_reruns INTEGER NOT NULL DEFAULT 0,
192
192
  ci_stale_reruns INTEGER NOT NULL DEFAULT 0,
193
193
  ci_flaky_reruns INTEGER NOT NULL DEFAULT 0,
194
- ci_flaky_pending TEXT NOT NULL DEFAULT ''
194
+ ci_flaky_pending TEXT NOT NULL DEFAULT '',
195
+ ci_unreadable_reruns INTEGER NOT NULL DEFAULT 0
195
196
  );
196
197
 
197
198
  CREATE TABLE IF NOT EXISTS plans (
@@ -909,6 +910,14 @@ def _migrate_add_columns(conn: sqlite3.Connection) -> None:
909
910
  # row predating this migration and for a non-stream-json / PTY
910
911
  # worker whose log carries no such field.
911
912
  "ALTER TABLE assignments ADD COLUMN stop_reason TEXT",
913
+ # #2347: count of automatic checks `merge_queue.process()` has made
914
+ # against this entry's CURRENT streak of bare check-list FETCH
915
+ # failures (GitHub unreachable, not a real CI verdict) — see
916
+ # `coord.merge_queue.MAX_CI_UNREADABLE_RERUNS` and
917
+ # `QueuedMerge.ci_unreadable_reruns`'s docstring. 0 for every row
918
+ # predating this column, same as the column's own default for a
919
+ # freshly-enqueued entry.
920
+ "ALTER TABLE merge_queue ADD COLUMN ci_unreadable_reruns INTEGER NOT NULL DEFAULT 0",
912
921
  ]
913
922
  for sql in migrations:
914
923
  try:
@@ -133,6 +133,7 @@ from coord.merge_queue import (
133
133
  is_ci_flaky_reason,
134
134
  is_ci_infra_reason,
135
135
  is_ci_pending_reason,
136
+ is_ci_unreadable_reason,
136
137
  is_stale_smoke_reason as _mq_is_stale_smoke_reason,
137
138
  )
138
139
 
@@ -2539,8 +2540,8 @@ def _effective_merge_gate_reason(
2539
2540
  own resolution path (#1474/#241's conflict-fix dispatch, reached
2540
2541
  through the bounded retry below). A re-test does not rebase a branch,
2541
2542
  and diverting to one is the same stall this issue is about, inverted.
2542
- - a CI reason (#1891/#1892/#2252) — `merge_reason` already carries a
2543
- live, recognised signal whose only resolution is more real time.
2543
+ - a CI reason (#1891/#1892/#2252/#2347) — `merge_reason` already carries
2544
+ a live, recognised signal whose only resolution is more real time.
2544
2545
  These bare waits sit right after the divergence check and must keep
2545
2546
  winning.
2546
2547
 
@@ -2559,6 +2560,7 @@ def _effective_merge_gate_reason(
2559
2560
  is_ci_pending_reason(state.merge_reason)
2560
2561
  or is_ci_infra_reason(state.merge_reason)
2561
2562
  or is_ci_flaky_reason(state.merge_reason)
2563
+ or is_ci_unreadable_reason(state.merge_reason)
2562
2564
  ):
2563
2565
  return state.merge_reason, False
2564
2566
  fallback = _extract_gate_refusal_reason(counters.last_merge_diagnostic)
@@ -2864,6 +2866,24 @@ def _decide_merge(
2864
2866
  )
2865
2867
  )
2866
2868
 
2869
+ # #2347: the sibling case checked right after #1891 — the check-list
2870
+ # FETCH itself failed (GitHub unreachable: a transient `gh pr checks`
2871
+ # HTTP 5xx, an auth blip), so there is no CI verdict of ANY shape yet,
2872
+ # not even a real "still running" one. `coord merge`'s own live attempt
2873
+ # already tracks a bounded count of consecutive fetch failures for this
2874
+ # (`coord.merge_queue.MAX_CI_UNREADABLE_RERUNS`) and keeps waiting
2875
+ # either way — there is no CI to rerun and no gate to re-test, only more
2876
+ # real time (GitHub answering again). Retrying `coord merge` here would
2877
+ # just re-observe the identical transport failure and spend an attempt
2878
+ # for nothing.
2879
+ if is_ci_unreadable_reason(state.merge_reason):
2880
+ return _wait(
2881
+ label=(
2882
+ "MERGE: GitHub could not be reached to read CI status — "
2883
+ f"waiting, not retrying (#2347): {state.merge_reason}"
2884
+ )
2885
+ )
2886
+
2867
2887
  # #1892: the sibling case — a CI verdict DID arrive, but every failing
2868
2888
  # check said nothing about the code (never assigned a runner, or died
2869
2889
  # before checkout). `coord merge`'s own live attempt is already
@@ -96,6 +96,7 @@ from coord.merge_queue import (
96
96
  is_ci_flaky_reason,
97
97
  is_ci_infra_reason,
98
98
  is_ci_pending_reason,
99
+ is_ci_unreadable_reason,
99
100
  )
100
101
  from coord.models import is_policy_refusal_reason
101
102
 
@@ -154,6 +155,15 @@ STATE_FAILED = "failed"
154
155
  # today) on the very next tick. Same reasoning as #1892 for why this parks
155
156
  # rather than spends: relaunching right now would just observe the same
156
157
  # re-run-in-progress and wait again.
158
+ #
159
+ # #2347 extends the SAME state to a FOURTH trigger:
160
+ # `coord.merge_queue.is_ci_unreadable_reason` — the check-list FETCH itself
161
+ # failed (GitHub unreachable: a transient `gh pr checks` HTTP 5xx, an auth
162
+ # blip), not a CI verdict of any shape. The "more real time" that un-parks
163
+ # the entry is simply GitHub answering again on a later read — there is no
164
+ # in-flight rerun to wait on, unlike #1892/#2252, only another attempt to
165
+ # read. Same queue-level treatment as the other three: relaunching right now
166
+ # would just observe the identical transport failure and wait again.
157
167
  STATE_PARKED = "parked"
158
168
 
159
169
  TERMINAL_QUEUE_STATES: frozenset[str] = frozenset(
@@ -959,10 +969,18 @@ def build_board_view(
959
969
  elif is_ci_flaky_reason(raw_reason) and not is_ci_flaky_reason(plan_reason):
960
970
  reason = raw_reason
961
971
  reason_is_live = False
972
+ # #2347: NO raw-row recovery needed here, unlike #1892/#2252 above —
973
+ # `coord.merge_queue._ci_unreadable_reason` needs no extra `CiStore`
974
+ # call (see that function's docstring), so `_entry_gate_status`
975
+ # computes the CI_UNREADABLE_PREFIX classification directly at
976
+ # board-build time. `plan_reason` already carries it whenever it
977
+ # applies; the live plan reading and a live `coord merge` attempt's
978
+ # raw reading can never disagree about this one.
962
979
  if not (
963
980
  is_ci_pending_reason(reason)
964
981
  or is_ci_infra_reason(reason)
965
982
  or is_ci_flaky_reason(reason)
983
+ or is_ci_unreadable_reason(reason)
966
984
  ):
967
985
  continue
968
986
  # #2158: the same plan row that came back with NO reason of its own
@@ -1059,6 +1077,13 @@ class Reconcile:
1059
1077
  every tick by the pre-pass in :func:`plan_tick`, which flips it back
1060
1078
  to ``waiting`` — no human, no escalation — the moment the board shows
1061
1079
  the gate has cleared.
1080
+ * ``reparked`` — #2347: an ALREADY-``parked`` entry, still CONFIRMED
1081
+ blocked by this tick's own fresh re-check — but that fresh check found
1082
+ the real cause has become "GitHub could not be reached", distinct from
1083
+ whatever reason the entry originally parked on. State does not change
1084
+ (stays :data:`STATE_PARKED`), no attempt spent — only ``last_reason``
1085
+ is rewritten, so an operator reading ``coord drive-queue list``/
1086
+ ``status`` sees the true cause instead of a frozen, misleading one.
1062
1087
  * ``retry`` — genuinely dead: no session, no active work, and past the
1063
1088
  startup grace window. Costs one attempt.
1064
1089
  * ``exhausted`` — as ``retry``, but out of attempts; pairs with a
@@ -2528,6 +2553,7 @@ def plan_tick(
2528
2553
  gate_a_pending: Mapping[str, bool] | None = None,
2529
2554
  cordons: Mapping[str, str] | None = None,
2530
2555
  live_ci_gate: Mapping[str, bool] | None = None,
2556
+ live_ci_gate_reason: Mapping[str, str] | None = None,
2531
2557
  live_blocked_gate: Mapping[str, bool] | None = None,
2532
2558
  editable_drift: tuple[str, str] | None = None,
2533
2559
  ) -> TickPlan:
@@ -2635,6 +2661,21 @@ def plan_tick(
2635
2661
  side, which computes this ONLY for the bounded set of entries currently
2636
2662
  `parked` on a CI reason, never the whole queue.
2637
2663
 
2664
+ *live_ci_gate_reason* (#2347) is *live_ci_gate*'s companion: the reason
2665
+ text the SAME fresh `entry_gate_status` call returned, for entries whose
2666
+ reading is STILL blocked. Never used to decide whether to resume (that
2667
+ remains `live_ci_gate`'s job) — only to rewrite a still-parked entry's
2668
+ `last_reason` when the fresh reading is `CI_UNREADABLE_PREFIX`-shaped and
2669
+ differs from what is currently stored, so `coord drive-queue list`/
2670
+ `status` shows "GitHub could not be reached" the moment that becomes the
2671
+ real cause, instead of silently keeping whatever reason the entry
2672
+ happened to park on originally (which #1891/#1892/#2252's "still shut ⇒
2673
+ no reconcile, no write" rule would otherwise leave frozen indefinitely —
2674
+ see the issue for the observed incident: a stale "CI running: ..."
2675
+ reason surviving a run of transient GitHub API 503s for most of
2676
+ `PARK_STALE_SECONDS` with no operator-visible signal of the real cause).
2677
+ A key ABSENT here changes nothing — same as an absent `live_ci_gate` key.
2678
+
2638
2679
  *live_blocked_gate* is #2230's counterpart, for `blocked` instead of
2639
2680
  `parked`: maps a RE-EVALUABLE `blocked` entry's key (never one
2640
2681
  :func:`is_permanent_block_reason` recognises — the shell never even
@@ -2882,6 +2923,36 @@ def plan_tick(
2882
2923
  live_override = (live_ci_gate or {}).get(entry.key)
2883
2924
  if live_override is not None:
2884
2925
  if live_override:
2926
+ # #2347: CONFIRMED still blocked — but if the FRESH reading
2927
+ # taken THIS tick says the real cause is "GitHub could not
2928
+ # be reached" (not a real CI verdict) and that differs from
2929
+ # whatever reason is currently stored, rewrite `last_reason`
2930
+ # so `coord drive-queue list`/`status` says so — rather than
2931
+ # silently re-confirming whatever reason this entry
2932
+ # happened to park on originally, unboundedly, the way
2933
+ # #1891/#1892/#2252's "still shut ⇒ no reconcile, no write"
2934
+ # rule does for every other still-blocked reading. State
2935
+ # stays `parked`, no attempt spent — this changes only what
2936
+ # the operator is told, never the decision.
2937
+ live_reason = (live_ci_gate_reason or {}).get(entry.key)
2938
+ if (
2939
+ live_reason
2940
+ and is_ci_unreadable_reason(live_reason)
2941
+ and live_reason != entry.last_reason
2942
+ ):
2943
+ reason = (
2944
+ f"{live_reason} — still parked; the live re-check "
2945
+ "this tick could not reach GitHub either (#2347)"
2946
+ )
2947
+ reconciles.append(
2948
+ Reconcile(
2949
+ entry.key,
2950
+ "reparked",
2951
+ reason,
2952
+ occupies=False,
2953
+ updates={"last_reason": reason},
2954
+ )
2955
+ )
2885
2956
  continue
2886
2957
  reason = (
2887
2958
  f"live re-check of {entry.key}'s gate this tick reads READY "
@@ -597,6 +597,14 @@ def _merge_entry(
597
597
  # branch can ever legitimately fire for a given raw_reason.
598
598
  elif is_ci_flaky_reason(raw_reason) and not is_ci_flaky_reason(reason):
599
599
  reason = raw_reason
600
+ # #2347: deliberately NO third `elif` here for
601
+ # `is_ci_unreadable_reason` — unlike CI_INFRA_PREFIX/CI_FLAKY_PREFIX
602
+ # above, that classification needs no extra `CiStore` I/O (see
603
+ # `coord.merge_queue._ci_unreadable_reason`'s docstring), so
604
+ # `_entry_gate_status` already computes it directly at board-build
605
+ # time. `plan_entry["reason"]` (i.e. `reason` here) already carries
606
+ # it whenever it applies — there is nothing for the raw row to
607
+ # recover that the fresh plan reading doesn't already have.
600
608
 
601
609
  return {
602
610
  "status": status,