code-coordinator 0.5.150__tar.gz → 0.5.154__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 (870) hide show
  1. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. code_coordinator-0.5.154/code_coordinator.egg-info/scm_version.json +8 -0
  4. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/drive_queue.py +54 -10
  5. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/release.py +14 -2
  6. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/drive_queue.py +13 -0
  7. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_drive_queue.py +59 -0
  8. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_release_propagate.py +92 -0
  9. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_drive_queue.py +110 -0
  10. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_release_propagate.py +33 -0
  11. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/data.rs +13 -1
  12. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/dialogs.rs +147 -0
  13. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/doc_tabs.rs +8 -7
  14. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/events.rs +103 -2
  15. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/fixtures.rs +1 -0
  16. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/format.rs +30 -0
  17. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/mod.rs +21 -1
  18. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/pipeline.rs +300 -20
  19. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/render.rs +97 -3
  20. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/sidebar.rs +2 -0
  21. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/tests.rs +305 -38
  22. code_coordinator-0.5.150/code_coordinator.egg-info/scm_version.json +0 -8
  23. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.claude/commands/board.md +0 -0
  24. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.claude/commands/complete-session.md +0 -0
  25. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.claude/commands/coordinator.md +0 -0
  26. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.githooks/_lib.sh +0 -0
  27. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.githooks/post-checkout +0 -0
  28. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.githooks/post-commit +0 -0
  29. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.githooks/post-merge +0 -0
  30. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  31. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.github/coord-ci-acceptance.yml +0 -0
  32. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.github/workflows/acceptance-web.yml +0 -0
  33. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.github/workflows/auto-release.yml +0 -0
  34. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.github/workflows/cargo-test.yml +0 -0
  35. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.github/workflows/publish.yml +0 -0
  36. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.github/workflows/release-tui.yml +0 -0
  37. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.github/workflows/test.yml +0 -0
  38. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/.gitignore +0 -0
  39. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/CLAUDE.md +0 -0
  40. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/GOAL.md +0 -0
  41. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/LICENSE +0 -0
  42. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/MANIFEST.in +0 -0
  43. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/README.md +0 -0
  44. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/code_coordinator.egg-info/SOURCES.txt +0 -0
  45. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/code_coordinator.egg-info/dependency_links.txt +0 -0
  46. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/code_coordinator.egg-info/entry_points.txt +0 -0
  47. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/code_coordinator.egg-info/requires.txt +0 -0
  48. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/code_coordinator.egg-info/scm_file_list.json +0 -0
  49. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/code_coordinator.egg-info/top_level.txt +0 -0
  50. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/__init__.py +0 -0
  51. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/_board_mapping.py +0 -0
  52. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/acceptance.py +0 -0
  53. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/acceptance_drivers.py +0 -0
  54. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/agent.py +0 -0
  55. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/agent_app.py +0 -0
  56. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/agent_update.py +0 -0
  57. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/agents/opencode/.gitignore +0 -0
  58. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/agents/opencode/agents/work.md +0 -0
  59. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/agents/opencode/routing.jsonc +0 -0
  60. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/audit.py +0 -0
  61. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/auto_loop.py +0 -0
  62. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/block_log.py +0 -0
  63. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/board_bool_guard.py +0 -0
  64. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/board_service.py +0 -0
  65. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/board_wire.py +0 -0
  66. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/brain.py +0 -0
  67. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/branch_model.py +0 -0
  68. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/bug_intake.py +0 -0
  69. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/cargo_cache.py +0 -0
  70. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/ci_github.py +0 -0
  71. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/ci_store.py +0 -0
  72. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/claim.py +0 -0
  73. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/cli.py +0 -0
  74. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/client.py +0 -0
  75. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/__init__.py +0 -0
  76. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/_common.py +0 -0
  77. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/acceptance.py +0 -0
  78. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/agent_ops.py +0 -0
  79. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/audit.py +0 -0
  80. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/chat.py +0 -0
  81. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/dispatch.py +0 -0
  82. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/dispatch_workers.py +0 -0
  83. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/drive.py +0 -0
  84. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/gate_a.py +0 -0
  85. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/gates.py +0 -0
  86. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/issues.py +0 -0
  87. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/lifecycle.py +0 -0
  88. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/merge.py +0 -0
  89. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/milestone.py +0 -0
  90. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/plan_followup.py +0 -0
  91. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/plans.py +0 -0
  92. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/portal.py +0 -0
  93. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/repo.py +0 -0
  94. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/report.py +0 -0
  95. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/review.py +0 -0
  96. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/scorecard.py +0 -0
  97. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/sessions.py +0 -0
  98. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/setup.py +0 -0
  99. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/status.py +0 -0
  100. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/terminal.py +0 -0
  101. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/test_gate.py +0 -0
  102. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/commands/tui.py +0 -0
  103. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/comments.py +0 -0
  104. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/config.py +0 -0
  105. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/config_reload.py +0 -0
  106. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/conflict_fix.py +0 -0
  107. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dao.py +0 -0
  108. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/__init__.py +0 -0
  109. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/fixture.py +0 -0
  110. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/index.html +0 -0
  111. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/server.py +0 -0
  112. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/terminal.py +0 -0
  113. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/.gitignore +0 -0
  114. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/components.json +0 -0
  115. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
  116. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  117. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
  118. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
  119. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  120. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  121. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  122. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  123. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  124. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/dist/index.html +0 -0
  125. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  126. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/dist/sw.js +0 -0
  127. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  128. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  129. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  130. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  131. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  132. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  133. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  134. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  135. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  136. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  137. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/eslint.config.js +0 -0
  138. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/index.html +0 -0
  139. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  140. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/package-lock.json +0 -0
  141. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/package.json +0 -0
  142. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  143. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/playwright.config.ts +0 -0
  144. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/postcss.config.js +0 -0
  145. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  146. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  147. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  148. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/App.tsx +0 -0
  149. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/api/client.ts +0 -0
  150. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  151. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  152. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  153. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  154. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  155. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  156. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  157. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  158. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  159. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  160. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  161. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  162. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  163. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  164. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  165. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  166. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  167. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  168. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  169. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  170. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  171. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  172. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  173. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  174. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  175. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  176. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  177. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  178. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  179. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  180. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  181. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  182. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  183. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  184. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  185. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/index.css +0 -0
  186. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  187. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  188. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/main.tsx +0 -0
  189. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  190. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  191. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  192. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  193. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  194. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  195. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  196. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  197. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  198. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  199. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  200. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  201. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  202. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  203. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  204. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  205. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  206. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  207. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  208. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  209. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  210. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  211. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  212. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/tailwind.config.js +0 -0
  213. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/tsconfig.json +0 -0
  214. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  215. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dashboard/webapp/vite.config.ts +0 -0
  216. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/db.py +0 -0
  217. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dead_end.py +0 -0
  218. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/README.md +0 -0
  219. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-agent.service +0 -0
  220. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-db-backup.service +0 -0
  221. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-db-backup.sh +0 -0
  222. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-db-backup.timer +0 -0
  223. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-drive-queue.service +0 -0
  224. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-drive-queue.timer +0 -0
  225. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-notify.service +0 -0
  226. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-notify.timer +0 -0
  227. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-release-propagate.service +0 -0
  228. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-release-propagate.timer +0 -0
  229. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-release-window.service +0 -0
  230. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-release-window.timer +0 -0
  231. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-serve.service +0 -0
  232. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-web-dist-build.service +0 -0
  233. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-web-dist-build.timer +0 -0
  234. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy/coord-web.service +0 -0
  235. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy_manifest.py +0 -0
  236. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deploy_units.py +0 -0
  237. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/deps.py +0 -0
  238. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/diagnose.py +0 -0
  239. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dispatch.py +0 -0
  240. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/dist_name.py +0 -0
  241. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/drive.py +0 -0
  242. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/drive_state.py +0 -0
  243. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/events.py +0 -0
  244. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/failure_class.py +0 -0
  245. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/filelock.py +0 -0
  246. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/fleet_config_health.py +0 -0
  247. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/freshness.py +0 -0
  248. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/gate_a.py +0 -0
  249. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/gate_b.py +0 -0
  250. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/gate_snapshot.py +0 -0
  251. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/gates.py +0 -0
  252. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/github_ops.py +0 -0
  253. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/goal.py +0 -0
  254. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/graph_health.py +0 -0
  255. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/__init__.py +0 -0
  256. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/aggregate.py +0 -0
  257. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/__init__.py +0 -0
  258. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/agent_install.py +0 -0
  259. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/cargo_targets.py +0 -0
  260. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/claude_binary.py +0 -0
  261. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/deploy_lane_facts.py +0 -0
  262. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/disk.py +0 -0
  263. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/fleet_board.py +0 -0
  264. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  265. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/fleet_phantom.py +0 -0
  266. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/fleet_unit_drift.py +0 -0
  267. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/graph.py +0 -0
  268. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/graphify_cli.py +0 -0
  269. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/index_lock.py +0 -0
  270. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/plan_usage.py +0 -0
  271. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/repo_state.py +0 -0
  272. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/spawned_coord.py +0 -0
  273. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/timer_active.py +0 -0
  274. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/toolchain.py +0 -0
  275. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/unit_drift.py +0 -0
  276. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/unit_enablement.py +0 -0
  277. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/checks/worktrees.py +0 -0
  278. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/cli.py +0 -0
  279. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/context.py +0 -0
  280. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/fleet_snapshot.py +0 -0
  281. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/models.py +0 -0
  282. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/pypi.py +0 -0
  283. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/registry.py +0 -0
  284. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/render.py +0 -0
  285. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/health/units.py +0 -0
  286. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/hooks.py +0 -0
  287. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/housekeeping.py +0 -0
  288. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/interactive.py +0 -0
  289. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/issue_store.py +0 -0
  290. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/liveness_auditor.py +0 -0
  291. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/machine_pause.py +0 -0
  292. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/merge_queue.py +0 -0
  293. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/milestone_chat.py +0 -0
  294. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/milestone_dispatch.py +0 -0
  295. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/milestone_gate.py +0 -0
  296. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/milestone_order.py +0 -0
  297. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/mock_author.py +0 -0
  298. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/models.py +0 -0
  299. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/network.py +0 -0
  300. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/new_issue_chat.py +0 -0
  301. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/notifier/__init__.py +0 -0
  302. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/notifier/baseline.py +0 -0
  303. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/notifier/cli.py +0 -0
  304. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/notifier/collect.py +0 -0
  305. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/notifier/digest.py +0 -0
  306. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/notifier/models.py +0 -0
  307. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/notifier/predicate.py +0 -0
  308. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/notifier/service.py +0 -0
  309. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/notifier/store.py +0 -0
  310. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/notifier/transport.py +0 -0
  311. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/notify.py +0 -0
  312. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/openapi.py +0 -0
  313. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/overlap_fence.py +0 -0
  314. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/overlap_predict.py +0 -0
  315. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/parentage.py +0 -0
  316. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/parentage_github.py +0 -0
  317. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/pipeline.py +0 -0
  318. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/plan_parser.py +0 -0
  319. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/plans.py +0 -0
  320. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/platform_paths.py +0 -0
  321. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/portal_bridge.py +0 -0
  322. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/portal_store.py +0 -0
  323. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/portal_sync.py +0 -0
  324. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/pr_body_lint.py +0 -0
  325. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/prereqs.py +0 -0
  326. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/progress.py +0 -0
  327. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/providers/__init__.py +0 -0
  328. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/providers/base.py +0 -0
  329. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/providers/claude.py +0 -0
  330. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/providers/claude_pty.py +0 -0
  331. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/providers/opencode.py +0 -0
  332. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/queue_diagnose.py +0 -0
  333. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/reconcile.py +0 -0
  334. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/reconcile_tick.py +0 -0
  335. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/refine_chat.py +0 -0
  336. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/release_cordon.py +0 -0
  337. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/release_propagate.py +0 -0
  338. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/release_verify.py +0 -0
  339. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/release_window.py +0 -0
  340. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/repo_edit.py +0 -0
  341. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/repo_onboard.py +0 -0
  342. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/reports.py +0 -0
  343. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/revalidate.py +0 -0
  344. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/review.py +0 -0
  345. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/scorecard.py +0 -0
  346. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/serve_app.py +0 -0
  347. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/skills/portal-followup/SKILL.md +0 -0
  348. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/skills/update-issue/SKILL.md +0 -0
  349. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/smoke.py +0 -0
  350. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/spend_ceiling.py +0 -0
  351. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/split_work.py +0 -0
  352. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/stage_projection.py +0 -0
  353. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/state.py +0 -0
  354. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/test_author.py +0 -0
  355. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/test_chat.py +0 -0
  356. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/test_orchestrator.py +0 -0
  357. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/test_report.py +0 -0
  358. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/tui_release.py +0 -0
  359. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/usage.py +0 -0
  360. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/usage_limits.py +0 -0
  361. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/usage_rollup.py +0 -0
  362. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coord/worker_events.py +0 -0
  363. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/coordinator.example.yml +0 -0
  364. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-agent.service +0 -0
  365. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-db-backup.service +0 -0
  366. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-db-backup.sh +0 -0
  367. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-db-backup.timer +0 -0
  368. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-drive-queue.service +0 -0
  369. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-drive-queue.timer +0 -0
  370. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-notify.service +0 -0
  371. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-notify.timer +0 -0
  372. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-release-propagate.service +0 -0
  373. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-release-propagate.timer +0 -0
  374. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-release-window.service +0 -0
  375. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-release-window.timer +0 -0
  376. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-serve.service +0 -0
  377. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-web-dist-build.service +0 -0
  378. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-web-dist-build.sh +0 -0
  379. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-web-dist-build.timer +0 -0
  380. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-web-rollback.sh +0 -0
  381. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/coord-web.service +0 -0
  382. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/deploy/node-shim.sh +0 -0
  383. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/ADR_COORD_WEB_DIST.md +0 -0
  384. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/AGENT_OPERATIONS.md +0 -0
  385. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/ARCHITECTURE.md +0 -0
  386. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/ARCH_SECURITY_GATES.md +0 -0
  387. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/COCKPIT.md +0 -0
  388. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/CONTROL_CENTER.md +0 -0
  389. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/COST_DISCIPLINE.md +0 -0
  390. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/CROSS_PLATFORM.md +0 -0
  391. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/CUSTOMER_PORTAL.md +0 -0
  392. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/DRIVE_QUEUE.md +0 -0
  393. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/EPHEMERAL_WORKERS.md +0 -0
  394. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/FORGE_MIGRATION.md +0 -0
  395. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/GRAPHIFY_SETUP.md +0 -0
  396. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/ISSUE_GUIDANCE.md +0 -0
  397. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/MAC_MINI.md +0 -0
  398. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  399. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/NOTIFIER.md +0 -0
  400. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/OPENCODE_VERIFICATION.md +0 -0
  401. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/OPERATING_GOTCHAS.md +0 -0
  402. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/ORACLE_LOOP.md +0 -0
  403. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/PHONE_WEBAPP.md +0 -0
  404. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/PIPELINE_V2.md +0 -0
  405. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/PLATFORM_EVOLUTION.md +0 -0
  406. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/SECOND_BACKEND.md +0 -0
  407. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/STORE_SERVICE.md +0 -0
  408. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  409. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/WEB_CONTROL_CENTER.md +0 -0
  410. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/WSL_WINDOWS_WORKER.md +0 -0
  411. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/mocks/web/README.md +0 -0
  412. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/mocks/web/_tokens.css +0 -0
  413. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/mocks/web/issue-detail.html +0 -0
  414. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/mocks/web/pipeline-narrow.html +0 -0
  415. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/docs/mocks/web/pipeline-wide.html +0 -0
  416. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/graphify-out/.gitignore +0 -0
  417. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/install-agent.sh +0 -0
  418. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/pyproject.toml +0 -0
  419. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/audit_review_verdict_overrides.py +0 -0
  420. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  421. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/azure-workers/build-worker-image.sh +0 -0
  422. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/azure-workers/coordinator-machine.py +0 -0
  423. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/azure-workers/epic-down.sh +0 -0
  424. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/azure-workers/epic-up.sh +0 -0
  425. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/azure-workers/preflight.sh +0 -0
  426. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/azure-workers/provision-worker.sh +0 -0
  427. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  428. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  429. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/azure-workers/verify-github-token.sh +0 -0
  430. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/codegen.py +0 -0
  431. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/coord-test-runner.sh +0 -0
  432. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/drive-batch.sh +0 -0
  433. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/gen_board_fixture.py +0 -0
  434. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/next_release_tag.py +0 -0
  435. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/run_tests_in_populated_home.sh +0 -0
  436. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/run_tests_without_gh.sh +0 -0
  437. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/smoke_437_interactive.py +0 -0
  438. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/verify_878_review_capture.py +0 -0
  439. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/verify_release_published.py +0 -0
  440. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/scripts/verify_release_wheel.py +0 -0
  441. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/setup.cfg +0 -0
  442. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/SMOKE_SET.md +0 -0
  443. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/__init__.py +0 -0
  444. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  445. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-33/contract.md +0 -0
  446. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-33/manifest.yml +0 -0
  447. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  448. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  449. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  450. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  451. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-37/conftest.py +0 -0
  452. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-37/contract.md +0 -0
  453. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-37/manifest.yml +0 -0
  454. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  455. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  456. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-38/contract.md +0 -0
  457. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-38/manifest.yml +0 -0
  458. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  459. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  460. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  461. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  462. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  463. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  464. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  465. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  466. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  467. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  468. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-51/contract.md +0 -0
  469. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  470. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  471. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-51/manifest.yml +0 -0
  472. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  473. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-51/tsconfig.json +0 -0
  474. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  475. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  476. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-65/contract.md +0 -0
  477. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-65/manifest.yml +0 -0
  478. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  479. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  480. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  481. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  482. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  483. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  484. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  485. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  486. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  487. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  488. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/conftest.py +0 -0
  489. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/board-pipeline-basic.json +0 -0
  490. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  491. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  492. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  493. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  494. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/playwright/all_pass.json +0 -0
  495. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  496. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/playwright/mixed_fail.json +0 -0
  497. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  498. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  499. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/playwright/skip.json +0 -0
  500. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/playwright/truncated.json +0 -0
  501. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  502. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  503. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  504. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  505. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  506. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  507. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  508. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  509. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_acceptance.py +0 -0
  510. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_acceptance_drivers.py +0 -0
  511. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent.py +0 -0
  512. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_api_error.py +0 -0
  513. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_app.py +0 -0
  514. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_branch_base.py +0 -0
  515. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_branch_capture.py +0 -0
  516. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_config_free_1712.py +0 -0
  517. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_deploy_units_endpoint.py +0 -0
  518. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_dirty_worktree.py +0 -0
  519. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  520. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_graph_self_heal.py +0 -0
  521. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_health_h3.py +0 -0
  522. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_idle_restart.py +0 -0
  523. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_push_failure.py +0 -0
  524. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_reap.py +0 -0
  525. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_repos_and_pull.py +0 -0
  526. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_restart_services_endpoint.py +0 -0
  527. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_startup_diagnostics.py +0 -0
  528. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_update.py +0 -0
  529. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_update_bluegreen.py +0 -0
  530. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_usage_limit.py +0 -0
  531. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_agent_zero_commit.py +0 -0
  532. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_ambient_home_isolation.py +0 -0
  533. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_approve_reject_plan.py +0 -0
  534. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_approve_usage_gate.py +0 -0
  535. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_assignment_already_recorded_daemon.py +0 -0
  536. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_audit_log.py +0 -0
  537. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_audit_outcome.py +0 -0
  538. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_audit_query.py +0 -0
  539. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_auto_loop.py +0 -0
  540. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_auto_release_publish_2035.py +0 -0
  541. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_base_checkout_restore.py +0 -0
  542. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_block_log.py +0 -0
  543. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_board_cap_762.py +0 -0
  544. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_board_fixture.py +0 -0
  545. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_board_read_path.py +0 -0
  546. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_board_service.py +0 -0
  547. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_board_state.py +0 -0
  548. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_board_wire.py +0 -0
  549. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_brain.py +0 -0
  550. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_branch_model.py +0 -0
  551. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_bug_intake.py +0 -0
  552. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_build_worker_image_env_update.py +0 -0
  553. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cargo_cache.py +0 -0
  554. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_ci_acceptance_gate_1950.py +0 -0
  555. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_ci_parity_2091.py +0 -0
  556. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_ci_store.py +0 -0
  557. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_claim.py +0 -0
  558. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_acceptance.py +0 -0
  559. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_assign.py +0 -0
  560. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  561. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_assign_interactive_remote.py +0 -0
  562. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_assign_provider.py +0 -0
  563. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  564. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_audit.py +0 -0
  565. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_chat_continue.py +0 -0
  566. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_decide.py +0 -0
  567. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_diagnose_config_provenance.py +0 -0
  568. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_diagnose_graph.py +0 -0
  569. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_doctor.py +0 -0
  570. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_doctor_config_free_1801.py +0 -0
  571. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  572. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_drive.py +0 -0
  573. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_escalate.py +0 -0
  574. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_fix_headless_review.py +0 -0
  575. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_gate_a.py +0 -0
  576. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_install_drift.py +0 -0
  577. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_install_skills.py +0 -0
  578. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_issue_create_label.py +0 -0
  579. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_issue_reopen.py +0 -0
  580. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_merge.py +0 -0
  581. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_milestone_assign.py +0 -0
  582. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_milestone_capture.py +0 -0
  583. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_milestone_chat_add_child.py +0 -0
  584. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_milestone_dispatch.py +0 -0
  585. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_milestone_gate_b.py +0 -0
  586. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_milestone_gate_c.py +0 -0
  587. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_milestone_order.py +0 -0
  588. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  589. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_milestone_ship.py +0 -0
  590. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_network.py +0 -0
  591. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_new_issue_chat.py +0 -0
  592. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_plans.py +0 -0
  593. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_portal.py +0 -0
  594. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_pull_artifact.py +0 -0
  595. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_queue.py +0 -0
  596. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_reattach_sessions.py +0 -0
  597. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_refine_board.py +0 -0
  598. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_release_preflight.py +0 -0
  599. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_release_window.py +0 -0
  600. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_repo_2220.py +0 -0
  601. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_scorecard.py +0 -0
  602. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_set_review_findings.py +0 -0
  603. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_status_advisory_terminal.py +0 -0
  604. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_status_merge_queue.py +0 -0
  605. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_status_provider.py +0 -0
  606. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_status_review_finalizing.py +0 -0
  607. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_status_test_failed_tag.py +0 -0
  608. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_status_usage_limit.py +0 -0
  609. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_sync_comments_873.py +0 -0
  610. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_test_plan.py +0 -0
  611. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_track.py +0 -0
  612. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_tui_update.py +0 -0
  613. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cli_wait.py +0 -0
  614. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_client_base_install.py +0 -0
  615. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_comments.py +0 -0
  616. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_completion_summary.py +0 -0
  617. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_config.py +0 -0
  618. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_config_acceptance.py +0 -0
  619. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_config_audit.py +0 -0
  620. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_config_pricing.py +0 -0
  621. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  622. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_config_usage_gate.py +0 -0
  623. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_conflict_fix.py +0 -0
  624. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_conflict_fix_semantic.py +0 -0
  625. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_coord_test.py +0 -0
  626. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_coord_test_runner_baseline.py +0 -0
  627. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_coord_test_runner_populated_home.py +0 -0
  628. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_coord_test_runner_routing.py +0 -0
  629. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_coord_test_runner_toolchain.py +0 -0
  630. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_coord_web_sse_restart_live.py +0 -0
  631. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_coordinator_machine.py +0 -0
  632. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_cross_platform_imports.py +0 -0
  633. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_dashboard.py +0 -0
  634. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_dashboard_fixture.py +0 -0
  635. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_dashboard_terminal.py +0 -0
  636. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_dashboard_terminal_live.py +0 -0
  637. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_db.py +0 -0
  638. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_dead_end.py +0 -0
  639. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_deploy_coord_db_backup.py +0 -0
  640. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_deploy_coord_web_dist.py +0 -0
  641. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_deploy_coord_web_rollback.py +0 -0
  642. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_deploy_drive_queue_unit.py +0 -0
  643. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_deploy_manifest.py +0 -0
  644. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_deploy_units_lane.py +0 -0
  645. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_deploy_web_unit.py +0 -0
  646. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_deps.py +0 -0
  647. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_diagnose.py +0 -0
  648. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_dispatch.py +0 -0
  649. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_dispatch_target_validation.py +0 -0
  650. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_dist_name.py +0 -0
  651. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_done_housekeeping.py +0 -0
  652. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_drive.py +0 -0
  653. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_drive_state.py +0 -0
  654. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_drive_tmux.py +0 -0
  655. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_epic_up_capability_detection.py +0 -0
  656. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  657. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_epic_up_image_provenance.py +0 -0
  658. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_errors.py +0 -0
  659. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_events.py +0 -0
  660. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_failure_class.py +0 -0
  661. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_filelock.py +0 -0
  662. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  663. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_fix_of_force_override.py +0 -0
  664. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_fleet_config_health.py +0 -0
  665. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_fleet_health_probes.py +0 -0
  666. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_fleet_health_snapshot.py +0 -0
  667. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_freshness.py +0 -0
  668. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_gate_a.py +0 -0
  669. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_gate_b.py +0 -0
  670. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_gate_snapshot_staleness.py +0 -0
  671. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_gates.py +0 -0
  672. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  673. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_generated_types_fixture.py +0 -0
  674. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_github_ops.py +0 -0
  675. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_goal.py +0 -0
  676. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_graph_health.py +0 -0
  677. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_graph_selfheal_absent_2237.py +0 -0
  678. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_handoff.py +0 -0
  679. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_health_checks.py +0 -0
  680. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_health_cli.py +0 -0
  681. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_health_cli_graph.py +0 -0
  682. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_health_config.py +0 -0
  683. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_health_context.py +0 -0
  684. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_health_deploy_lane_facts.py +0 -0
  685. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_health_incident_regression.py +0 -0
  686. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_health_pypi.py +0 -0
  687. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_health_registry.py +0 -0
  688. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_health_timer_active.py +0 -0
  689. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_health_toolchain.py +0 -0
  690. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_health_unit_drift.py +0 -0
  691. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_health_unit_enablement.py +0 -0
  692. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_hooks.py +0 -0
  693. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_human_attended_437.py +0 -0
  694. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_init.py +0 -0
  695. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_integration.py +0 -0
  696. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_interactive_briefing_echo.py +0 -0
  697. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_interactive_prefill_state.py +0 -0
  698. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_interactive_session_relaunch.py +0 -0
  699. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_interactive_test_verdict_backstop.py +0 -0
  700. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_interactive_token_attribution.py +0 -0
  701. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_interactive_worktree.py +0 -0
  702. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_issue_store_seam.py +0 -0
  703. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_liveness_auditor.py +0 -0
  704. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_liveness_notify.py +0 -0
  705. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_machine_pause.py +0 -0
  706. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_merge_queue.py +0 -0
  707. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_merge_verify.py +0 -0
  708. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_milestone_chat.py +0 -0
  709. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_milestone_dispatch.py +0 -0
  710. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_milestone_gate.py +0 -0
  711. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_milestone_order.py +0 -0
  712. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_milestone_seam.py +0 -0
  713. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_mock_author.py +0 -0
  714. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_model_tiering.py +0 -0
  715. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_models.py +0 -0
  716. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_models_config_labels.py +0 -0
  717. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_needs_attention.py +0 -0
  718. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_network.py +0 -0
  719. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_new_issue_chat.py +0 -0
  720. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_next_release_tag.py +0 -0
  721. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_no_direct_gh_calls.py +0 -0
  722. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_node_shim.py +0 -0
  723. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_notifier_baseline.py +0 -0
  724. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_notifier_cli.py +0 -0
  725. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_notifier_collect.py +0 -0
  726. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_notifier_config.py +0 -0
  727. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_notifier_drive_seam.py +0 -0
  728. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_notifier_isolation.py +0 -0
  729. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_notifier_predicate.py +0 -0
  730. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_notifier_quiet_hours.py +0 -0
  731. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_notifier_service.py +0 -0
  732. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_notify.py +0 -0
  733. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_notify_drain.py +0 -0
  734. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_openapi.py +0 -0
  735. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_operational_defaults.py +0 -0
  736. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_overlap_fence.py +0 -0
  737. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_overlap_predict.py +0 -0
  738. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_packaged_deploy_units.py +0 -0
  739. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_parentage.py +0 -0
  740. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_paste_landed.py +0 -0
  741. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_pipeline.py +0 -0
  742. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_plan_followup_approve_plan_command.py +0 -0
  743. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_plan_followup_pr_command.py +0 -0
  744. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_plan_followup_review_command.py +0 -0
  745. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_plan_only.py +0 -0
  746. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_plan_parser.py +0 -0
  747. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_platform_paths.py +0 -0
  748. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_portal_bridge.py +0 -0
  749. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_portal_config.py +0 -0
  750. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_portal_sync.py +0 -0
  751. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_pr_body_lint.py +0 -0
  752. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_prereqs.py +0 -0
  753. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_production_db_guard.py +0 -0
  754. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_progress.py +0 -0
  755. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_provider_seam.py +0 -0
  756. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_providers.py +0 -0
  757. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_providers_config_labels.py +0 -0
  758. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_providers_pty.py +0 -0
  759. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_quiet_hours.py +0 -0
  760. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_quiet_hours_store_2146.py +0 -0
  761. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_reap_merged_sessions.py +0 -0
  762. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_reap_stale_interactive_tick.py +0 -0
  763. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_reconcile.py +0 -0
  764. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_reconcile_branch.py +0 -0
  765. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_reconcile_completions.py +0 -0
  766. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_reconcile_merges.py +0 -0
  767. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_reconcile_no_agent_record.py +0 -0
  768. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_reconcile_tick.py +0 -0
  769. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_reconcile_usage_limit_done.py +0 -0
  770. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_refine_chat.py +0 -0
  771. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_release_cordon_2101.py +0 -0
  772. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  773. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_release_cordon_deadlock_2240.py +0 -0
  774. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_release_unified_1242.py +0 -0
  775. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_release_verify.py +0 -0
  776. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_release_window.py +0 -0
  777. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_remote_auto_prune.py +0 -0
  778. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_remote_interactive_reaper.py +0 -0
  779. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_repo_edit_2220.py +0 -0
  780. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_repo_graph_fleet_2237.py +0 -0
  781. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_repo_onboard_2220.py +0 -0
  782. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_report_result_push.py +0 -0
  783. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_reports.py +0 -0
  784. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_retry.py +0 -0
  785. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_retry_advisory_1606.py +0 -0
  786. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_retry_type_1636.py +0 -0
  787. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_revalidate.py +0 -0
  788. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_review.py +0 -0
  789. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_review_end_review_without_verdict.py +0 -0
  790. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_review_parse_failure_diagnostic.py +0 -0
  791. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_review_reaffirm.py +0 -0
  792. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_review_state.py +0 -0
  793. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_review_verdict_backstop.py +0 -0
  794. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_review_verdict_override_audit.py +0 -0
  795. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_review_verdict_relay.py +0 -0
  796. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_review_zero_commits.py +0 -0
  797. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_scoped_review_wiring.py +0 -0
  798. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_scorecard.py +0 -0
  799. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_serve.py +0 -0
  800. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_serve_app_board_trim.py +0 -0
  801. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_session.py +0 -0
  802. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_slice_issue_attribution.py +0 -0
  803. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_smoke.py +0 -0
  804. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_smoke_live_checkout_restore.py +0 -0
  805. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_smoke_workflow.py +0 -0
  806. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_spend_ceiling.py +0 -0
  807. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_spend_ceiling_coordinator.py +0 -0
  808. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_split.py +0 -0
  809. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_split_work.py +0 -0
  810. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_stage_projection.py +0 -0
  811. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_stalled_pipeline.py +0 -0
  812. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_state.py +0 -0
  813. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_state_review_findings_daemon.py +0 -0
  814. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_status_fleet_footer.py +0 -0
  815. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_stop_1567.py +0 -0
  816. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_stuck.py +0 -0
  817. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_terminal_command.py +0 -0
  818. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_test_author.py +0 -0
  819. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_test_chat.py +0 -0
  820. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_test_orchestrator.py +0 -0
  821. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_test_report.py +0 -0
  822. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_test_verdict_parsing.py +0 -0
  823. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_test_verdict_transcript_floor.py +0 -0
  824. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_thin_client_board_audit.py +0 -0
  825. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_thin_client_config_load_1080.py +0 -0
  826. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_thin_client_daemon_routing_906.py +0 -0
  827. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_tmux_host.py +0 -0
  828. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_tmux_session.py +0 -0
  829. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_transcript_floor.py +0 -0
  830. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_usage.py +0 -0
  831. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_usage_limits.py +0 -0
  832. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_usage_rollup.py +0 -0
  833. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_venv_live_install_2121.py +0 -0
  834. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_version_single_source.py +0 -0
  835. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_watch.py +0 -0
  836. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  837. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_worker_events.py +0 -0
  838. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_worker_image_pin_sync.py +0 -0
  839. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_worker_safety.py +0 -0
  840. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_worker_test_scoping.py +0 -0
  841. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_worktree.py +0 -0
  842. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  843. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/Cargo.lock +0 -0
  844. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/Cargo.toml +0 -0
  845. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/cargo-config-local-quadraui.toml.example +0 -0
  846. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/audit.rs +0 -0
  847. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/chat.rs +0 -0
  848. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/drive.rs +0 -0
  849. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/drive_queue.rs +0 -0
  850. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/escalation.rs +0 -0
  851. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/fleet_health.rs +0 -0
  852. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/fleet_sessions.rs +0 -0
  853. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/fleet_terminals.rs +0 -0
  854. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/milestone_dag.rs +0 -0
  855. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/msv.rs +0 -0
  856. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/plans.rs +0 -0
  857. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/reports.rs +0 -0
  858. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/sessions.rs +0 -0
  859. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/settings_ui.rs +0 -0
  860. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/terminal.rs +0 -0
  861. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/types.rs +0 -0
  862. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/app/workspace.rs +0 -0
  863. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/bin/gtk.rs +0 -0
  864. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/commands.rs +0 -0
  865. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/lib.rs +0 -0
  866. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/main.rs +0 -0
  867. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/src/settings.rs +0 -0
  868. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/tests/acceptance.rs +0 -0
  869. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/tui/tests/cli.rs +0 -0
  870. {code_coordinator-0.5.150 → code_coordinator-0.5.154}/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.150
3
+ Version: 0.5.154
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.150
3
+ Version: 0.5.154
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
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.5.154",
3
+ "distance": 0,
4
+ "node": "g318d3f718e0a8945e4363a00807cd76278153173",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-08-19"
8
+ }
@@ -71,6 +71,7 @@ from coord.drive_queue import (
71
71
  find_cycle,
72
72
  fired_holds,
73
73
  is_permanent_block_reason,
74
+ is_unsatisfiable_prereq_reason,
74
75
  parse_after_spec,
75
76
  parse_key,
76
77
  pending_probe_targets,
@@ -562,13 +563,31 @@ _BLOCKED_REMEDY = (
562
563
  "actually fixed, not merely because a pre-req merged"
563
564
  )
564
565
 
565
- # #2230: `blocked`'s MERGE GATE (as opposed to its `after=` graph, which
566
- # `_BLOCKED_REMEDY` above still correctly calls never-re-checked) is no
567
- # longer unconditionally terminal see `coord.drive_queue.
568
- # is_permanent_block_reason`/`_reconcile_blocked`. Shown only for `blocked`
569
- # (never `failed`, which #2230 does not touch at all) so an operator reading
570
- # `list` right after this ships doesn't have to go read the issue to learn
571
- # their remove+add might be about to race an automatic resume.
566
+ # #2362: a `blocked` row (never `failed` the tick's `after=` resume sweep,
567
+ # `coord.drive_queue._reconcile_blocked_after`, is scoped to `blocked` only)
568
+ # whose OWN `last_reason` IS `_resolve_prereqs`'s "queued but blocked/failed
569
+ # it will never satisfy" verdict is auto re-checked every tick, and
570
+ # resumes to `waiting` on its own the moment every named pre-req lands.
571
+ # `_BLOCKED_REMEDY` above is flatly wrong for exactly this row shape (it is
572
+ # in fact re-checked, on its own, without an operator) — this note replaces
573
+ # it there instead of merely appending, mirroring #2230's own concern: an
574
+ # operator told "never re-checked" for a row about to self-resume would
575
+ # either do a needless remove+add or race the automatic one.
576
+ _BLOCKED_AFTER_NOTE = (
577
+ "remedy: {state}'s `after=` graph above IS re-checked automatically "
578
+ "every tick (#2362) — once every named pre-req lands (`facts.landed`), "
579
+ "this row resumes to `waiting` on its own, attempt budget reset; no "
580
+ "operator remove+add needed. See `resumes=` above if it has already "
581
+ "self-resumed and re-blocked for an unrelated reason."
582
+ )
583
+
584
+ # #2230: `blocked`'s MERGE GATE (as opposed to its `after=` graph, handled by
585
+ # `_BLOCKED_AFTER_NOTE`/`_BLOCKED_REMEDY` above) is no longer unconditionally
586
+ # terminal — see `coord.drive_queue.is_permanent_block_reason`/
587
+ # `_reconcile_blocked`. Shown only for `blocked` (never `failed`, which
588
+ # #2230 does not touch at all) so an operator reading `list` right after this
589
+ # ships doesn't have to go read the issue to learn their remove+add might be
590
+ # about to race an automatic resume.
572
591
  _BLOCKED_GATE_NOTE = (
573
592
  "note: a re-evaluable blocked cause (i.e. not a #1844/#2019 permanent "
574
593
  "refusal) IS re-checked against the merge gate automatically (#2230) — "
@@ -693,12 +712,37 @@ def drive_queue_list(repo: str | None, output_json: bool, config_path: Path) ->
693
712
  # #2183 point 4: `blocked`/`failed` is terminal — say so where the
694
713
  # operator is already reading the row, not just in an unrelated
695
714
  # operator's hand-written `--hold-after` note.
696
- click.echo(f" {_BLOCKED_REMEDY.format(state=entry.state)}")
715
+ #
716
+ # #2404: EXCEPT when this row's own `last_reason` is exactly the
717
+ # unsatisfiable-`after=`-pre-req verdict on a `blocked` (not
718
+ # `failed`) entry — that shape auto-resumes on its own every tick
719
+ # (#2362), so the generic "never re-checked on its own" remedy
720
+ # would be actively wrong for it; swap in the note that says so.
721
+ if entry.state == STATE_BLOCKED and is_unsatisfiable_prereq_reason(
722
+ entry.last_reason
723
+ ):
724
+ click.echo(f" {_BLOCKED_AFTER_NOTE.format(state=entry.state)}")
725
+ else:
726
+ click.echo(f" {_BLOCKED_REMEDY.format(state=entry.state)}")
697
727
  # #2230: independent of the `after=` diagnosis above (most `blocked`
698
728
  # rows have no `after=` at all — they blocked on attempts, not a
699
729
  # pre-req), so gated on the row's OWN state and cause, not `diagnosed`.
700
- if entry.state == STATE_BLOCKED and not is_permanent_block_reason(
701
- entry.last_reason
730
+ #
731
+ # #2404 review: EXCLUDE the unsatisfiable-`after=`-pre-req shape
732
+ # `_BLOCKED_AFTER_NOTE` above already covers. #2230's sweep
733
+ # (`_blocked_gate_reading`) returns `None` — "no evidence" — for an
734
+ # entry that never reached the merge queue at all, which is exactly
735
+ # what a purely `after=`-caused block is; showing this note there
736
+ # would stack two auto-recheck notes citing two different issue
737
+ # numbers under one row, one of which has nothing to say about that
738
+ # row's actual cause. `is_permanent_block_reason` rows already skip
739
+ # this note on their own; this adds the sibling exclusion so the two
740
+ # notes stay mutually exclusive, matching what each mechanism can
741
+ # actually promise for a given row.
742
+ if (
743
+ entry.state == STATE_BLOCKED
744
+ and not is_permanent_block_reason(entry.last_reason)
745
+ and not is_unsatisfiable_prereq_reason(entry.last_reason)
702
746
  ):
703
747
  click.echo(f" {_BLOCKED_GATE_NOTE}")
704
748
  for line in _hold_lines(entry):
@@ -1070,10 +1070,22 @@ def release_propagate( # noqa: PLR0912, PLR0915 — a pipeline; the decisions a
1070
1070
  gate = rp.scope_verification(record.verification, lanes=record.lanes)
1071
1071
  record.gate = gate.to_dict()
1072
1072
  for finding in gate.advisory:
1073
+ host = finding.get("host")
1074
+ # #2403: elitebook sat on 0.5.146 (expected 0.5.148) for the length
1075
+ # of a cordon's full lifetime with this line as the ONLY signal an
1076
+ # operator got — "fix by hand" with no hand to follow. When the
1077
+ # finding names a host, name the two commands that actually clear
1078
+ # it, so nobody has to derive them from scratch under time pressure.
1079
+ remedy = (
1080
+ f" — run `coord agent update --machine {host}` then "
1081
+ f"`coord release cordon --clear {host}`"
1082
+ if host
1083
+ else ""
1084
+ )
1073
1085
  click.echo(
1074
- f" ~ advisory [{finding.get('severity')}] {finding.get('host')} "
1086
+ f" ~ advisory [{finding.get('severity')}] {host} "
1075
1087
  f"{finding.get('lane')}: {finding.get('summary')} "
1076
- "— outside propagation's reach, fix by hand",
1088
+ f"— outside propagation's reach, fix by hand{remedy}",
1077
1089
  err=True,
1078
1090
  )
1079
1091
  if gate.unrollable:
@@ -1600,6 +1600,19 @@ def _is_unsatisfiable_prereq_reason(text: str | None) -> bool:
1600
1600
  return bool(text) and _UNSATISFIABLE_PREREQ_MARKER in text
1601
1601
 
1602
1602
 
1603
+ def is_unsatisfiable_prereq_reason(text: str | None) -> bool:
1604
+ """Public alias for :func:`_is_unsatisfiable_prereq_reason`.
1605
+
1606
+ `coord drive-queue list`'s rendering (#2404) needs to tell whether a
1607
+ `blocked` row's frozen ``last_reason`` is the exact shape
1608
+ :func:`_reconcile_blocked_after` (#2362) auto-resumes once every named
1609
+ pre-req lands, so it can stop telling the operator the ``after=`` graph
1610
+ "is never re-checked on its own" for a row where that has stopped being
1611
+ true — see ``coord.commands.drive_queue._BLOCKED_AFTER_NOTE``.
1612
+ """
1613
+ return _is_unsatisfiable_prereq_reason(text)
1614
+
1615
+
1603
1616
  def _reconcile_blocked_after(
1604
1617
  entry: QueueEntry,
1605
1618
  board: BoardView,
@@ -692,6 +692,65 @@ def test_blocked_row_purely_by_an_unsatisfiable_prereq_is_unchanged(cli, seed):
692
692
  assert dep_reason in result.output
693
693
 
694
694
 
695
+ def test_blocked_row_purely_by_an_unsatisfiable_prereq_gets_the_2362_note(
696
+ cli, seed
697
+ ):
698
+ """#2404: unlike a `blocked` row whose own cause is unrelated to its
699
+ `after=` graph (genuinely "never re-checked on its own" — see the #542
700
+ control case above), a row blocked purely because a named pre-req is
701
+ itself `blocked`/`failed` DOES get re-checked automatically every tick
702
+ (#2362): the moment that pre-req lands, this row resumes to `waiting` on
703
+ its own. `list`'s remedy line must say so instead of sending an operator
704
+ to a needless (or racing) manual `remove`+`add`."""
705
+ seed(issues={1650: "open"})
706
+ # 1650: blocked for its own, unrelated reason — nothing re-checks this.
707
+ cli("add", REPO, "1650")
708
+ state._update_drive_queue_entry_local(
709
+ REPO, 1650, state="blocked", last_reason="drive session died"
710
+ )
711
+ # 1654 (the #492 shape): blocked ONLY because its pre-req (1650) is
712
+ # itself blocked — the exact shape #2362's tick sweep auto-resumes.
713
+ cli("add", REPO, "1654", "--after", "1650")
714
+ dep_reason = f"pre-req {REPO}#1650 is queued but blocked — it will never satisfy"
715
+ state._update_drive_queue_entry_local(
716
+ REPO, 1654, state="blocked", last_reason=dep_reason
717
+ )
718
+
719
+ result = cli("list")
720
+ assert result.exit_code == 0, result.output
721
+
722
+ # 1650 has no `after=` at all, so #2183's diagnosis (and any remedy
723
+ # line) never applies to it — nothing to assert there beyond it existing.
724
+ assert _row_for(result.output, f"{REPO}#1650")
725
+
726
+ # Split the transcript at 1654's own row header — 1654 is the last
727
+ # (only remaining) row, so everything from there on is exactly ITS
728
+ # block (summary/last:/note lines), never 1650's.
729
+ idx_1654 = result.output.index(f"{REPO}#1654")
730
+ block_1650 = result.output[:idx_1654]
731
+ block_1654 = result.output[idx_1654:]
732
+
733
+ # 1654's remedy line is the new #2362 note, not the stale "never
734
+ # re-checked on its own" advice — this row auto-resumes without an
735
+ # operator.
736
+ assert "IS re-checked automatically every tick (#2362)" in block_1654
737
+ assert "no operator remove+add needed" in block_1654
738
+ assert "never re-checked on its own" not in block_1654
739
+
740
+ # #2404 review (non-blocking finding): #2230's merge-gate note must NOT
741
+ # also print for this row. `_blocked_gate_reading` returns `None` — no
742
+ # evidence — for an entry that never reached the merge queue, which is
743
+ # exactly what a purely `after=`-caused block is; showing it here would
744
+ # stack two auto-recheck notes citing two different issue numbers under
745
+ # one row, one of which has nothing to say about this row's real cause.
746
+ assert "re-checked against the merge gate automatically (#2230)" not in block_1654
747
+
748
+ # …but an ordinary blocked row whose cause is unrelated to its `after=`
749
+ # graph (1650, blocked on "drive session died") still gets #2230's note
750
+ # exactly as before — this exclusion is scoped to the #2362 shape only.
751
+ assert "re-checked against the merge gate automatically (#2230)" in block_1650
752
+
753
+
695
754
  def test_list_with_no_after_is_unaffected_by_the_2183_diagnosis(cli):
696
755
  """A `blocked` entry that never declared any `after=` at all keeps
697
756
  rendering exactly as it always has — no board dependency, no remedy
@@ -847,6 +847,57 @@ def test_a_green_roll_is_verified_and_journalled(valid_config_path, state_dir,
847
847
  assert record["verification"]["severity"] == "ok"
848
848
 
849
849
 
850
+ def test_a_waiting_between_legs_entry_rolls_its_host_normally(
851
+ valid_config_path, state_dir, no_network, monkeypatch
852
+ ):
853
+ """#2403, end to end: `laptop`'s only queue entry is `waiting` — deferred
854
+ by an unrelated repo-capacity cap (#1972), exactly `claude-coordinator
855
+ #2005`'s live shape on 2026-08-18 — with a terminal assignment recording
856
+ `laptop` as its last worker. #2240's "last known host" fallback exists
857
+ for a `running` between-legs row; it must not reach a `waiting` one. A
858
+ genuinely idle `laptop` has to roll and verify like any other free host,
859
+ not sit deferred and cordoned on the strength of a queue row that never
860
+ launched anything."""
861
+ monkeypatch.setattr(
862
+ release_cmd, "_fetch_board",
863
+ lambda: (
864
+ {
865
+ "drive_queue": [
866
+ {"repo_name": "api", "issue_number": 2005,
867
+ "state": "waiting", "deferrals": 3, "attempts": 2},
868
+ ],
869
+ "assignments": [
870
+ {"repo_name": "api", "issue_number": 2005,
871
+ "machine_name": "laptop", "status": "COMPLETED",
872
+ "dispatched_at": 100.0},
873
+ ],
874
+ },
875
+ None,
876
+ ),
877
+ )
878
+ calls = _stub_lanes(monkeypatch)
879
+ _stub_verify(monkeypatch, versions={"laptop": ["0.4.110"], "server": ["0.4.110"]},
880
+ daemon="server")
881
+ result = CliRunner().invoke(
882
+ main,
883
+ ["release", "propagate", "--config", str(valid_config_path),
884
+ "--target", "0.4.111"],
885
+ )
886
+ assert result.exit_code == 0, result.output
887
+ assert rp.STATUS_DEFERRED not in result.output
888
+ assert any(host == "laptop" for _lane, host in calls), (
889
+ "a waiting queue row must never defer the host it names as its "
890
+ "last known worker"
891
+ )
892
+ record = _records(state_dir)[0]
893
+ assert record["status"] == rp.STATUS_VERIFIED
894
+ assert not any(
895
+ l["host"] == "laptop" and l["lane"] == "-" for l in record["lanes"]
896
+ )
897
+ # Nothing is left cordoned behind a row that was never actually running.
898
+ assert mp.cordoned_names() == set()
899
+
900
+
850
901
  def test_a_red_verification_rolls_every_updated_host_back(valid_config_path, state_dir,
851
902
  no_network, monkeypatch):
852
903
  """#1835: 'a red post-deploy verification must roll back, not just
@@ -1221,6 +1272,47 @@ def test_2026_08_09_a_good_roll_is_not_reverted_by_lanes_it_cannot_roll(
1221
1272
  assert "advisory" in result.output
1222
1273
 
1223
1274
 
1275
+ def test_the_outside_reach_message_names_the_manual_remedy(
1276
+ valid_config_path, state_dir, no_network, monkeypatch
1277
+ ):
1278
+ """#2403: elitebook sat behind for the length of a cordon's lifetime with
1279
+ only `"outside propagation's reach, fix by hand"` as its signal — no
1280
+ remedy, just an instruction to invent one under time pressure. A
1281
+ finding that names a host must name the two commands that actually fix
1282
+ it: `coord agent update --machine <host>` and `coord release cordon
1283
+ --clear <host>`."""
1284
+ from coord import release_verify as rv
1285
+
1286
+ # `laptop` has a live assignment, so its python lane is deferred (never
1287
+ # attempted) this run — exactly why its own version-mismatch finding
1288
+ # lands as advisory rather than blocking (#2052's `attempted_scope`).
1289
+ monkeypatch.setattr(
1290
+ release_cmd, "_fetch_board",
1291
+ lambda: ({"assignments": [{"machine_name": "laptop", "issue_number": 9,
1292
+ "status": "RUNNING"}]}, None),
1293
+ )
1294
+ _stub_lanes(monkeypatch)
1295
+ _stub_verify(
1296
+ monkeypatch,
1297
+ versions={"laptop": ["0.4.110"], "server": ["0.4.110"]},
1298
+ daemon="server",
1299
+ findings=[
1300
+ rv.Finding(severity="crit", host="laptop",
1301
+ lane="~/.coord-venv (laptop)",
1302
+ summary="on 0.4.104, expected 0.4.111"),
1303
+ ],
1304
+ )
1305
+ result = CliRunner().invoke(
1306
+ main,
1307
+ ["release", "propagate", "--config", str(valid_config_path),
1308
+ "--target", "0.4.111"],
1309
+ )
1310
+ assert result.exit_code == 0, result.output
1311
+ assert "outside propagation's reach, fix by hand" in result.output
1312
+ assert "coord agent update --machine laptop" in result.output
1313
+ assert "coord release cordon --clear laptop" in result.output
1314
+
1315
+
1224
1316
  def test_a_crit_on_a_lane_this_run_rolled_still_reverts(valid_config_path, state_dir,
1225
1317
  no_network, monkeypatch):
1226
1318
  """Scoping the gate is not removing it."""
@@ -2433,6 +2433,116 @@ def test_a_permanently_blocked_entry_is_not_resumed_even_once_its_after_lands():
2433
2433
  assert plan.launch is None
2434
2434
 
2435
2435
 
2436
+ # ── #2404 review: a CHAINED (two-hop) after= block, not just single-hop ────
2437
+ #
2438
+ # The live incident this issue is about (claude-coordinator#2284-#2288) was
2439
+ # never a single `after=` edge: #2284-#2288 all declared `after=2283`, and
2440
+ # #2283 was ITSELF `blocked` on `after=2282` — a two-hop chain (root 2282 ->
2441
+ # middle 2283 -> leaf 2284..2288), not the one-hop shape every test above
2442
+ # pins. `_reconcile_blocked_after`'s resume check is driven entirely by
2443
+ # `board.facts(dep).landed` — a real, board-derived merge fact, never by a
2444
+ # dependency's in-tick `states` entry — so in principle each hop should
2445
+ # resolve independently the moment ITS OWN named pre-req actually lands,
2446
+ # with no special-casing needed for the chain shape. These two tests are the
2447
+ # repro the review asked for: they exercise `plan_tick` against an actual
2448
+ # two-hop graph to confirm that holds (it does), and pin the one subtlety a
2449
+ # naive "chain" fix could get wrong — a leaf must not resume just because
2450
+ # its immediate pre-req was ITSELF re-queued to `waiting` this same tick;
2451
+ # only that pre-req actually landing (merged/closed) may resume the leaf.
2452
+
2453
+
2454
+ def test_a_two_hop_after_chain_resumes_in_one_tick_once_both_hops_have_landed():
2455
+ """The exact live-incident shape: by the time anyone looked, BOTH the
2456
+ root (2282-analog) and the middle (2283-analog) pre-reqs had already
2457
+ merged — the middle's queue row just hadn't been reconciled yet. A
2458
+ single tick must resolve the WHOLE chain: the middle reconciles to
2459
+ `done` via #2055's landed check, and the leaf (2284..2288-analog),
2460
+ reading the middle's REAL board fact rather than its stale on-disk
2461
+ `blocked` state, resumes to `waiting` in that same tick — no operator
2462
+ action, and no second tick needed once both merges are real."""
2463
+ root = entry_key(REPO, 1650)
2464
+ middle = entry_key(REPO, 1654)
2465
+ entries = [
2466
+ entry(1650, position=0, state=STATE_DONE),
2467
+ entry(
2468
+ 1654,
2469
+ position=1,
2470
+ after=(root,),
2471
+ state=STATE_BLOCKED,
2472
+ attempts=2,
2473
+ last_reason=f"pre-req {root} is queued but blocked — it will never satisfy",
2474
+ ),
2475
+ entry(
2476
+ 1658,
2477
+ position=2,
2478
+ after=(middle,),
2479
+ state=STATE_BLOCKED,
2480
+ attempts=1,
2481
+ last_reason=f"pre-req {middle} is queued but blocked — it will never satisfy",
2482
+ ),
2483
+ ]
2484
+ # Both the root AND the middle have actually merged — mirrors the live
2485
+ # incident, where #2283 (middle) itself showed `done — issue already
2486
+ # merged while blocked (#2055)` once anyone looked.
2487
+ plan = plan_tick(entries, board(merged=(1650, 1654)), capacity=3)
2488
+
2489
+ middle_reconcile = next(r for r in plan.reconciles if r.key == middle)
2490
+ assert middle_reconcile.outcome == "done"
2491
+ assert middle_reconcile.updates["state"] == STATE_DONE
2492
+
2493
+ leaf_reconcile = next(r for r in plan.reconciles if r.key == entry_key(REPO, 1658))
2494
+ assert leaf_reconcile.outcome == "resumed"
2495
+ assert leaf_reconcile.updates["state"] == STATE_WAITING
2496
+ assert leaf_reconcile.updates["attempts"] == 0
2497
+ assert leaf_reconcile.updates["resumes"] == 1
2498
+
2499
+ # …and, exactly like the single-hop case, the freshly-resumed leaf falls
2500
+ # straight into this SAME tick's launch selection.
2501
+ assert plan.launch is not None and plan.launch.issue == 1658
2502
+
2503
+
2504
+ def test_a_two_hop_after_chain_leaf_is_not_resumed_until_its_own_pre_req_lands():
2505
+ """Guard against the false-resume a naive "propagate through `states`"
2506
+ chain fix would introduce: once the root lands, the middle correctly
2507
+ resumes to `waiting` THIS tick (single-hop #2362 behaviour) — but the
2508
+ leaf's own named pre-req is the MIDDLE, which has only been re-queued,
2509
+ not merged. The leaf must stay `blocked` until the middle itself
2510
+ actually lands, even though `states[middle]` already reads `waiting` by
2511
+ the time the leaf is walked in this same tick."""
2512
+ root = entry_key(REPO, 1650)
2513
+ middle = entry_key(REPO, 1654)
2514
+ entries = [
2515
+ entry(1650, position=0, state=STATE_DONE),
2516
+ entry(
2517
+ 1654,
2518
+ position=1,
2519
+ after=(root,),
2520
+ state=STATE_BLOCKED,
2521
+ attempts=2,
2522
+ last_reason=f"pre-req {root} is queued but blocked — it will never satisfy",
2523
+ ),
2524
+ entry(
2525
+ 1658,
2526
+ position=2,
2527
+ after=(middle,),
2528
+ state=STATE_BLOCKED,
2529
+ attempts=1,
2530
+ last_reason=f"pre-req {middle} is queued but blocked — it will never satisfy",
2531
+ ),
2532
+ ]
2533
+ # Only the root has landed — the middle has not (it is only about to be
2534
+ # re-queued to `waiting` THIS tick, not merged).
2535
+ plan = plan_tick(entries, board(merged=(1650,)), capacity=3)
2536
+
2537
+ middle_reconcile = next(r for r in plan.reconciles if r.key == middle)
2538
+ assert middle_reconcile.outcome == "resumed"
2539
+ assert middle_reconcile.updates["state"] == STATE_WAITING
2540
+
2541
+ # The leaf gets NO reconcile at all this tick — it stays blocked, with
2542
+ # its existing (still-true) "it will never satisfy" reason untouched.
2543
+ assert all(r.key != entry_key(REPO, 1658) for r in plan.reconciles)
2544
+
2545
+
2436
2546
  def test_is_unsatisfiable_prereq_reason_recognises_only_the_exact_verdict_shape():
2437
2547
  from coord.drive_queue import _is_unsatisfiable_prereq_reason
2438
2548
 
@@ -332,6 +332,39 @@ def test_an_unpinned_entry_between_legs_is_unattributable_not_launch_host():
332
332
  assert q.rollable_hosts(["dellserver", "elitebook"]) == []
333
333
 
334
334
 
335
+ def test_a_waiting_entry_between_legs_is_not_attributed_to_its_last_known_host():
336
+ """#2403, live 2026-08-18 ~23:17 UTC: elitebook was genuinely idle
337
+ (`active: []` on both `/status` and `/health`), and `coord drive-queue
338
+ list` showed `claude-coordinator#2005` in state `waiting` — deferred by
339
+ an unrelated per-repo concurrency cap, not running anywhere. `coord
340
+ release propagate` nonetheless deferred and cordoned elitebook, reading
341
+ the log line #2240's fix writes for a genuinely *between-legs* `running`
342
+ row: "attributed to its last known host".
343
+
344
+ #2240's fallback (`_last_assignment_hosts`) exists to narrow an
345
+ unattributable RUNNING row from fleet-wide to one host — it is not
346
+ licence to treat a WAITING row as though it were running just because it
347
+ once had an assignment. Only `state == STATE_RUNNING` may reach that
348
+ fallback at all; a `waiting` row — however recently it ran, however many
349
+ times it has been deferred — has no live assignment and no in-flight
350
+ process anywhere, and must roll its host normally."""
351
+ entry = {"repo_name": "claude-coordinator", "issue_number": 2005,
352
+ "state": STATE_WAITING, "deferrals": 3, "attempts": 2}
353
+ q = rp.assess_quiescence(
354
+ queue_entries=[entry],
355
+ # The exact shape `_last_assignment_hosts` reads: a terminal
356
+ # assignment naming elitebook as the entry's last worker.
357
+ assignments=[{"repo_name": "claude-coordinator", "issue_number": 2005,
358
+ "machine_name": "elitebook", "status": "COMPLETED",
359
+ "dispatched_at": 100.0}],
360
+ )
361
+ assert q.busy == ()
362
+ assert q.quiescent
363
+ assert q.rollable_hosts(["dellserver", "elitebook", "precision"]) == [
364
+ "dellserver", "elitebook", "precision",
365
+ ]
366
+
367
+
335
368
  def test_a_live_assignment_is_attributed_to_its_machine():
336
369
  q = rp.assess_quiescence(
337
370
  assignments=[{"machine_name": "dellserver", "issue_number": 42,
@@ -2626,7 +2626,19 @@ pub(crate) fn start_data_load() -> std::sync::mpsc::Receiver<BoardData> {
2626
2626
  // the real local SQLite DB and overwrite pipeline_issues / data.assignments
2627
2627
  // with whatever the developer's coord.db currently contains, making
2628
2628
  // TuiDriver tests non-deterministic and machine-dependent.
2629
- #[cfg(test)]
2629
+ //
2630
+ // #2284 (ms-65 §3, manifest finding 7): gated on `feature = "test-support"`
2631
+ // too, not just `cfg(test)` — the sealed `tests/acceptance/**` suite
2632
+ // (`tui/tests/acceptance.rs`, the #1042 seam) is a separate integration-test
2633
+ // crate, so the `coord_tui` it links against is built *without* `cfg(test)`
2634
+ // (only the top-level `cargo test` binary gets that cfg). Without this
2635
+ // widening, entering the Pipeline panel in that suite kicks
2636
+ // `maybe_kick_pipeline_loader` -> `refresh` -> this function, which fell
2637
+ // through to the real network/SQLite path and wholesale-replaced the
2638
+ // seeded fixture on the very next dispatched event (a RACE — whichever
2639
+ // finished first) — mirrors the exact same trap `resolve_board_service`
2640
+ // above already widened for (#1039).
2641
+ #[cfg(any(test, feature = "test-support"))]
2630
2642
  {
2631
2643
  let _ = tx.send(BoardData::default());
2632
2644
  return rx;