code-coordinator 0.5.164__tar.gz → 0.5.167__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 (879) hide show
  1. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/drive.py +111 -39
  5. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/drive_queue.py +96 -3
  6. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_drive.py +125 -5
  7. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_drive_queue.py +177 -0
  8. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/pipeline.rs +18 -0
  9. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/tests.rs +57 -0
  10. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/types.rs +3 -5
  11. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.claude/commands/board.md +0 -0
  12. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.claude/commands/complete-session.md +0 -0
  13. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.claude/commands/coordinator.md +0 -0
  14. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.githooks/_lib.sh +0 -0
  15. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.githooks/post-checkout +0 -0
  16. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.githooks/post-commit +0 -0
  17. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.githooks/post-merge +0 -0
  18. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  19. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.github/coord-ci-acceptance.yml +0 -0
  20. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.github/workflows/acceptance-web.yml +0 -0
  21. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.github/workflows/auto-release.yml +0 -0
  22. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.github/workflows/cargo-test.yml +0 -0
  23. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.github/workflows/publish.yml +0 -0
  24. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.github/workflows/release-tui.yml +0 -0
  25. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.github/workflows/test.yml +0 -0
  26. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/.gitignore +0 -0
  27. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/CLAUDE.md +0 -0
  28. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/GOAL.md +0 -0
  29. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/LICENSE +0 -0
  30. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/MANIFEST.in +0 -0
  31. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/README.md +0 -0
  32. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/code_coordinator.egg-info/SOURCES.txt +0 -0
  33. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/code_coordinator.egg-info/dependency_links.txt +0 -0
  34. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/code_coordinator.egg-info/entry_points.txt +0 -0
  35. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/code_coordinator.egg-info/requires.txt +0 -0
  36. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/code_coordinator.egg-info/scm_file_list.json +0 -0
  37. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/code_coordinator.egg-info/top_level.txt +0 -0
  38. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/__init__.py +0 -0
  39. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/_board_mapping.py +0 -0
  40. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/acceptance.py +0 -0
  41. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/acceptance_drivers.py +0 -0
  42. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/agent.py +0 -0
  43. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/agent_app.py +0 -0
  44. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/agent_update.py +0 -0
  45. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/agents/opencode/.gitignore +0 -0
  46. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/agents/opencode/agents/work.md +0 -0
  47. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/agents/opencode/routing.jsonc +0 -0
  48. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/audit.py +0 -0
  49. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/auto_loop.py +0 -0
  50. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/block_log.py +0 -0
  51. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/board_bool_guard.py +0 -0
  52. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/board_service.py +0 -0
  53. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/board_wire.py +0 -0
  54. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/brain.py +0 -0
  55. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/branch_model.py +0 -0
  56. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/bug_intake.py +0 -0
  57. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/cargo_cache.py +0 -0
  58. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/ci_github.py +0 -0
  59. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/ci_store.py +0 -0
  60. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/claim.py +0 -0
  61. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/cli.py +0 -0
  62. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/client.py +0 -0
  63. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/__init__.py +0 -0
  64. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/_common.py +0 -0
  65. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/acceptance.py +0 -0
  66. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/agent_ops.py +0 -0
  67. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/audit.py +0 -0
  68. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/chat.py +0 -0
  69. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/dispatch.py +0 -0
  70. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/dispatch_workers.py +0 -0
  71. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/drive.py +0 -0
  72. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/drive_queue.py +0 -0
  73. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/gate_a.py +0 -0
  74. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/gates.py +0 -0
  75. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/issues.py +0 -0
  76. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/lifecycle.py +0 -0
  77. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/merge.py +0 -0
  78. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/milestone.py +0 -0
  79. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/plan_followup.py +0 -0
  80. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/plans.py +0 -0
  81. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/portal.py +0 -0
  82. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/release.py +0 -0
  83. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/repo.py +0 -0
  84. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/report.py +0 -0
  85. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/review.py +0 -0
  86. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/scorecard.py +0 -0
  87. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/sessions.py +0 -0
  88. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/setup.py +0 -0
  89. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/status.py +0 -0
  90. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/terminal.py +0 -0
  91. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/test_gate.py +0 -0
  92. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/commands/tui.py +0 -0
  93. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/comments.py +0 -0
  94. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/config.py +0 -0
  95. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/config_reload.py +0 -0
  96. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/conflict_fix.py +0 -0
  97. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dao.py +0 -0
  98. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/__init__.py +0 -0
  99. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/fixture.py +0 -0
  100. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/index.html +0 -0
  101. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/server.py +0 -0
  102. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/terminal.py +0 -0
  103. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/.gitignore +0 -0
  104. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/components.json +0 -0
  105. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
  106. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  107. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
  108. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
  109. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  110. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  111. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  112. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  113. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  114. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/index.html +0 -0
  115. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  116. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/sw.js +0 -0
  117. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  118. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  119. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  120. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  121. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  122. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  123. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  124. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  125. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  126. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  127. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/eslint.config.js +0 -0
  128. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/index.html +0 -0
  129. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  130. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/package-lock.json +0 -0
  131. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/package.json +0 -0
  132. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  133. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/playwright.config.ts +0 -0
  134. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/postcss.config.js +0 -0
  135. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  136. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  137. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  138. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/App.tsx +0 -0
  139. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/api/client.ts +0 -0
  140. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  141. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  142. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  143. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  144. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  145. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  146. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  147. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  148. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  149. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  150. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  151. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  152. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  153. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  154. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  155. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  156. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  157. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  158. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  159. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  160. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  161. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  162. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  163. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  164. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  165. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  166. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  167. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  168. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  169. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  170. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  171. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  172. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  173. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  174. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  175. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/index.css +0 -0
  176. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  177. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  178. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/main.tsx +0 -0
  179. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  180. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  181. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  182. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  183. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  184. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  185. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  186. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  187. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  188. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  189. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  190. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  191. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  192. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  193. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  194. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  195. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  196. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  197. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  198. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  199. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  200. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  201. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  202. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/tailwind.config.js +0 -0
  203. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/tsconfig.json +0 -0
  204. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  205. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dashboard/webapp/vite.config.ts +0 -0
  206. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/db.py +0 -0
  207. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dead_end.py +0 -0
  208. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/README.md +0 -0
  209. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-agent.service +0 -0
  210. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-db-backup.service +0 -0
  211. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-db-backup.sh +0 -0
  212. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-db-backup.timer +0 -0
  213. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-drive-queue.service +0 -0
  214. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-drive-queue.timer +0 -0
  215. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-notify.service +0 -0
  216. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-notify.timer +0 -0
  217. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-release-propagate.service +0 -0
  218. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-release-propagate.timer +0 -0
  219. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-release-window.service +0 -0
  220. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-release-window.timer +0 -0
  221. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-serve.service +0 -0
  222. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-web-dist-build.service +0 -0
  223. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-web-dist-build.timer +0 -0
  224. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy/coord-web.service +0 -0
  225. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy_manifest.py +0 -0
  226. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deploy_units.py +0 -0
  227. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/deps.py +0 -0
  228. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/diagnose.py +0 -0
  229. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dispatch.py +0 -0
  230. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/dist_name.py +0 -0
  231. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/drive_state.py +0 -0
  232. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/events.py +0 -0
  233. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/failure_class.py +0 -0
  234. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/filelock.py +0 -0
  235. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/fleet_config_health.py +0 -0
  236. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/freshness.py +0 -0
  237. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/gate_a.py +0 -0
  238. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/gate_b.py +0 -0
  239. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/gate_snapshot.py +0 -0
  240. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/gates.py +0 -0
  241. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/github_ops.py +0 -0
  242. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/goal.py +0 -0
  243. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/graph_health.py +0 -0
  244. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/__init__.py +0 -0
  245. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/aggregate.py +0 -0
  246. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/__init__.py +0 -0
  247. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/agent_install.py +0 -0
  248. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/cargo_targets.py +0 -0
  249. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/claude_binary.py +0 -0
  250. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/deploy_lane_facts.py +0 -0
  251. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/disk.py +0 -0
  252. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/fleet_board.py +0 -0
  253. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  254. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/fleet_phantom.py +0 -0
  255. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/fleet_unit_drift.py +0 -0
  256. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/graph.py +0 -0
  257. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/graphify_cli.py +0 -0
  258. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/index_lock.py +0 -0
  259. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/plan_usage.py +0 -0
  260. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/repo_state.py +0 -0
  261. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/spawned_coord.py +0 -0
  262. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/timer_active.py +0 -0
  263. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/toolchain.py +0 -0
  264. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/unit_drift.py +0 -0
  265. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/unit_enablement.py +0 -0
  266. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/checks/worktrees.py +0 -0
  267. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/cli.py +0 -0
  268. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/context.py +0 -0
  269. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/fleet_snapshot.py +0 -0
  270. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/models.py +0 -0
  271. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/pypi.py +0 -0
  272. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/registry.py +0 -0
  273. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/render.py +0 -0
  274. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/health/units.py +0 -0
  275. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/hooks.py +0 -0
  276. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/housekeeping.py +0 -0
  277. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/interactive.py +0 -0
  278. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/issue_store.py +0 -0
  279. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/liveness_auditor.py +0 -0
  280. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/machine_pause.py +0 -0
  281. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/merge_queue.py +0 -0
  282. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/milestone_chat.py +0 -0
  283. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/milestone_dispatch.py +0 -0
  284. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/milestone_gate.py +0 -0
  285. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/milestone_order.py +0 -0
  286. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/mock_author.py +0 -0
  287. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/models.py +0 -0
  288. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/network.py +0 -0
  289. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/new_issue_chat.py +0 -0
  290. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/notifier/__init__.py +0 -0
  291. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/notifier/baseline.py +0 -0
  292. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/notifier/cli.py +0 -0
  293. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/notifier/collect.py +0 -0
  294. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/notifier/digest.py +0 -0
  295. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/notifier/models.py +0 -0
  296. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/notifier/predicate.py +0 -0
  297. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/notifier/service.py +0 -0
  298. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/notifier/store.py +0 -0
  299. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/notifier/transport.py +0 -0
  300. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/notify.py +0 -0
  301. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/openapi.py +0 -0
  302. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/overlap_fence.py +0 -0
  303. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/overlap_predict.py +0 -0
  304. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/parentage.py +0 -0
  305. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/parentage_github.py +0 -0
  306. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/pipeline.py +0 -0
  307. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/plan_parser.py +0 -0
  308. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/plans.py +0 -0
  309. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/platform_paths.py +0 -0
  310. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/portal_bridge.py +0 -0
  311. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/portal_store.py +0 -0
  312. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/portal_sync.py +0 -0
  313. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/pr_body_lint.py +0 -0
  314. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/prereqs.py +0 -0
  315. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/progress.py +0 -0
  316. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/providers/__init__.py +0 -0
  317. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/providers/base.py +0 -0
  318. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/providers/claude.py +0 -0
  319. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/providers/claude_pty.py +0 -0
  320. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/providers/opencode.py +0 -0
  321. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/queue_diagnose.py +0 -0
  322. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/reconcile.py +0 -0
  323. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/reconcile_tick.py +0 -0
  324. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/refine_chat.py +0 -0
  325. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/release_cordon.py +0 -0
  326. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/release_propagate.py +0 -0
  327. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/release_verify.py +0 -0
  328. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/release_window.py +0 -0
  329. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/repo_edit.py +0 -0
  330. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/repo_onboard.py +0 -0
  331. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/reports.py +0 -0
  332. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/revalidate.py +0 -0
  333. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/review.py +0 -0
  334. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/scorecard.py +0 -0
  335. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/serve_app.py +0 -0
  336. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  337. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  338. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  339. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  340. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  341. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/skills/portal-followup/SKILL.md +0 -0
  342. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  343. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  344. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/skills/update-issue/SKILL.md +0 -0
  345. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/smoke.py +0 -0
  346. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/spend_ceiling.py +0 -0
  347. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/split_work.py +0 -0
  348. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/stage_projection.py +0 -0
  349. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/state.py +0 -0
  350. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/test_author.py +0 -0
  351. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/test_chat.py +0 -0
  352. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/test_orchestrator.py +0 -0
  353. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/test_report.py +0 -0
  354. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/tui_release.py +0 -0
  355. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/usage.py +0 -0
  356. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/usage_limits.py +0 -0
  357. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/usage_rollup.py +0 -0
  358. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coord/worker_events.py +0 -0
  359. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/coordinator.example.yml +0 -0
  360. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-agent.service +0 -0
  361. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-db-backup.service +0 -0
  362. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-db-backup.sh +0 -0
  363. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-db-backup.timer +0 -0
  364. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-drive-queue.service +0 -0
  365. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-drive-queue.timer +0 -0
  366. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-notify.service +0 -0
  367. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-notify.timer +0 -0
  368. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-release-propagate.service +0 -0
  369. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-release-propagate.timer +0 -0
  370. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-release-window.service +0 -0
  371. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-release-window.timer +0 -0
  372. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-serve.service +0 -0
  373. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-web-dist-build.service +0 -0
  374. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-web-dist-build.sh +0 -0
  375. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-web-dist-build.timer +0 -0
  376. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-web-rollback.sh +0 -0
  377. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/coord-web.service +0 -0
  378. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/deploy/node-shim.sh +0 -0
  379. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/ADR_COORD_WEB_DIST.md +0 -0
  380. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/AGENT_OPERATIONS.md +0 -0
  381. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/ARCHITECTURE.md +0 -0
  382. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/ARCH_SECURITY_GATES.md +0 -0
  383. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/COCKPIT.md +0 -0
  384. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/CONTROL_CENTER.md +0 -0
  385. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/COST_DISCIPLINE.md +0 -0
  386. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/CROSS_PLATFORM.md +0 -0
  387. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/CUSTOMER_PORTAL.md +0 -0
  388. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/DRIVE_QUEUE.md +0 -0
  389. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/EPHEMERAL_WORKERS.md +0 -0
  390. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/FORGE_MIGRATION.md +0 -0
  391. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/GRAPHIFY_SETUP.md +0 -0
  392. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/ISSUE_GUIDANCE.md +0 -0
  393. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/MAC_MINI.md +0 -0
  394. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  395. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/NOTIFIER.md +0 -0
  396. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/OPENCODE_VERIFICATION.md +0 -0
  397. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/OPERATING_GOTCHAS.md +0 -0
  398. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/ORACLE_LOOP.md +0 -0
  399. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/PHONE_WEBAPP.md +0 -0
  400. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/PIPELINE_V2.md +0 -0
  401. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/PLATFORM_EVOLUTION.md +0 -0
  402. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/SECOND_BACKEND.md +0 -0
  403. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/STORE_SERVICE.md +0 -0
  404. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  405. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/WEB_CONTROL_CENTER.md +0 -0
  406. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/WSL_WINDOWS_WORKER.md +0 -0
  407. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/mocks/web/README.md +0 -0
  408. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/mocks/web/_tokens.css +0 -0
  409. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/mocks/web/issue-detail.html +0 -0
  410. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/mocks/web/pipeline-narrow.html +0 -0
  411. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/docs/mocks/web/pipeline-wide.html +0 -0
  412. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/graphify-out/.gitignore +0 -0
  413. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/install-agent.sh +0 -0
  414. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/pyproject.toml +0 -0
  415. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/audit_review_verdict_overrides.py +0 -0
  416. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  417. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/azure-workers/build-worker-image.sh +0 -0
  418. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/azure-workers/coordinator-machine.py +0 -0
  419. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/azure-workers/epic-down.sh +0 -0
  420. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/azure-workers/epic-up.sh +0 -0
  421. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/azure-workers/preflight.sh +0 -0
  422. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/azure-workers/provision-worker.sh +0 -0
  423. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  424. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  425. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/azure-workers/verify-github-token.sh +0 -0
  426. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/codegen.py +0 -0
  427. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/coord-test-runner.sh +0 -0
  428. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/drive-batch.sh +0 -0
  429. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/gen_board_fixture.py +0 -0
  430. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/next_release_tag.py +0 -0
  431. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/run_tests_in_populated_home.sh +0 -0
  432. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/run_tests_without_gh.sh +0 -0
  433. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/smoke_437_interactive.py +0 -0
  434. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/verify_878_review_capture.py +0 -0
  435. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/verify_release_published.py +0 -0
  436. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/scripts/verify_release_wheel.py +0 -0
  437. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/setup.cfg +0 -0
  438. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/SMOKE_SET.md +0 -0
  439. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/__init__.py +0 -0
  440. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  441. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-33/contract.md +0 -0
  442. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-33/manifest.yml +0 -0
  443. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  444. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  445. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  446. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  447. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-37/conftest.py +0 -0
  448. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-37/contract.md +0 -0
  449. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-37/manifest.yml +0 -0
  450. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  451. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  452. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-38/contract.md +0 -0
  453. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-38/manifest.yml +0 -0
  454. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  455. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  456. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  457. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  458. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  459. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  460. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  461. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  462. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  463. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  464. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-51/contract.md +0 -0
  465. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  466. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  467. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-51/manifest.yml +0 -0
  468. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  469. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-51/tsconfig.json +0 -0
  470. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  471. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  472. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-65/contract.md +0 -0
  473. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  474. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-65/manifest.yml +0 -0
  475. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  476. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  477. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  478. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  479. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  480. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  481. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  482. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  483. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  484. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  485. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  486. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/conftest.py +0 -0
  487. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/board-pipeline-basic.json +0 -0
  488. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  489. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  490. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  491. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  492. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/playwright/all_pass.json +0 -0
  493. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  494. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/playwright/mixed_fail.json +0 -0
  495. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  496. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  497. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/playwright/skip.json +0 -0
  498. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/playwright/truncated.json +0 -0
  499. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  500. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  501. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  502. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  503. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  504. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  505. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  506. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  507. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_acceptance.py +0 -0
  508. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_acceptance_drivers.py +0 -0
  509. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent.py +0 -0
  510. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_api_error.py +0 -0
  511. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_app.py +0 -0
  512. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_branch_base.py +0 -0
  513. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_branch_capture.py +0 -0
  514. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_config_free_1712.py +0 -0
  515. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_deploy_units_endpoint.py +0 -0
  516. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_dirty_worktree.py +0 -0
  517. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  518. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_graph_self_heal.py +0 -0
  519. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_health_h3.py +0 -0
  520. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_idle_restart.py +0 -0
  521. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_push_failure.py +0 -0
  522. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_reap.py +0 -0
  523. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_repos_and_pull.py +0 -0
  524. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_restart_services_endpoint.py +0 -0
  525. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_skills_self_heal.py +0 -0
  526. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_startup_diagnostics.py +0 -0
  527. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_update.py +0 -0
  528. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_update_bluegreen.py +0 -0
  529. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_usage_limit.py +0 -0
  530. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_agent_zero_commit.py +0 -0
  531. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_ambient_home_isolation.py +0 -0
  532. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_approve_reject_plan.py +0 -0
  533. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_approve_usage_gate.py +0 -0
  534. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_assignment_already_recorded_daemon.py +0 -0
  535. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_audit_log.py +0 -0
  536. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_audit_outcome.py +0 -0
  537. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_audit_query.py +0 -0
  538. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_auto_loop.py +0 -0
  539. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_auto_release_publish_2035.py +0 -0
  540. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_base_checkout_restore.py +0 -0
  541. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_block_log.py +0 -0
  542. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_board_cap_762.py +0 -0
  543. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_board_fixture.py +0 -0
  544. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_board_read_path.py +0 -0
  545. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_board_service.py +0 -0
  546. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_board_state.py +0 -0
  547. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_board_wire.py +0 -0
  548. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_brain.py +0 -0
  549. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_branch_model.py +0 -0
  550. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_bug_intake.py +0 -0
  551. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_build_worker_image_env_update.py +0 -0
  552. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cargo_cache.py +0 -0
  553. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_ci_acceptance_gate_1950.py +0 -0
  554. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_ci_parity_2091.py +0 -0
  555. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_ci_store.py +0 -0
  556. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_claim.py +0 -0
  557. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_acceptance.py +0 -0
  558. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_assign.py +0 -0
  559. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  560. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_assign_interactive_remote.py +0 -0
  561. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_assign_provider.py +0 -0
  562. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  563. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_audit.py +0 -0
  564. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_chat_continue.py +0 -0
  565. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_decide.py +0 -0
  566. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_diagnose_config_provenance.py +0 -0
  567. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_diagnose_graph.py +0 -0
  568. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_doctor.py +0 -0
  569. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_doctor_config_free_1801.py +0 -0
  570. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  571. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_drive.py +0 -0
  572. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_drive_queue.py +0 -0
  573. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_escalate.py +0 -0
  574. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_fix_headless_review.py +0 -0
  575. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_gate_a.py +0 -0
  576. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_install_drift.py +0 -0
  577. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_install_skills.py +0 -0
  578. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_issue_create_label.py +0 -0
  579. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_issue_reopen.py +0 -0
  580. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_merge.py +0 -0
  581. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_milestone_assign.py +0 -0
  582. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_milestone_capture.py +0 -0
  583. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_milestone_chat_add_child.py +0 -0
  584. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_milestone_dispatch.py +0 -0
  585. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_milestone_gate_b.py +0 -0
  586. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_milestone_gate_c.py +0 -0
  587. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_milestone_order.py +0 -0
  588. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  589. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_milestone_ship.py +0 -0
  590. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_network.py +0 -0
  591. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_new_issue_chat.py +0 -0
  592. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_plans.py +0 -0
  593. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_portal.py +0 -0
  594. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_pull_artifact.py +0 -0
  595. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_queue.py +0 -0
  596. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_reattach_sessions.py +0 -0
  597. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_refine_board.py +0 -0
  598. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_release_preflight.py +0 -0
  599. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_release_propagate.py +0 -0
  600. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_release_window.py +0 -0
  601. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_repo_2220.py +0 -0
  602. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_scorecard.py +0 -0
  603. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_set_review_findings.py +0 -0
  604. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_status_advisory_terminal.py +0 -0
  605. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_status_merge_queue.py +0 -0
  606. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_status_provider.py +0 -0
  607. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_status_review_finalizing.py +0 -0
  608. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_status_test_failed_tag.py +0 -0
  609. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_status_usage_limit.py +0 -0
  610. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_sync_comments_873.py +0 -0
  611. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_test_plan.py +0 -0
  612. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_track.py +0 -0
  613. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_tui_update.py +0 -0
  614. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cli_wait.py +0 -0
  615. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_client_base_install.py +0 -0
  616. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_comments.py +0 -0
  617. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_completion_summary.py +0 -0
  618. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_config.py +0 -0
  619. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_config_acceptance.py +0 -0
  620. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_config_audit.py +0 -0
  621. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_config_pricing.py +0 -0
  622. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  623. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_config_usage_gate.py +0 -0
  624. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_conflict_fix.py +0 -0
  625. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_conflict_fix_semantic.py +0 -0
  626. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_coord_test.py +0 -0
  627. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_coord_test_runner_baseline.py +0 -0
  628. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_coord_test_runner_populated_home.py +0 -0
  629. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_coord_test_runner_routing.py +0 -0
  630. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_coord_test_runner_toolchain.py +0 -0
  631. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_coord_web_sse_restart_live.py +0 -0
  632. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_coordinator_machine.py +0 -0
  633. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_cross_platform_imports.py +0 -0
  634. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_dashboard.py +0 -0
  635. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_dashboard_fixture.py +0 -0
  636. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_dashboard_terminal.py +0 -0
  637. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_dashboard_terminal_live.py +0 -0
  638. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_db.py +0 -0
  639. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_dead_end.py +0 -0
  640. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_deploy_coord_db_backup.py +0 -0
  641. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_deploy_coord_web_dist.py +0 -0
  642. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_deploy_coord_web_rollback.py +0 -0
  643. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_deploy_drive_queue_unit.py +0 -0
  644. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_deploy_manifest.py +0 -0
  645. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_deploy_units_lane.py +0 -0
  646. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_deploy_web_unit.py +0 -0
  647. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_deps.py +0 -0
  648. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_diagnose.py +0 -0
  649. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_dispatch.py +0 -0
  650. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_dispatch_target_validation.py +0 -0
  651. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_dist_name.py +0 -0
  652. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_done_housekeeping.py +0 -0
  653. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_drive_state.py +0 -0
  654. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_drive_tmux.py +0 -0
  655. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_epic_up_capability_detection.py +0 -0
  656. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  657. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_epic_up_image_provenance.py +0 -0
  658. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_errors.py +0 -0
  659. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_events.py +0 -0
  660. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_failure_class.py +0 -0
  661. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_filelock.py +0 -0
  662. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  663. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_fix_of_force_override.py +0 -0
  664. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_fleet_config_health.py +0 -0
  665. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_fleet_health_probes.py +0 -0
  666. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_fleet_health_snapshot.py +0 -0
  667. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_freshness.py +0 -0
  668. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_gate_a.py +0 -0
  669. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_gate_b.py +0 -0
  670. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_gate_snapshot_staleness.py +0 -0
  671. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_gates.py +0 -0
  672. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  673. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_generated_types_fixture.py +0 -0
  674. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_github_ops.py +0 -0
  675. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_goal.py +0 -0
  676. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_graph_health.py +0 -0
  677. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_graph_selfheal_absent_2237.py +0 -0
  678. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_handoff.py +0 -0
  679. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_health_checks.py +0 -0
  680. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_health_cli.py +0 -0
  681. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_health_cli_graph.py +0 -0
  682. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_health_config.py +0 -0
  683. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_health_context.py +0 -0
  684. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_health_deploy_lane_facts.py +0 -0
  685. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_health_incident_regression.py +0 -0
  686. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_health_pypi.py +0 -0
  687. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_health_registry.py +0 -0
  688. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_health_timer_active.py +0 -0
  689. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_health_toolchain.py +0 -0
  690. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_health_unit_drift.py +0 -0
  691. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_health_unit_enablement.py +0 -0
  692. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_hooks.py +0 -0
  693. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_human_attended_437.py +0 -0
  694. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_init.py +0 -0
  695. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_integration.py +0 -0
  696. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_interactive_briefing_echo.py +0 -0
  697. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_interactive_prefill_state.py +0 -0
  698. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_interactive_session_relaunch.py +0 -0
  699. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_interactive_test_verdict_backstop.py +0 -0
  700. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_interactive_token_attribution.py +0 -0
  701. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_interactive_worktree.py +0 -0
  702. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_issue_store_seam.py +0 -0
  703. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_liveness_auditor.py +0 -0
  704. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_liveness_notify.py +0 -0
  705. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_machine_pause.py +0 -0
  706. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_merge_queue.py +0 -0
  707. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_merge_verify.py +0 -0
  708. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_milestone_chat.py +0 -0
  709. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_milestone_dispatch.py +0 -0
  710. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_milestone_gate.py +0 -0
  711. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_milestone_order.py +0 -0
  712. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_milestone_seam.py +0 -0
  713. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_mock_author.py +0 -0
  714. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_model_tiering.py +0 -0
  715. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_models.py +0 -0
  716. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_models_config_labels.py +0 -0
  717. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_needs_attention.py +0 -0
  718. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_network.py +0 -0
  719. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_new_issue_chat.py +0 -0
  720. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_next_release_tag.py +0 -0
  721. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_no_direct_gh_calls.py +0 -0
  722. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_node_shim.py +0 -0
  723. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_notifier_baseline.py +0 -0
  724. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_notifier_cli.py +0 -0
  725. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_notifier_collect.py +0 -0
  726. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_notifier_config.py +0 -0
  727. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_notifier_drive_seam.py +0 -0
  728. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_notifier_isolation.py +0 -0
  729. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_notifier_predicate.py +0 -0
  730. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_notifier_quiet_hours.py +0 -0
  731. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_notifier_service.py +0 -0
  732. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_notify.py +0 -0
  733. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_notify_drain.py +0 -0
  734. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_openapi.py +0 -0
  735. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_operational_defaults.py +0 -0
  736. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_overlap_fence.py +0 -0
  737. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_overlap_predict.py +0 -0
  738. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_packaged_deploy_units.py +0 -0
  739. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_parentage.py +0 -0
  740. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_paste_landed.py +0 -0
  741. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_pipeline.py +0 -0
  742. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_plan_followup_approve_plan_command.py +0 -0
  743. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_plan_followup_pr_command.py +0 -0
  744. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_plan_followup_review_command.py +0 -0
  745. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_plan_only.py +0 -0
  746. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_plan_parser.py +0 -0
  747. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_platform_paths.py +0 -0
  748. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_portal_bridge.py +0 -0
  749. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_portal_config.py +0 -0
  750. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_portal_sync.py +0 -0
  751. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_pr_body_lint.py +0 -0
  752. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_prereqs.py +0 -0
  753. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_production_db_guard.py +0 -0
  754. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_progress.py +0 -0
  755. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_provider_seam.py +0 -0
  756. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_providers.py +0 -0
  757. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_providers_config_labels.py +0 -0
  758. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_providers_pty.py +0 -0
  759. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_quiet_hours.py +0 -0
  760. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_quiet_hours_store_2146.py +0 -0
  761. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_reap_merged_sessions.py +0 -0
  762. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_reap_stale_interactive_tick.py +0 -0
  763. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_reconcile.py +0 -0
  764. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_reconcile_branch.py +0 -0
  765. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_reconcile_completions.py +0 -0
  766. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_reconcile_merges.py +0 -0
  767. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_reconcile_no_agent_record.py +0 -0
  768. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_reconcile_tick.py +0 -0
  769. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_reconcile_usage_limit_done.py +0 -0
  770. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_refine_chat.py +0 -0
  771. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_release_cordon_2101.py +0 -0
  772. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  773. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_release_cordon_deadlock_2240.py +0 -0
  774. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_release_propagate.py +0 -0
  775. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_release_unified_1242.py +0 -0
  776. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_release_verify.py +0 -0
  777. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_release_window.py +0 -0
  778. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_remote_auto_prune.py +0 -0
  779. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_remote_interactive_reaper.py +0 -0
  780. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_repo_edit_2220.py +0 -0
  781. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_repo_graph_fleet_2237.py +0 -0
  782. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_repo_onboard_2220.py +0 -0
  783. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_report_result_push.py +0 -0
  784. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_reports.py +0 -0
  785. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_retry.py +0 -0
  786. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_retry_advisory_1606.py +0 -0
  787. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_retry_type_1636.py +0 -0
  788. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_revalidate.py +0 -0
  789. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_review.py +0 -0
  790. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_review_end_review_without_verdict.py +0 -0
  791. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_review_parse_failure_diagnostic.py +0 -0
  792. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_review_reaffirm.py +0 -0
  793. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_review_state.py +0 -0
  794. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_review_verdict_backstop.py +0 -0
  795. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_review_verdict_override_audit.py +0 -0
  796. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_review_verdict_relay.py +0 -0
  797. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_review_zero_commits.py +0 -0
  798. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_scoped_review_wiring.py +0 -0
  799. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_scorecard.py +0 -0
  800. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_serve.py +0 -0
  801. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_serve_app_board_trim.py +0 -0
  802. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_session.py +0 -0
  803. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_slice_issue_attribution.py +0 -0
  804. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_smoke.py +0 -0
  805. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_smoke_live_checkout_restore.py +0 -0
  806. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_smoke_workflow.py +0 -0
  807. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_spend_ceiling.py +0 -0
  808. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_spend_ceiling_coordinator.py +0 -0
  809. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_split.py +0 -0
  810. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_split_work.py +0 -0
  811. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_stage_projection.py +0 -0
  812. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_stalled_pipeline.py +0 -0
  813. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_state.py +0 -0
  814. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_state_review_findings_daemon.py +0 -0
  815. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_status_fleet_footer.py +0 -0
  816. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_stop_1567.py +0 -0
  817. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_stuck.py +0 -0
  818. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_terminal_command.py +0 -0
  819. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_test_author.py +0 -0
  820. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_test_chat.py +0 -0
  821. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_test_orchestrator.py +0 -0
  822. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_test_report.py +0 -0
  823. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_test_verdict_parsing.py +0 -0
  824. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_test_verdict_transcript_floor.py +0 -0
  825. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_thin_client_board_audit.py +0 -0
  826. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_thin_client_config_load_1080.py +0 -0
  827. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_thin_client_daemon_routing_906.py +0 -0
  828. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_tmux_host.py +0 -0
  829. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_tmux_session.py +0 -0
  830. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_transcript_floor.py +0 -0
  831. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_usage.py +0 -0
  832. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_usage_limits.py +0 -0
  833. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_usage_rollup.py +0 -0
  834. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_venv_live_install_2121.py +0 -0
  835. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_version_single_source.py +0 -0
  836. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_watch.py +0 -0
  837. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  838. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_worker_events.py +0 -0
  839. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_worker_image_pin_sync.py +0 -0
  840. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_worker_safety.py +0 -0
  841. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_worker_test_scoping.py +0 -0
  842. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_worktree.py +0 -0
  843. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  844. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/Cargo.lock +0 -0
  845. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/Cargo.toml +0 -0
  846. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/cargo-config-local-quadraui.toml.example +0 -0
  847. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/audit.rs +0 -0
  848. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/chat.rs +0 -0
  849. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/data.rs +0 -0
  850. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/dialogs.rs +0 -0
  851. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/doc_tabs.rs +0 -0
  852. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/drive.rs +0 -0
  853. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/drive_queue.rs +0 -0
  854. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/escalation.rs +0 -0
  855. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/events.rs +0 -0
  856. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/fixtures.rs +0 -0
  857. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/fleet_health.rs +0 -0
  858. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/fleet_sessions.rs +0 -0
  859. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/fleet_terminals.rs +0 -0
  860. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/format.rs +0 -0
  861. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/milestone_dag.rs +0 -0
  862. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/mod.rs +0 -0
  863. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/msv.rs +0 -0
  864. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/plans.rs +0 -0
  865. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/render.rs +0 -0
  866. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/reports.rs +0 -0
  867. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/sessions.rs +0 -0
  868. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/settings_ui.rs +0 -0
  869. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/sidebar.rs +0 -0
  870. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/terminal.rs +0 -0
  871. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/app/workspace.rs +0 -0
  872. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/bin/gtk.rs +0 -0
  873. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/commands.rs +0 -0
  874. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/lib.rs +0 -0
  875. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/main.rs +0 -0
  876. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/src/settings.rs +0 -0
  877. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/tests/acceptance.rs +0 -0
  878. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/tests/cli.rs +0 -0
  879. {code_coordinator-0.5.164 → code_coordinator-0.5.167}/tui/tests/fixtures/board_sample.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.164
3
+ Version: 0.5.167
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.164
3
+ Version: 0.5.167
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.164",
2
+ "tag": "0.5.167",
3
3
  "distance": 0,
4
- "node": "gacacc73c143b2a972a04f33649be185678913aa4",
4
+ "node": "g9016461101b4920502a7937e28cfdc70410ffc2f",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-19"
@@ -890,7 +890,20 @@ def _decide_acceptance_author(
890
890
  # pass-through.
891
891
  branch = state.acceptance_author_branch
892
892
  probe = replace(state, work_branch=branch) if branch else state
893
- if not branch or not verifier.branch_has_commits(probe):
893
+ commits = verifier.branch_has_commits(probe) if branch else False
894
+ if commits is None:
895
+ # #2426: `None` means the check could not be completed (e.g. a
896
+ # transient `git fetch` failure) — NOT evidence the branch is
897
+ # empty. Wait for the next poll to retry rather than
898
+ # misdiagnosing a verification failure as the terminal
899
+ # zero-commit dead end below.
900
+ return _wait(
901
+ label=(
902
+ f"ACCEPTANCE: JIT slice {aid} branch {branch!r} — could "
903
+ "not verify commits (git fetch failed), retrying"
904
+ )
905
+ )
906
+ if not commits:
894
907
  # #2061: a commit-less ADVISORY row IS what an earlier-landed
895
908
  # slice's stale/retried author row looks like — check the
896
909
  # manifest before declaring failure.
@@ -936,7 +949,20 @@ def _decide_acceptance_author(
936
949
  # `advisory` branch's probe exactly.
937
950
  branch = state.acceptance_author_branch
938
951
  probe = replace(state, work_branch=branch) if branch else state
939
- if not branch or not verifier.branch_has_commits(probe):
952
+ commits = verifier.branch_has_commits(probe) if branch else False
953
+ if commits is None:
954
+ # #2426: same distinction as the ADVISORY branch above — a
955
+ # verification failure is not proof of an empty branch. This is
956
+ # exactly the claude-coordinator#2286 incident: a real pushed
957
+ # commit sat on the remote while a transient `git fetch` failure
958
+ # made this arm declare the branch commit-less and terminal.
959
+ return _wait(
960
+ label=(
961
+ f"ACCEPTANCE: JIT slice {aid} branch {branch!r} — could "
962
+ "not verify commits (git fetch failed), retrying"
963
+ )
964
+ )
965
+ if not commits:
940
966
  # #2061 (coord-portal#13): a re-dispatched author that lands in
941
967
  # a world where the slice is ALREADY on the default branch
942
968
  # correctly does nothing — DONE with zero commits — and that is
@@ -1221,7 +1247,7 @@ def _acceptance_message(message: str, state: IssueState) -> str:
1221
1247
  class MergeVerifier(Protocol):
1222
1248
  """The git/GitHub questions the state machine cannot answer itself."""
1223
1249
 
1224
- def branch_has_commits(self, state: IssueState) -> bool: ...
1250
+ def branch_has_commits(self, state: IssueState) -> bool | None: ...
1225
1251
 
1226
1252
  def verify_merged(self, state: IssueState) -> bool: ...
1227
1253
 
@@ -1254,9 +1280,23 @@ class GitMergeVerifier:
1254
1280
  check=False,
1255
1281
  )
1256
1282
 
1257
- def branch_has_commits(self, state: IssueState) -> bool:
1258
- """True when *branch* exists on the remote and carries a commit the
1259
- default branch does not.
1283
+ def branch_has_commits(self, state: IssueState) -> bool | None:
1284
+ """``True``/``False`` when *branch* was actually checked against the
1285
+ default branch; ``None`` when the check could not be completed.
1286
+
1287
+ ``False`` means VERIFIED empty: the fetches and the ``rev-list``
1288
+ count all succeeded, and the count was exactly 0. ``None`` means no
1289
+ such evidence exists — a transient ``git fetch`` failure (network
1290
+ blip, GitHub hiccup, SSH auth glitch — see ``is_ci_unreadable_reason``
1291
+ for the CI-side equivalent of this exact distinction), a missing
1292
+ local checkout, or an unparsable ``rev-list`` count. Before #2426
1293
+ every one of those collapsed into ``False``, indistinguishable from a
1294
+ genuinely empty branch — and callers treated ``False`` as proof of a
1295
+ TERMINAL dead end, misdiagnosing a fetch hiccup as "nothing was ever
1296
+ authored" (claude-coordinator#2286: a real, pushed commit sat on the
1297
+ remote while `coord drive` declared the branch commit-less and burned
1298
+ 11 retry cycles re-authoring from scratch). ``None`` must never be
1299
+ treated as "no commits" — callers wait and let the next poll retry.
1260
1300
 
1261
1301
  Used to tell a REAL zero-commit advisory apart from the #1357 false
1262
1302
  positive, where the agent downgrades a good DONE over an artifact glob
@@ -1267,19 +1307,19 @@ class GitMergeVerifier:
1267
1307
  return False
1268
1308
  base = self._base(state)
1269
1309
  if base is None:
1270
- return False
1310
+ return None
1271
1311
  target = state.repo_default_branch or "main"
1272
1312
  if self._git(base, "fetch", "--quiet", "origin", target).returncode != 0:
1273
- return False
1313
+ return None
1274
1314
  if self._git(base, "fetch", "--quiet", "origin", branch).returncode != 0:
1275
- return False
1315
+ return None
1276
1316
  proc = self._git(base, "rev-list", "--count", f"origin/{target}..FETCH_HEAD")
1277
1317
  if proc.returncode != 0:
1278
- return False
1318
+ return None
1279
1319
  try:
1280
1320
  return int((proc.stdout or "0").strip() or 0) > 0
1281
1321
  except ValueError:
1282
- return False
1322
+ return None
1283
1323
 
1284
1324
  def verify_merged(self, state: IssueState) -> bool:
1285
1325
  """Confirm the branch actually landed on the target.
@@ -1699,16 +1739,22 @@ def decide(
1699
1739
  pass
1700
1740
  elif state.work_status == "advisory":
1701
1741
  advisory = _decide_advisory(state, opts, counters, machine, verifier)
1702
- # #2416: `_decide_advisory` now returns a RUN action (a bounded
1703
- # `coord retry` dispatch) for the zero-commit case, not only an EXIT
1704
- # `is_exit` alone would let a RUN action fall through to the
1742
+ # #2416: `_decide_advisory` returns a RUN action (a bounded `coord
1743
+ # retry` dispatch) for the zero-commit case, not only an EXIT
1744
+ # `is_exit` alone would let a RUN action fall through to the
1705
1745
  # Test/Review/Merge logic below as though the row were validated
1706
- # work. Only its "proceeding under --accept-advisory" branch returns
1707
- # WAIT (with warnings to fold in); every other branch (EXIT or RUN)
1708
- # is this poll's whole answer.
1709
- if advisory.kind != WAIT:
1746
+ # work. #2426: it returns an explicit WAIT for the "could not verify
1747
+ # fetch failed" case, which must ALSO be this poll's whole answer,
1748
+ # not folded into the fall-through below (that fall-through means
1749
+ # "commits confirmed present, proceed as normal work", which a
1750
+ # verification failure has not established either way). Only `None`
1751
+ # — "proceeding under --accept-advisory", commits confirmed present
1752
+ # — falls through, carrying its warning.
1753
+ if advisory is not None:
1710
1754
  return advisory
1711
- warnings = advisory.warnings
1755
+ warnings = (
1756
+ "ADVISORY with commits present — proceeding per --accept-advisory (#1357)",
1757
+ )
1712
1758
  elif state.work_status == "refused_policy":
1713
1759
  # #2234: the worker exited cleanly, pushed 0 commits, and its own
1714
1760
  # final message cited a standing repo-rule prohibition (`coord.agent.
@@ -1762,18 +1808,25 @@ def decide(
1762
1808
  # applies when there is nothing to test, review, or merge. A labelled
1763
1809
  # issue whose worker DID push commits (the label describes the common
1764
1810
  # case, not a hard rule) falls through unchanged — `branch_has_commits`
1765
- # is False only for the genuine 0-commit shape.
1766
- if (
1767
- state.work_status == "done"
1768
- and DELIVERABLE_ANALYSIS_LABEL in state.issue_labels
1769
- and (not state.work_branch or not verifier.branch_has_commits(state))
1770
- ):
1771
- return _succeed(
1772
- f"✓ ANALYSIS DELIVERABLE — {state.work_aid} completed with 0 "
1773
- f"commits (issue labelled `{DELIVERABLE_ANALYSIS_LABEL}`); the "
1774
- "worker's final message is the deliverable and was posted to "
1775
- "the issue automatically — nothing to test, review, or merge."
1776
- )
1811
+ # is False only for the genuine 0-commit shape; `None` (#2426 — the
1812
+ # check could not be completed, e.g. a `git fetch` failure) is neither
1813
+ # "done" nor "push commits", so it waits below instead of guessing.
1814
+ if state.work_status == "done" and DELIVERABLE_ANALYSIS_LABEL in state.issue_labels:
1815
+ commits = verifier.branch_has_commits(state) if state.work_branch else False
1816
+ if commits is None:
1817
+ return _wait(
1818
+ label=(
1819
+ f"ANALYSIS: {state.work_aid} could not verify branch "
1820
+ "commits (git fetch failed), retrying"
1821
+ )
1822
+ )
1823
+ if not commits:
1824
+ return _succeed(
1825
+ f"✓ ANALYSIS DELIVERABLE — {state.work_aid} completed with 0 "
1826
+ f"commits (issue labelled `{DELIVERABLE_ANALYSIS_LABEL}`); the "
1827
+ "worker's final message is the deliverable and was posted to "
1828
+ "the issue automatically — nothing to test, review, or merge."
1829
+ )
1777
1830
 
1778
1831
  # A 'done' row with no branch never pushed anything either.
1779
1832
  if not state.work_branch:
@@ -1930,7 +1983,7 @@ def _decide_advisory(
1930
1983
  counters: DriveCounters,
1931
1984
  machine: str,
1932
1985
  verifier: MergeVerifier,
1933
- ) -> Action:
1986
+ ) -> Action | None:
1934
1987
  """The #448 downgrade: the agent flagged a zero-commit / stash-miss exit.
1935
1988
 
1936
1989
  #1357 makes this a FALSE POSITIVE for every Python-only headless assignment
@@ -1952,8 +2005,30 @@ def _decide_advisory(
1952
2005
  advisory_retries`) before finally giving up, so a row whose correct
1953
2006
  resolution really is "dispatch something else" still reaches a terminal
1954
2007
  `_die()` naming `coord retry` for a human — never an unbounded loop.
2008
+
2009
+ Returns ``None`` only for the "commits confirmed present, proceed under
2010
+ --accept-advisory" case — the caller (`decide`) reads ``None`` as "fall
2011
+ through to the normal Test/Review/Merge machinery", the same "nothing to
2012
+ report, proceed" convention `_decide_test`/`_decide_review`/
2013
+ `_decide_acceptance_gate` already use. Every other outcome, including the
2014
+ #2426 "could not verify" case below, returns a real ``Action`` that IS
2015
+ this poll's whole answer.
1955
2016
  """
1956
- if not state.work_branch or not verifier.branch_has_commits(state):
2017
+ branch = state.work_branch
2018
+ commits = verifier.branch_has_commits(state) if branch else False
2019
+ if commits is None:
2020
+ # #2426: `git fetch` failing does not mean the branch is empty — it
2021
+ # means nothing was learned. Wait for the next poll to retry the
2022
+ # check itself; do NOT spend an `advisory_retries` budget attempt (or
2023
+ # worse, `_die()`) on a verification failure that says nothing about
2024
+ # what the branch actually contains.
2025
+ return _wait(
2026
+ label=(
2027
+ f"WORK: {state.work_aid} ADVISORY — could not verify branch "
2028
+ "commits (git fetch failed), retrying"
2029
+ )
2030
+ )
2031
+ if not commits:
1957
2032
  budget = opts.max_work_retries
1958
2033
  if counters.advisory_retries >= budget:
1959
2034
  return _die(
@@ -1992,12 +2067,9 @@ def _decide_advisory(
1992
2067
  " Proceed anyway with --accept-advisory (and fix #1357 to stop "
1993
2068
  "needing it)."
1994
2069
  )
1995
- return Action(
1996
- kind=WAIT,
1997
- warnings=(
1998
- "ADVISORY with commits present — proceeding per --accept-advisory (#1357)",
1999
- ),
2000
- )
2070
+ # Commits confirmed present, --accept-advisory set: fall through to the
2071
+ # normal Test/Review/Merge machinery (the caller attaches the warning).
2072
+ return None
2001
2073
 
2002
2074
 
2003
2075
  def _decide_acceptance_gate(
@@ -97,6 +97,7 @@ from coord.merge_queue import (
97
97
  is_ci_infra_reason,
98
98
  is_ci_pending_reason,
99
99
  is_ci_unreadable_reason,
100
+ is_stale_smoke_reason,
100
101
  )
101
102
  from coord.models import is_policy_refusal_reason
102
103
 
@@ -1810,6 +1811,57 @@ def _dispatch_produced_nothing(entry: QueueEntry, facts: IssueFacts) -> bool:
1810
1811
  return facts.last_dispatched_at < entry.launched_at
1811
1812
 
1812
1813
 
1814
+ def _is_merge_gate_block_reason(reason: str | None) -> bool:
1815
+ """#2424: does *reason* already name a merge-gate block — a death whose
1816
+ real cause is a LATER stage (merge), not a dispatch-layer failure?
1817
+
1818
+ `_dispatch_produced_nothing`'s own comparison (``facts.last_dispatched_at
1819
+ < entry.launched_at``) goes stale specifically for a relaunch whose only
1820
+ job is retrying the Merge stage: by design, that relaunch dispatches no
1821
+ new assignment (there is nothing left to dispatch — Work/Test/Review
1822
+ already completed), so the comparison reads exactly like a genuine
1823
+ dispatch failure even though three real assignments did real work. This
1824
+ is the textual escape hatch for that case: when *reason* itself already
1825
+ names a merge-gate block, the generic "#2273 no assignment was ever
1826
+ created" note must not be layered on top of it — see
1827
+ claude-coordinator#2405 (stale smoke verdict) and coord-web#2 (red CI),
1828
+ both live escalations where the dispatch-note actively misdirected an
1829
+ operator toward `drive-queue remove && add` (a wasted Work/Test/Review
1830
+ cycle) instead of the real one-line fix (`coord merge --revalidate`, or
1831
+ fixing the failing CI check).
1832
+
1833
+ Four shapes, all written by `coord/drive.py`'s own merge-stage decision
1834
+ functions — none of them a "no assignment created" signal:
1835
+
1836
+ * `_die`'s exhausted-merge-attempts wording ("merge attempted N times
1837
+ without landing") — `coord assign` succeeded and Work/Test/Review all
1838
+ completed; the LOOP inside a single drive session that kept retrying
1839
+ `coord merge --only` simply ran out of its own attempt budget
1840
+ (#1505/#2078).
1841
+ * `is_stale_smoke_reason` — the #1479 staleness race: the merge base
1842
+ moved out from under a still-valid smoke verdict.
1843
+ * "checks failed" — `coord.merge_queue`'s own `checks_failed` prose
1844
+ (``f"checks failed: {summary}"``): red CI on a PR that was dispatched,
1845
+ built, and reviewed fine.
1846
+ * `_escalate_merge`'s own gate-divergence/terminal-status wording
1847
+ ("smoke_required —" / "review_required —" / "merge_status=...") — the
1848
+ #1505/#1526 immediate-escalation path, which already recorded its own
1849
+ accurate `coord escalate record` before this drive exited.
1850
+ """
1851
+ if not reason:
1852
+ return False
1853
+ lowered = reason.lower()
1854
+ if "merge attempted" in lowered:
1855
+ return True
1856
+ if is_stale_smoke_reason(reason):
1857
+ return True
1858
+ if "checks failed" in lowered:
1859
+ return True
1860
+ if "smoke_required —" in lowered or "review_required —" in lowered:
1861
+ return True
1862
+ return "merge_status=" in lowered
1863
+
1864
+
1813
1865
  def _is_empty_branch_death_reason(reason: str | None) -> bool:
1814
1866
  """#2363: does *reason* name the "claimed success, wrote nothing"
1815
1867
  signature — an acceptance-author or plain work session that exited
@@ -1858,6 +1910,7 @@ def _retry_backoff_reason(
1858
1910
  now: float | None,
1859
1911
  attempts: int,
1860
1912
  retry_backoff_at: float | None,
1913
+ own_reason: str | None = None,
1861
1914
  ) -> str:
1862
1915
  """#2273's launch-side guard: ``''`` unless *entry* is still inside its
1863
1916
  post-death backoff window.
@@ -1898,6 +1951,23 @@ def _retry_backoff_reason(
1898
1951
  ``retry_backoff_at is None`` (a pure-logic caller with no clock, or a row
1899
1952
  predating this column — both degrade to the pre-#2273 behaviour exactly,
1900
1953
  the same posture every other clock-gated check in this module takes).
1954
+
1955
+ *own_reason* (#2424 follow-up): the same text the launch-side dispatch
1956
+ note is gated on (see the comment above `dispatch_only` in
1957
+ `_reconcile_running`'s retry/exhausted branches). Passed through so the
1958
+ widened `DISPATCH_FAILURE_MIN_BACKOFF_SECONDS` spacing below answers the
1959
+ identical "was this actually a dispatch failure" question the launch-side
1960
+ note already answers, rather than recomputing it from
1961
+ `_dispatch_produced_nothing` alone — which, like the note before #2424,
1962
+ cannot tell a genuine pre-`coord assign` crash from a merge-only relaunch
1963
+ that dispatches no new assignment by design. Once `own_reason` already
1964
+ names a merge-gate block (`_is_merge_gate_block_reason`), the 300s floor
1965
+ would be pure mispacing: the rationale for widening it ("a transient
1966
+ dispatch failure cannot spend the whole retry budget inside one tick
1967
+ cadence") does not apply once the cause is known to be a merge-gate
1968
+ block, not a dispatch failure. ``None`` (the default) degrades to the
1969
+ pre-#2424-follow-up behaviour exactly, for callers that have not been
1970
+ updated to pass it.
1901
1971
  """
1902
1972
  if now is None or attempts <= 0 or retry_backoff_at is None:
1903
1973
  return ""
@@ -1906,7 +1976,9 @@ def _retry_backoff_reason(
1906
1976
  return ""
1907
1977
  idx = min(attempts - 1, len(RETRY_BACKOFF_SECONDS) - 1)
1908
1978
  backoff = RETRY_BACKOFF_SECONDS[idx]
1909
- if _dispatch_produced_nothing(entry, facts):
1979
+ if _dispatch_produced_nothing(entry, facts) and not _is_merge_gate_block_reason(
1980
+ own_reason
1981
+ ):
1910
1982
  backoff = max(backoff, DISPATCH_FAILURE_MIN_BACKOFF_SECONDS)
1911
1983
  if age >= backoff:
1912
1984
  return ""
@@ -2347,7 +2419,21 @@ def _reconcile_running(
2347
2419
  # — or the escalation this produces once the budget IS exhausted — sees
2348
2420
  # "no assignment was ever created" instead of a bare exit code that
2349
2421
  # could mean anything.
2350
- dispatch_only = _dispatch_produced_nothing(entry, facts)
2422
+ #
2423
+ # #2424: EXCEPT when `own_reason` already names a merge-gate block
2424
+ # ("merge attempted N times without landing", a stale smoke verdict, red
2425
+ # CI, ...) — a relaunch whose only job is retrying the Merge stage
2426
+ # dispatches no new assignment BY DESIGN (Work/Test/Review already
2427
+ # completed; there is nothing left to dispatch), so the comparison above
2428
+ # reads exactly like a dispatch failure even though it plainly is not.
2429
+ # The generic note is additive evidence for when nothing more specific is
2430
+ # known; it must never be layered on top of a reason that already
2431
+ # contradicts it — see `_is_merge_gate_block_reason` for the two live
2432
+ # escalations (claude-coordinator#2405, coord-web#2) this false-positive
2433
+ # actually produced.
2434
+ dispatch_only = _dispatch_produced_nothing(
2435
+ entry, facts
2436
+ ) and not _is_merge_gate_block_reason(own_reason)
2351
2437
  dispatch_note = (
2352
2438
  " — no assignment was ever created for this run (#2273): likely an "
2353
2439
  "infrastructure/dispatch-layer failure, not a code defect"
@@ -3604,17 +3690,24 @@ def plan_tick(
3604
3690
  `effective_last_reason`) so both call sites below — the report-only
3605
3691
  dry-run pass and the persisted `last_reason` write — get the combined
3606
3692
  text for free, with no change needed at either site.
3693
+
3694
+ #2424 follow-up: that same `effective_last_reason` resolution is also
3695
+ what `_retry_backoff_reason` needs to answer its own "was this
3696
+ actually a dispatch failure" question — see its `own_reason`
3697
+ parameter's docstring — so it is resolved once, here, and passed to
3698
+ both.
3607
3699
  """
3700
+ previous = effective_last_reason.get(candidate.key, candidate.last_reason)
3608
3701
  backoff = _retry_backoff_reason(
3609
3702
  candidate,
3610
3703
  board.facts(candidate.key),
3611
3704
  now,
3612
3705
  effective_attempts.get(candidate.key, candidate.attempts),
3613
3706
  retry_backoff_at_map.get(candidate.key, candidate.retry_backoff_at),
3707
+ own_reason=previous,
3614
3708
  )
3615
3709
  if not backoff:
3616
3710
  return ""
3617
- previous = effective_last_reason.get(candidate.key, candidate.last_reason)
3618
3711
  return _augment_backoff_reason(previous, backoff)
3619
3712
 
3620
3713
  # #1972's projection of per-repo occupancy AS THE WALK SEES IT: the board
@@ -87,7 +87,7 @@ class FakeVerifier:
87
87
  def __init__(
88
88
  self,
89
89
  *,
90
- has_commits: bool = True,
90
+ has_commits: bool | None = True,
91
91
  merged: bool = True,
92
92
  head_sha: str | None = "deadbeef" * 5,
93
93
  ) -> None:
@@ -98,7 +98,7 @@ class FakeVerifier:
98
98
  self.merged_calls = 0
99
99
  self.head_sha_calls = 0
100
100
 
101
- def branch_has_commits(self, s: IssueState) -> bool:
101
+ def branch_has_commits(self, s: IssueState) -> bool | None:
102
102
  self.commits_calls += 1
103
103
  return self._has_commits
104
104
 
@@ -1019,6 +1019,29 @@ def test_oracle_active_advisory_with_no_commits_is_not_terminal_when_the_slice_a
1019
1019
  )
1020
1020
 
1021
1021
 
1022
+ def test_oracle_active_advisory_with_unverifiable_branch_waits():
1023
+ """#2426: `branch_has_commits` returning `None` (e.g. a `git fetch`
1024
+ failure) must NOT be treated as "no commits" — that misdiagnoses a
1025
+ transient verification failure as the terminal "nothing was authored"
1026
+ dead end (claude-coordinator#2286: a real, pushed commit sat on the
1027
+ remote while this exact path declared the branch commit-less). It must
1028
+ wait and let the next poll retry the check instead."""
1029
+ oracle = OracleDecision(True, "ORACLE DRIVE", tracking_issue=1120)
1030
+ verifier = FakeVerifier(has_commits=None)
1031
+ action = step(
1032
+ oracle_state(
1033
+ acceptance_author_aid="ta1",
1034
+ acceptance_author_status="advisory",
1035
+ acceptance_author_branch="test-author-ms-65-slice-2286",
1036
+ ),
1037
+ oracle=oracle,
1038
+ verifier=verifier,
1039
+ )
1040
+ assert action.kind == WAIT
1041
+ assert not action.is_exit
1042
+ assert "no commits" not in (action.message or "")
1043
+
1044
+
1022
1045
  def test_oracle_active_advisory_with_commits_requires_accept_advisory():
1023
1046
  """The #1357 false-positive shape — real commits, downgraded to
1024
1047
  advisory anyway — must not be treated as "still landing"; it needs the
@@ -1148,6 +1171,29 @@ def test_oracle_active_done_with_no_branch_is_terminal():
1148
1171
  assert "no commits" in action.message
1149
1172
 
1150
1173
 
1174
+ def test_oracle_active_done_with_unverifiable_branch_waits():
1175
+ """#2426: the exact incident this issue documents — a terminal
1176
+ `test-author` DONE row whose branch really did carry a commit
1177
+ (claude-coordinator#2286's `test-author-ms-65-slice-2286`, commit
1178
+ `250b4df8`), observed through a `git fetch` failure. Must wait and
1179
+ retry, not declare DONE terminal-with-no-commits and burn a re-author
1180
+ cycle."""
1181
+ oracle = OracleDecision(True, "ORACLE DRIVE", tracking_issue=1120)
1182
+ verifier = FakeVerifier(has_commits=None)
1183
+ action = step(
1184
+ oracle_state(
1185
+ acceptance_author_aid="ta1",
1186
+ acceptance_author_status="done",
1187
+ acceptance_author_branch="test-author-ms-65-slice-2286",
1188
+ ),
1189
+ oracle=oracle,
1190
+ verifier=verifier,
1191
+ )
1192
+ assert action.kind == WAIT
1193
+ assert not action.is_exit
1194
+ assert "no commits" not in (action.message or "")
1195
+
1196
+
1151
1197
  def test_oracle_active_done_with_commits_lands_the_slice():
1152
1198
  """#2079: a DONE slice whose branch carries commits is MERGED by this
1153
1199
  driver, not waited on.
@@ -1752,6 +1798,23 @@ def test_advisory_with_no_commits_retries_via_coord_retry_then_stops_at_the_cap(
1752
1798
  assert verifier.commits_calls == 2
1753
1799
 
1754
1800
 
1801
+ def test_advisory_with_unverifiable_branch_waits_without_spending_a_retry():
1802
+ """#2426: a `git fetch` failure while checking the branch is not proof
1803
+ it's empty. Must wait for the next poll rather than either spending an
1804
+ `advisory_retries` budget attempt or (once the budget is spent) dying
1805
+ with the terminal "no commits" message on evidence that never
1806
+ materialized."""
1807
+ verifier = FakeVerifier(has_commits=None)
1808
+ counters = DriveCounters()
1809
+ opts = DriveOptions(machine="precision", max_work_retries=1)
1810
+ s = state(work_aid="w1", work_status="advisory", work_branch="b")
1811
+
1812
+ action = step(s, opts, verifier=verifier, counters=counters)
1813
+ assert action.kind == WAIT
1814
+ assert not action.is_exit
1815
+ assert counters.advisory_retries == 0
1816
+
1817
+
1755
1818
  def test_advisory_with_no_commits_retry_is_unaffected_by_accept_advisory():
1756
1819
  """#1606: `--accept-advisory` exists to unblock the #1357 false-positive
1757
1820
  (real commits, downgraded status) — it must NOT adopt a genuine
@@ -1850,6 +1913,23 @@ def test_analysis_deliverable_done_with_no_commits_succeeds():
1850
1913
  assert "deliverable:analysis" in action.message
1851
1914
 
1852
1915
 
1916
+ def test_analysis_deliverable_done_with_unverifiable_branch_waits():
1917
+ """#2426: a `git fetch` failure while checking an analysis-labelled
1918
+ branch is neither "0-commit success" nor "commits pushed, fall
1919
+ through" — it's no evidence at all. Must wait for the next poll."""
1920
+ action = step(
1921
+ state(
1922
+ work_aid="w1",
1923
+ work_status="done",
1924
+ work_branch="issue-2132-diagnose",
1925
+ issue_labels=("deliverable:analysis",),
1926
+ ),
1927
+ verifier=FakeVerifier(has_commits=None),
1928
+ )
1929
+ assert action.kind == WAIT
1930
+ assert not action.is_exit
1931
+
1932
+
1853
1933
  def test_analysis_deliverable_done_with_no_branch_at_all_succeeds():
1854
1934
  """Same as above when the reap never captured a branch name at all
1855
1935
  (e.g. the worktree was already gone) — `not state.work_branch` alone
@@ -4290,20 +4370,60 @@ def test_branch_has_commits_is_false_for_zero(recorded_git, tmp_path):
4290
4370
  assert GitMergeVerifier(repo_path=str(tmp_path)).branch_has_commits(s) is False
4291
4371
 
4292
4372
 
4293
- def test_branch_has_commits_is_false_when_the_remote_branch_is_missing(
4373
+ def test_branch_has_commits_is_none_when_rev_list_fails(recorded_git, tmp_path):
4374
+ """#2426: both fetches succeeded but `rev-list` itself failed — still no
4375
+ completed count, so still `None`, not `False`."""
4376
+ _calls, scripted = recorded_git
4377
+ (tmp_path / ".git").mkdir()
4378
+ scripted[("rev-list",)] = (128, "")
4379
+ s = state(work_branch="b")
4380
+ assert GitMergeVerifier(repo_path=str(tmp_path)).branch_has_commits(s) is None
4381
+
4382
+
4383
+ def test_branch_has_commits_is_none_when_rev_list_output_is_unparsable(
4294
4384
  recorded_git, tmp_path
4295
4385
  ):
4386
+ """#2426: a malformed count is the same "learned nothing" shape as a
4387
+ failed command — `None`, not `False`."""
4388
+ _calls, scripted = recorded_git
4389
+ (tmp_path / ".git").mkdir()
4390
+ scripted[("rev-list",)] = (0, "not-a-number\n")
4391
+ s = state(work_branch="b")
4392
+ assert GitMergeVerifier(repo_path=str(tmp_path)).branch_has_commits(s) is None
4393
+
4394
+
4395
+ def test_branch_has_commits_is_none_when_a_fetch_fails(recorded_git, tmp_path):
4396
+ """#2426: a `git fetch` failure (returncode 128 here covers both "branch
4397
+ genuinely doesn't exist on the remote" and "transient network/auth
4398
+ blip" — the two are indistinguishable from the exit code alone) must NOT
4399
+ collapse into `False`. `False` is reserved for a check that actually
4400
+ completed and counted zero commits; a failed fetch produced no such
4401
+ count, so it is `None` — "couldn't verify" — not "verified empty"."""
4296
4402
  _calls, scripted = recorded_git
4297
4403
  (tmp_path / ".git").mkdir()
4298
4404
  scripted[("fetch", "b")] = (128, "")
4299
4405
  s = state(work_branch="b")
4300
- assert GitMergeVerifier(repo_path=str(tmp_path)).branch_has_commits(s) is False
4406
+ assert GitMergeVerifier(repo_path=str(tmp_path)).branch_has_commits(s) is None
4407
+
4408
+
4409
+ def test_branch_has_commits_is_none_when_the_target_fetch_fails(
4410
+ recorded_git, tmp_path
4411
+ ):
4412
+ """Same #2426 distinction, for the OTHER fetch (`origin/<target>`)."""
4413
+ _calls, scripted = recorded_git
4414
+ (tmp_path / ".git").mkdir()
4415
+ scripted[("fetch", "main")] = (128, "")
4416
+ s = state(work_branch="b", repo_default_branch="main")
4417
+ assert GitMergeVerifier(repo_path=str(tmp_path)).branch_has_commits(s) is None
4301
4418
 
4302
4419
 
4303
4420
  def test_the_verifiers_are_inert_without_a_local_checkout(tmp_path):
4421
+ """#2426: no local checkout means no evidence either way — `None`, not
4422
+ `False`. `verify_merged` is untouched by #2426 (GitHub is its primary
4423
+ source of truth, not this local checkout) and keeps its `False`."""
4304
4424
  verifier = GitMergeVerifier(repo_path=str(tmp_path / "nope"))
4305
4425
  s = state(work_branch="b", repo_github="")
4306
- assert verifier.branch_has_commits(s) is False
4426
+ assert verifier.branch_has_commits(s) is None
4307
4427
  assert verifier.verify_merged(s) is False
4308
4428
 
4309
4429