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