code-coordinator 0.5.124__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.124 → code_coordinator-0.5.125}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/ci_store.py +27 -4
  5. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/drive_queue.py +35 -12
  6. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/db.py +10 -1
  7. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/drive.py +22 -2
  8. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/drive_queue.py +71 -0
  9. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/drive_state.py +8 -0
  10. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/merge_queue.py +179 -8
  11. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/coord-test-runner.sh +13 -2
  12. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_ci_store.py +12 -2
  13. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_drive_queue.py +46 -0
  14. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_drive.py +93 -0
  15. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_drive_queue.py +127 -0
  16. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_merge_queue.py +224 -0
  17. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/tests/fixtures/board_sample.json +1 -0
  18. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.claude/commands/board.md +0 -0
  19. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.claude/commands/complete-session.md +0 -0
  20. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.claude/commands/coordinator.md +0 -0
  21. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.githooks/_lib.sh +0 -0
  22. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.githooks/post-checkout +0 -0
  23. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.githooks/post-commit +0 -0
  24. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.githooks/post-merge +0 -0
  25. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  26. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.github/coord-ci-acceptance.yml +0 -0
  27. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.github/workflows/auto-release.yml +0 -0
  28. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.github/workflows/cargo-test.yml +0 -0
  29. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.github/workflows/publish.yml +0 -0
  30. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.github/workflows/release-tui.yml +0 -0
  31. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.github/workflows/test.yml +0 -0
  32. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/.gitignore +0 -0
  33. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/CLAUDE.md +0 -0
  34. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/GOAL.md +0 -0
  35. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/LICENSE +0 -0
  36. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/MANIFEST.in +0 -0
  37. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/README.md +0 -0
  38. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/SOURCES.txt +0 -0
  39. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/dependency_links.txt +0 -0
  40. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/entry_points.txt +0 -0
  41. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/requires.txt +0 -0
  42. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/scm_file_list.json +0 -0
  43. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/code_coordinator.egg-info/top_level.txt +0 -0
  44. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/__init__.py +0 -0
  45. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/_board_mapping.py +0 -0
  46. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/acceptance.py +0 -0
  47. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/acceptance_drivers.py +0 -0
  48. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/agent.py +0 -0
  49. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/agent_app.py +0 -0
  50. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/agent_update.py +0 -0
  51. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/agents/opencode/.gitignore +0 -0
  52. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/agents/opencode/agents/work.md +0 -0
  53. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/agents/opencode/routing.jsonc +0 -0
  54. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/audit.py +0 -0
  55. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/auto_loop.py +0 -0
  56. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/block_log.py +0 -0
  57. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/board_bool_guard.py +0 -0
  58. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/board_service.py +0 -0
  59. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/board_wire.py +0 -0
  60. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/brain.py +0 -0
  61. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/branch_model.py +0 -0
  62. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/bug_intake.py +0 -0
  63. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/cargo_cache.py +0 -0
  64. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/ci_github.py +0 -0
  65. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/claim.py +0 -0
  66. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/cli.py +0 -0
  67. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/client.py +0 -0
  68. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/__init__.py +0 -0
  69. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/_common.py +0 -0
  70. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/acceptance.py +0 -0
  71. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/agent_ops.py +0 -0
  72. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/audit.py +0 -0
  73. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/chat.py +0 -0
  74. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/dispatch.py +0 -0
  75. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/dispatch_workers.py +0 -0
  76. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/drive.py +0 -0
  77. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/gate_a.py +0 -0
  78. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/gates.py +0 -0
  79. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/issues.py +0 -0
  80. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/lifecycle.py +0 -0
  81. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/merge.py +0 -0
  82. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/milestone.py +0 -0
  83. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/plan_followup.py +0 -0
  84. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/plans.py +0 -0
  85. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/portal.py +0 -0
  86. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/release.py +0 -0
  87. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/repo.py +0 -0
  88. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/report.py +0 -0
  89. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/review.py +0 -0
  90. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/scorecard.py +0 -0
  91. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/sessions.py +0 -0
  92. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/setup.py +0 -0
  93. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/status.py +0 -0
  94. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/terminal.py +0 -0
  95. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/test_gate.py +0 -0
  96. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/commands/tui.py +0 -0
  97. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/comments.py +0 -0
  98. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/config.py +0 -0
  99. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/config_reload.py +0 -0
  100. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/conflict_fix.py +0 -0
  101. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dao.py +0 -0
  102. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/__init__.py +0 -0
  103. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/fixture.py +0 -0
  104. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/index.html +0 -0
  105. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/server.py +0 -0
  106. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/terminal.py +0 -0
  107. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/.gitignore +0 -0
  108. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/components.json +0 -0
  109. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
  110. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  111. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
  112. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
  113. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  114. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  115. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  116. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  117. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  118. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/index.html +0 -0
  119. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  120. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/sw.js +0 -0
  121. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  122. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  123. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  124. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  125. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  126. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  127. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  128. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  129. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  130. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  131. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/eslint.config.js +0 -0
  132. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/index.html +0 -0
  133. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  134. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/package-lock.json +0 -0
  135. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/package.json +0 -0
  136. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  137. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/playwright.config.ts +0 -0
  138. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/postcss.config.js +0 -0
  139. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  140. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  141. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  142. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/App.tsx +0 -0
  143. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/api/client.ts +0 -0
  144. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  145. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  146. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  147. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  148. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  149. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  150. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  151. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  152. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  153. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  154. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  155. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  156. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  157. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  158. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  159. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  160. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  161. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  162. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  163. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  164. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  165. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  166. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  167. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  168. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  169. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  170. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  171. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  172. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  173. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  174. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  175. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  176. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  177. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  178. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  179. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/index.css +0 -0
  180. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  181. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  182. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/main.tsx +0 -0
  183. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  184. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  185. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  186. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  187. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  188. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  189. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  190. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  191. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  192. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  193. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  194. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  195. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  196. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  197. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  198. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  199. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  200. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  201. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  202. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  203. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  204. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  205. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  206. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/tailwind.config.js +0 -0
  207. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/tsconfig.json +0 -0
  208. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  209. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dashboard/webapp/vite.config.ts +0 -0
  210. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dead_end.py +0 -0
  211. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/README.md +0 -0
  212. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-agent.service +0 -0
  213. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-db-backup.service +0 -0
  214. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-db-backup.sh +0 -0
  215. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-db-backup.timer +0 -0
  216. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-drive-queue.service +0 -0
  217. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-drive-queue.timer +0 -0
  218. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-notify.service +0 -0
  219. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-notify.timer +0 -0
  220. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-release-propagate.service +0 -0
  221. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-release-propagate.timer +0 -0
  222. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-release-window.service +0 -0
  223. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-release-window.timer +0 -0
  224. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-serve.service +0 -0
  225. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-web-dist-build.service +0 -0
  226. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-web-dist-build.timer +0 -0
  227. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy/coord-web.service +0 -0
  228. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy_manifest.py +0 -0
  229. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deploy_units.py +0 -0
  230. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/deps.py +0 -0
  231. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/diagnose.py +0 -0
  232. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dispatch.py +0 -0
  233. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/dist_name.py +0 -0
  234. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/events.py +0 -0
  235. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/failure_class.py +0 -0
  236. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/filelock.py +0 -0
  237. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/fleet_config_health.py +0 -0
  238. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/freshness.py +0 -0
  239. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/gate_a.py +0 -0
  240. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/gate_b.py +0 -0
  241. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/gate_snapshot.py +0 -0
  242. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/gates.py +0 -0
  243. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/github_ops.py +0 -0
  244. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/goal.py +0 -0
  245. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/graph_health.py +0 -0
  246. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/__init__.py +0 -0
  247. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/aggregate.py +0 -0
  248. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/__init__.py +0 -0
  249. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/agent_install.py +0 -0
  250. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/cargo_targets.py +0 -0
  251. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/claude_binary.py +0 -0
  252. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/deploy_lane_facts.py +0 -0
  253. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/disk.py +0 -0
  254. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/fleet_board.py +0 -0
  255. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  256. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/fleet_phantom.py +0 -0
  257. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/fleet_unit_drift.py +0 -0
  258. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/graph.py +0 -0
  259. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/graphify_cli.py +0 -0
  260. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/index_lock.py +0 -0
  261. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/plan_usage.py +0 -0
  262. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/repo_state.py +0 -0
  263. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/spawned_coord.py +0 -0
  264. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/timer_active.py +0 -0
  265. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/toolchain.py +0 -0
  266. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/unit_drift.py +0 -0
  267. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/unit_enablement.py +0 -0
  268. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/checks/worktrees.py +0 -0
  269. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/cli.py +0 -0
  270. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/context.py +0 -0
  271. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/fleet_snapshot.py +0 -0
  272. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/models.py +0 -0
  273. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/pypi.py +0 -0
  274. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/registry.py +0 -0
  275. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/render.py +0 -0
  276. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/health/units.py +0 -0
  277. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/hooks.py +0 -0
  278. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/housekeeping.py +0 -0
  279. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/interactive.py +0 -0
  280. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/issue_store.py +0 -0
  281. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/liveness_auditor.py +0 -0
  282. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/machine_pause.py +0 -0
  283. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/milestone_chat.py +0 -0
  284. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/milestone_dispatch.py +0 -0
  285. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/milestone_gate.py +0 -0
  286. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/milestone_order.py +0 -0
  287. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/mock_author.py +0 -0
  288. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/models.py +0 -0
  289. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/network.py +0 -0
  290. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/new_issue_chat.py +0 -0
  291. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/__init__.py +0 -0
  292. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/baseline.py +0 -0
  293. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/cli.py +0 -0
  294. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/collect.py +0 -0
  295. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/digest.py +0 -0
  296. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/models.py +0 -0
  297. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/predicate.py +0 -0
  298. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/service.py +0 -0
  299. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/store.py +0 -0
  300. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notifier/transport.py +0 -0
  301. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/notify.py +0 -0
  302. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/openapi.py +0 -0
  303. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/overlap_fence.py +0 -0
  304. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/overlap_predict.py +0 -0
  305. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/parentage.py +0 -0
  306. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/parentage_github.py +0 -0
  307. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/pipeline.py +0 -0
  308. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/plan_parser.py +0 -0
  309. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/plans.py +0 -0
  310. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/platform_paths.py +0 -0
  311. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/portal_bridge.py +0 -0
  312. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/portal_store.py +0 -0
  313. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/portal_sync.py +0 -0
  314. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/pr_body_lint.py +0 -0
  315. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/prereqs.py +0 -0
  316. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/progress.py +0 -0
  317. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/providers/__init__.py +0 -0
  318. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/providers/base.py +0 -0
  319. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/providers/claude.py +0 -0
  320. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/providers/claude_pty.py +0 -0
  321. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/providers/opencode.py +0 -0
  322. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/queue_diagnose.py +0 -0
  323. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/reconcile.py +0 -0
  324. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/refine_chat.py +0 -0
  325. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/release_cordon.py +0 -0
  326. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/release_propagate.py +0 -0
  327. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/release_verify.py +0 -0
  328. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/release_window.py +0 -0
  329. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/repo_edit.py +0 -0
  330. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/repo_onboard.py +0 -0
  331. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/reports.py +0 -0
  332. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/revalidate.py +0 -0
  333. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/review.py +0 -0
  334. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/scorecard.py +0 -0
  335. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/serve_app.py +0 -0
  336. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/skills/portal-followup/SKILL.md +0 -0
  337. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/skills/update-issue/SKILL.md +0 -0
  338. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/smoke.py +0 -0
  339. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/spend_ceiling.py +0 -0
  340. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/split_work.py +0 -0
  341. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/stage_projection.py +0 -0
  342. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/state.py +0 -0
  343. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/test_author.py +0 -0
  344. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/test_chat.py +0 -0
  345. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/test_orchestrator.py +0 -0
  346. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/test_report.py +0 -0
  347. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/tui_release.py +0 -0
  348. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/usage.py +0 -0
  349. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/usage_limits.py +0 -0
  350. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/usage_rollup.py +0 -0
  351. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coord/worker_events.py +0 -0
  352. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/coordinator.example.yml +0 -0
  353. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-agent.service +0 -0
  354. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-db-backup.service +0 -0
  355. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-db-backup.sh +0 -0
  356. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-db-backup.timer +0 -0
  357. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-drive-queue.service +0 -0
  358. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-drive-queue.timer +0 -0
  359. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-notify.service +0 -0
  360. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-notify.timer +0 -0
  361. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-release-propagate.service +0 -0
  362. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-release-propagate.timer +0 -0
  363. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-release-window.service +0 -0
  364. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-release-window.timer +0 -0
  365. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-serve.service +0 -0
  366. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-web-dist-build.service +0 -0
  367. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-web-dist-build.sh +0 -0
  368. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-web-dist-build.timer +0 -0
  369. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-web-rollback.sh +0 -0
  370. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/coord-web.service +0 -0
  371. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/deploy/node-shim.sh +0 -0
  372. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/AGENT_OPERATIONS.md +0 -0
  373. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/ARCHITECTURE.md +0 -0
  374. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/ARCH_SECURITY_GATES.md +0 -0
  375. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/COCKPIT.md +0 -0
  376. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/CONTROL_CENTER.md +0 -0
  377. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/COST_DISCIPLINE.md +0 -0
  378. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/CROSS_PLATFORM.md +0 -0
  379. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/CUSTOMER_PORTAL.md +0 -0
  380. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/DRIVE_QUEUE.md +0 -0
  381. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/EPHEMERAL_WORKERS.md +0 -0
  382. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/FORGE_MIGRATION.md +0 -0
  383. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/GRAPHIFY_SETUP.md +0 -0
  384. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/ISSUE_GUIDANCE.md +0 -0
  385. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/MAC_MINI.md +0 -0
  386. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  387. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/NOTIFIER.md +0 -0
  388. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/OPENCODE_VERIFICATION.md +0 -0
  389. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/OPERATING_GOTCHAS.md +0 -0
  390. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/ORACLE_LOOP.md +0 -0
  391. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/PHONE_WEBAPP.md +0 -0
  392. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/PIPELINE_V2.md +0 -0
  393. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/PLATFORM_EVOLUTION.md +0 -0
  394. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/SECOND_BACKEND.md +0 -0
  395. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/STORE_SERVICE.md +0 -0
  396. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  397. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/WEB_CONTROL_CENTER.md +0 -0
  398. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/mocks/web/README.md +0 -0
  399. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/mocks/web/_tokens.css +0 -0
  400. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/mocks/web/issue-detail.html +0 -0
  401. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/mocks/web/pipeline-narrow.html +0 -0
  402. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/docs/mocks/web/pipeline-wide.html +0 -0
  403. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/graphify-out/.gitignore +0 -0
  404. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/install-agent.sh +0 -0
  405. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/pyproject.toml +0 -0
  406. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/audit_review_verdict_overrides.py +0 -0
  407. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  408. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/build-worker-image.sh +0 -0
  409. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/coordinator-machine.py +0 -0
  410. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/epic-down.sh +0 -0
  411. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/epic-up.sh +0 -0
  412. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/preflight.sh +0 -0
  413. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/provision-worker.sh +0 -0
  414. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  415. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  416. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/azure-workers/verify-github-token.sh +0 -0
  417. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/codegen.py +0 -0
  418. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/drive-batch.sh +0 -0
  419. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/gen_board_fixture.py +0 -0
  420. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/next_release_tag.py +0 -0
  421. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/run_tests_in_populated_home.sh +0 -0
  422. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/run_tests_without_gh.sh +0 -0
  423. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/smoke_437_interactive.py +0 -0
  424. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/verify_878_review_capture.py +0 -0
  425. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/verify_release_published.py +0 -0
  426. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/scripts/verify_release_wheel.py +0 -0
  427. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/setup.cfg +0 -0
  428. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/SMOKE_SET.md +0 -0
  429. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/__init__.py +0 -0
  430. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  431. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-33/contract.md +0 -0
  432. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-33/manifest.yml +0 -0
  433. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  434. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  435. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  436. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  437. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-37/conftest.py +0 -0
  438. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-37/contract.md +0 -0
  439. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-37/manifest.yml +0 -0
  440. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  441. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  442. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/contract.md +0 -0
  443. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/manifest.yml +0 -0
  444. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  445. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  446. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  447. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  448. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  449. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  450. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  451. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  452. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  453. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  454. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-51/contract.md +0 -0
  455. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  456. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  457. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-51/manifest.yml +0 -0
  458. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  459. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-51/tsconfig.json +0 -0
  460. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  461. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/contract.md +0 -0
  462. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/manifest.yml +0 -0
  463. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  464. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  465. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  466. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  467. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  468. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  469. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  470. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  471. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  472. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/conftest.py +0 -0
  473. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/board-pipeline-basic.json +0 -0
  474. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  475. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  476. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  477. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  478. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/playwright/all_pass.json +0 -0
  479. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  480. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/playwright/mixed_fail.json +0 -0
  481. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  482. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  483. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/playwright/skip.json +0 -0
  484. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/playwright/truncated.json +0 -0
  485. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  486. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  487. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  488. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  489. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  490. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  491. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  492. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  493. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_acceptance.py +0 -0
  494. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_acceptance_drivers.py +0 -0
  495. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent.py +0 -0
  496. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_api_error.py +0 -0
  497. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_app.py +0 -0
  498. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_branch_base.py +0 -0
  499. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_branch_capture.py +0 -0
  500. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_config_free_1712.py +0 -0
  501. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_deploy_units_endpoint.py +0 -0
  502. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_dirty_worktree.py +0 -0
  503. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_graph_self_heal.py +0 -0
  504. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_health_h3.py +0 -0
  505. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_idle_restart.py +0 -0
  506. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_push_failure.py +0 -0
  507. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_reap.py +0 -0
  508. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_repos_and_pull.py +0 -0
  509. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_restart_services_endpoint.py +0 -0
  510. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_startup_diagnostics.py +0 -0
  511. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_update.py +0 -0
  512. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_update_bluegreen.py +0 -0
  513. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_usage_limit.py +0 -0
  514. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_agent_zero_commit.py +0 -0
  515. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_ambient_home_isolation.py +0 -0
  516. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_approve_reject_plan.py +0 -0
  517. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_approve_usage_gate.py +0 -0
  518. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_assignment_already_recorded_daemon.py +0 -0
  519. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_audit_log.py +0 -0
  520. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_audit_outcome.py +0 -0
  521. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_audit_query.py +0 -0
  522. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_auto_loop.py +0 -0
  523. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_auto_release_publish_2035.py +0 -0
  524. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_base_checkout_restore.py +0 -0
  525. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_block_log.py +0 -0
  526. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_board_cap_762.py +0 -0
  527. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_board_fixture.py +0 -0
  528. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_board_read_path.py +0 -0
  529. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_board_service.py +0 -0
  530. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_board_state.py +0 -0
  531. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_board_wire.py +0 -0
  532. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_brain.py +0 -0
  533. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_branch_model.py +0 -0
  534. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_bug_intake.py +0 -0
  535. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_build_worker_image_env_update.py +0 -0
  536. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cargo_cache.py +0 -0
  537. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_ci_acceptance_gate_1950.py +0 -0
  538. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_ci_parity_2091.py +0 -0
  539. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_claim.py +0 -0
  540. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_acceptance.py +0 -0
  541. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_assign.py +0 -0
  542. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  543. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_assign_interactive_remote.py +0 -0
  544. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_assign_provider.py +0 -0
  545. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  546. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_audit.py +0 -0
  547. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_chat_continue.py +0 -0
  548. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_diagnose_config_provenance.py +0 -0
  549. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_diagnose_graph.py +0 -0
  550. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_doctor.py +0 -0
  551. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_doctor_config_free_1801.py +0 -0
  552. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  553. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_drive.py +0 -0
  554. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_escalate.py +0 -0
  555. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_fix_headless_review.py +0 -0
  556. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_gate_a.py +0 -0
  557. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_install_drift.py +0 -0
  558. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_install_skills.py +0 -0
  559. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_issue_create_label.py +0 -0
  560. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_issue_reopen.py +0 -0
  561. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_merge.py +0 -0
  562. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_assign.py +0 -0
  563. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_capture.py +0 -0
  564. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_chat_add_child.py +0 -0
  565. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_dispatch.py +0 -0
  566. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_gate_b.py +0 -0
  567. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_gate_c.py +0 -0
  568. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_order.py +0 -0
  569. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  570. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_milestone_ship.py +0 -0
  571. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_network.py +0 -0
  572. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_new_issue_chat.py +0 -0
  573. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_plans.py +0 -0
  574. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_portal.py +0 -0
  575. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_pull_artifact.py +0 -0
  576. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_queue.py +0 -0
  577. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_reattach_sessions.py +0 -0
  578. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_refine_board.py +0 -0
  579. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_release_preflight.py +0 -0
  580. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_release_propagate.py +0 -0
  581. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_release_window.py +0 -0
  582. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_repo_2220.py +0 -0
  583. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_scorecard.py +0 -0
  584. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_set_review_findings.py +0 -0
  585. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_status_advisory_terminal.py +0 -0
  586. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_status_merge_queue.py +0 -0
  587. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_status_provider.py +0 -0
  588. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_status_review_finalizing.py +0 -0
  589. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_status_test_failed_tag.py +0 -0
  590. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_status_usage_limit.py +0 -0
  591. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_sync_comments_873.py +0 -0
  592. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_test_plan.py +0 -0
  593. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_track.py +0 -0
  594. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_tui_update.py +0 -0
  595. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cli_wait.py +0 -0
  596. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_client_base_install.py +0 -0
  597. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_comments.py +0 -0
  598. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_completion_summary.py +0 -0
  599. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_config.py +0 -0
  600. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_config_acceptance.py +0 -0
  601. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_config_audit.py +0 -0
  602. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_config_pricing.py +0 -0
  603. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  604. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_config_usage_gate.py +0 -0
  605. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_conflict_fix.py +0 -0
  606. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_conflict_fix_semantic.py +0 -0
  607. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_coord_test.py +0 -0
  608. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_coord_test_runner_baseline.py +0 -0
  609. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_coord_test_runner_routing.py +0 -0
  610. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_coord_test_runner_toolchain.py +0 -0
  611. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_coord_web_sse_restart_live.py +0 -0
  612. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_coordinator_machine.py +0 -0
  613. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_cross_platform_imports.py +0 -0
  614. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dashboard.py +0 -0
  615. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dashboard_fixture.py +0 -0
  616. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dashboard_terminal.py +0 -0
  617. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dashboard_terminal_live.py +0 -0
  618. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_db.py +0 -0
  619. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dead_end.py +0 -0
  620. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deploy_coord_db_backup.py +0 -0
  621. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deploy_coord_web_dist.py +0 -0
  622. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deploy_coord_web_rollback.py +0 -0
  623. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deploy_drive_queue_unit.py +0 -0
  624. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deploy_manifest.py +0 -0
  625. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deploy_units_lane.py +0 -0
  626. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deploy_web_unit.py +0 -0
  627. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_deps.py +0 -0
  628. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_diagnose.py +0 -0
  629. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dispatch.py +0 -0
  630. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dispatch_target_validation.py +0 -0
  631. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_dist_name.py +0 -0
  632. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_done_housekeeping.py +0 -0
  633. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_drive_state.py +0 -0
  634. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_drive_tmux.py +0 -0
  635. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_epic_up_capability_detection.py +0 -0
  636. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  637. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_epic_up_image_provenance.py +0 -0
  638. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_errors.py +0 -0
  639. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_events.py +0 -0
  640. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_failure_class.py +0 -0
  641. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_filelock.py +0 -0
  642. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  643. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_fix_of_force_override.py +0 -0
  644. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_fleet_config_health.py +0 -0
  645. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_fleet_health_probes.py +0 -0
  646. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_fleet_health_snapshot.py +0 -0
  647. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_freshness.py +0 -0
  648. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_gate_a.py +0 -0
  649. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_gate_b.py +0 -0
  650. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_gate_snapshot_staleness.py +0 -0
  651. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_gates.py +0 -0
  652. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  653. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_generated_types_fixture.py +0 -0
  654. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_github_ops.py +0 -0
  655. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_goal.py +0 -0
  656. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_graph_health.py +0 -0
  657. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_graph_selfheal_absent_2237.py +0 -0
  658. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_handoff.py +0 -0
  659. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_checks.py +0 -0
  660. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_cli.py +0 -0
  661. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_cli_graph.py +0 -0
  662. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_config.py +0 -0
  663. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_context.py +0 -0
  664. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_deploy_lane_facts.py +0 -0
  665. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_incident_regression.py +0 -0
  666. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_pypi.py +0 -0
  667. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_registry.py +0 -0
  668. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_timer_active.py +0 -0
  669. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_toolchain.py +0 -0
  670. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_unit_drift.py +0 -0
  671. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_health_unit_enablement.py +0 -0
  672. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_hooks.py +0 -0
  673. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_human_attended_437.py +0 -0
  674. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_init.py +0 -0
  675. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_integration.py +0 -0
  676. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_interactive_briefing_echo.py +0 -0
  677. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_interactive_prefill_state.py +0 -0
  678. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_interactive_session_relaunch.py +0 -0
  679. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_interactive_test_verdict_backstop.py +0 -0
  680. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_interactive_token_attribution.py +0 -0
  681. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_interactive_worktree.py +0 -0
  682. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_issue_store_seam.py +0 -0
  683. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_liveness_auditor.py +0 -0
  684. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_liveness_notify.py +0 -0
  685. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_machine_pause.py +0 -0
  686. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_merge_verify.py +0 -0
  687. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_milestone_chat.py +0 -0
  688. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_milestone_dispatch.py +0 -0
  689. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_milestone_gate.py +0 -0
  690. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_milestone_order.py +0 -0
  691. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_milestone_seam.py +0 -0
  692. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_mock_author.py +0 -0
  693. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_model_tiering.py +0 -0
  694. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_models.py +0 -0
  695. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_models_config_labels.py +0 -0
  696. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_needs_attention.py +0 -0
  697. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_network.py +0 -0
  698. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_new_issue_chat.py +0 -0
  699. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_next_release_tag.py +0 -0
  700. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_no_direct_gh_calls.py +0 -0
  701. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_node_shim.py +0 -0
  702. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_baseline.py +0 -0
  703. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_cli.py +0 -0
  704. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_collect.py +0 -0
  705. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_config.py +0 -0
  706. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_drive_seam.py +0 -0
  707. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_isolation.py +0 -0
  708. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_predicate.py +0 -0
  709. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_quiet_hours.py +0 -0
  710. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notifier_service.py +0 -0
  711. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notify.py +0 -0
  712. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_notify_drain.py +0 -0
  713. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_openapi.py +0 -0
  714. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_operational_defaults.py +0 -0
  715. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_overlap_fence.py +0 -0
  716. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_overlap_predict.py +0 -0
  717. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_packaged_deploy_units.py +0 -0
  718. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_parentage.py +0 -0
  719. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_paste_landed.py +0 -0
  720. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_pipeline.py +0 -0
  721. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_plan_followup_approve_plan_command.py +0 -0
  722. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_plan_followup_pr_command.py +0 -0
  723. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_plan_followup_review_command.py +0 -0
  724. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_plan_only.py +0 -0
  725. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_plan_parser.py +0 -0
  726. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_platform_paths.py +0 -0
  727. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_portal_bridge.py +0 -0
  728. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_portal_config.py +0 -0
  729. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_portal_sync.py +0 -0
  730. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_pr_body_lint.py +0 -0
  731. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_prereqs.py +0 -0
  732. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_production_db_guard.py +0 -0
  733. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_progress.py +0 -0
  734. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_provider_seam.py +0 -0
  735. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_providers.py +0 -0
  736. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_providers_config_labels.py +0 -0
  737. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_providers_pty.py +0 -0
  738. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_quiet_hours.py +0 -0
  739. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_quiet_hours_store_2146.py +0 -0
  740. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reap_merged_sessions.py +0 -0
  741. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reap_stale_interactive_tick.py +0 -0
  742. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reconcile.py +0 -0
  743. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reconcile_branch.py +0 -0
  744. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reconcile_completions.py +0 -0
  745. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reconcile_merges.py +0 -0
  746. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reconcile_no_agent_record.py +0 -0
  747. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reconcile_usage_limit_done.py +0 -0
  748. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_refine_chat.py +0 -0
  749. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_release_cordon_2101.py +0 -0
  750. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  751. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_release_cordon_deadlock_2240.py +0 -0
  752. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_release_propagate.py +0 -0
  753. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_release_unified_1242.py +0 -0
  754. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_release_verify.py +0 -0
  755. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_release_window.py +0 -0
  756. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_remote_auto_prune.py +0 -0
  757. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_remote_interactive_reaper.py +0 -0
  758. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_repo_edit_2220.py +0 -0
  759. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_repo_graph_fleet_2237.py +0 -0
  760. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_repo_onboard_2220.py +0 -0
  761. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_report_result_push.py +0 -0
  762. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_reports.py +0 -0
  763. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_retry.py +0 -0
  764. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_retry_advisory_1606.py +0 -0
  765. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_retry_type_1636.py +0 -0
  766. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_revalidate.py +0 -0
  767. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review.py +0 -0
  768. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_end_review_without_verdict.py +0 -0
  769. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_parse_failure_diagnostic.py +0 -0
  770. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_reaffirm.py +0 -0
  771. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_state.py +0 -0
  772. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_verdict_backstop.py +0 -0
  773. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_verdict_override_audit.py +0 -0
  774. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_verdict_relay.py +0 -0
  775. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_review_zero_commits.py +0 -0
  776. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_scoped_review_wiring.py +0 -0
  777. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_scorecard.py +0 -0
  778. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_serve.py +0 -0
  779. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_serve_app_board_trim.py +0 -0
  780. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_session.py +0 -0
  781. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_slice_issue_attribution.py +0 -0
  782. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_smoke.py +0 -0
  783. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_smoke_live_checkout_restore.py +0 -0
  784. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_smoke_workflow.py +0 -0
  785. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_spend_ceiling.py +0 -0
  786. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_spend_ceiling_coordinator.py +0 -0
  787. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_split.py +0 -0
  788. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_split_work.py +0 -0
  789. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_stage_projection.py +0 -0
  790. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_stalled_pipeline.py +0 -0
  791. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_state.py +0 -0
  792. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_state_review_findings_daemon.py +0 -0
  793. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_status_fleet_footer.py +0 -0
  794. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_stop_1567.py +0 -0
  795. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_stuck.py +0 -0
  796. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_terminal_command.py +0 -0
  797. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_test_author.py +0 -0
  798. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_test_chat.py +0 -0
  799. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_test_orchestrator.py +0 -0
  800. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_test_report.py +0 -0
  801. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_test_verdict_parsing.py +0 -0
  802. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_test_verdict_transcript_floor.py +0 -0
  803. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_thin_client_board_audit.py +0 -0
  804. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_thin_client_config_load_1080.py +0 -0
  805. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_thin_client_daemon_routing_906.py +0 -0
  806. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_tmux_host.py +0 -0
  807. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_tmux_session.py +0 -0
  808. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_transcript_floor.py +0 -0
  809. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_usage.py +0 -0
  810. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_usage_limits.py +0 -0
  811. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_usage_rollup.py +0 -0
  812. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_venv_live_install_2121.py +0 -0
  813. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_version_single_source.py +0 -0
  814. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_watch.py +0 -0
  815. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  816. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_worker_events.py +0 -0
  817. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_worker_image_pin_sync.py +0 -0
  818. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_worker_safety.py +0 -0
  819. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_worker_test_scoping.py +0 -0
  820. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_worktree.py +0 -0
  821. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  822. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/Cargo.lock +0 -0
  823. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/Cargo.toml +0 -0
  824. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/cargo-config-local-quadraui.toml.example +0 -0
  825. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/audit.rs +0 -0
  826. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/chat.rs +0 -0
  827. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/data.rs +0 -0
  828. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/dialogs.rs +0 -0
  829. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/drive.rs +0 -0
  830. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/drive_queue.rs +0 -0
  831. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/escalation.rs +0 -0
  832. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/events.rs +0 -0
  833. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/fixtures.rs +0 -0
  834. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/fleet_health.rs +0 -0
  835. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/fleet_sessions.rs +0 -0
  836. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/fleet_terminals.rs +0 -0
  837. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/format.rs +0 -0
  838. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/milestone_dag.rs +0 -0
  839. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/mod.rs +0 -0
  840. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/msv.rs +0 -0
  841. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/pipeline.rs +0 -0
  842. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/plans.rs +0 -0
  843. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/render.rs +0 -0
  844. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/reports.rs +0 -0
  845. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/sessions.rs +0 -0
  846. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/settings_ui.rs +0 -0
  847. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/sidebar.rs +0 -0
  848. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/terminal.rs +0 -0
  849. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/tests.rs +0 -0
  850. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/types.rs +0 -0
  851. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/app/workspace.rs +0 -0
  852. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/bin/gtk.rs +0 -0
  853. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/commands.rs +0 -0
  854. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/lib.rs +0 -0
  855. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/main.rs +0 -0
  856. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/src/settings.rs +0 -0
  857. {code_coordinator-0.5.124 → code_coordinator-0.5.125}/tui/tests/acceptance.rs +0 -0
  858. {code_coordinator-0.5.124 → 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.124
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.124
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,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.124",
2
+ "tag": "0.5.125",
3
3
  "distance": 0,
4
- "node": "g6db81a3b5b4ce09b2be4da91abbbe348a1fdebc7",
4
+ "node": "g45b284e5f4bdc6047cbd9db9e0a0d4f1c11ca154",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-17"
@@ -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
  )
@@ -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,