code-coordinator 0.5.77__tar.gz → 0.5.79__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 (826) hide show
  1. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/drive_queue.py +168 -4
  5. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/merge.py +68 -0
  6. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/db.py +16 -0
  7. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/drive_queue.py +283 -17
  8. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/merge_queue.py +107 -0
  9. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/revalidate.py +59 -0
  10. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/state.py +4 -2
  11. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/DRIVE_QUEUE.md +68 -7
  12. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/OPERATING_GOTCHAS.md +57 -0
  13. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_drive_queue.py +7 -3
  14. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_db.py +100 -0
  15. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_drive_queue.py +169 -0
  16. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_merge_queue.py +221 -0
  17. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_revalidate.py +271 -0
  18. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_thin_client_board_audit.py +14 -1
  19. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/tests/fixtures/board_sample.json +2 -0
  20. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/.claude/commands/board.md +0 -0
  21. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/.claude/commands/complete-session.md +0 -0
  22. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/.claude/commands/coordinator.md +0 -0
  23. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/.githooks/_lib.sh +0 -0
  24. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/.githooks/post-checkout +0 -0
  25. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/.githooks/post-commit +0 -0
  26. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/.githooks/post-merge +0 -0
  27. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  28. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/.github/coord-ci-acceptance.yml +0 -0
  29. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/.github/workflows/auto-release.yml +0 -0
  30. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/.github/workflows/cargo-test.yml +0 -0
  31. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/.github/workflows/publish.yml +0 -0
  32. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/.github/workflows/release-tui.yml +0 -0
  33. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/.github/workflows/test.yml +0 -0
  34. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/.gitignore +0 -0
  35. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/CLAUDE.md +0 -0
  36. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/GOAL.md +0 -0
  37. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/LICENSE +0 -0
  38. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/MANIFEST.in +0 -0
  39. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/README.md +0 -0
  40. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/code_coordinator.egg-info/SOURCES.txt +0 -0
  41. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/code_coordinator.egg-info/dependency_links.txt +0 -0
  42. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/code_coordinator.egg-info/entry_points.txt +0 -0
  43. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/code_coordinator.egg-info/requires.txt +0 -0
  44. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/code_coordinator.egg-info/scm_file_list.json +0 -0
  45. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/code_coordinator.egg-info/top_level.txt +0 -0
  46. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/__init__.py +0 -0
  47. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/_board_mapping.py +0 -0
  48. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/acceptance.py +0 -0
  49. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/acceptance_drivers.py +0 -0
  50. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/agent.py +0 -0
  51. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/agent_app.py +0 -0
  52. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/agent_update.py +0 -0
  53. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/agents/opencode/.gitignore +0 -0
  54. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/agents/opencode/agents/work.md +0 -0
  55. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/agents/opencode/routing.jsonc +0 -0
  56. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/audit.py +0 -0
  57. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/auto_loop.py +0 -0
  58. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/board_bool_guard.py +0 -0
  59. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/board_service.py +0 -0
  60. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/board_wire.py +0 -0
  61. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/brain.py +0 -0
  62. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/branch_model.py +0 -0
  63. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/bug_intake.py +0 -0
  64. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/cargo_cache.py +0 -0
  65. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/ci_github.py +0 -0
  66. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/ci_store.py +0 -0
  67. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/claim.py +0 -0
  68. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/cli.py +0 -0
  69. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/client.py +0 -0
  70. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/__init__.py +0 -0
  71. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/_common.py +0 -0
  72. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/acceptance.py +0 -0
  73. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/agent_ops.py +0 -0
  74. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/audit.py +0 -0
  75. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/chat.py +0 -0
  76. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/dispatch.py +0 -0
  77. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/dispatch_workers.py +0 -0
  78. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/drive.py +0 -0
  79. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/gate_a.py +0 -0
  80. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/gates.py +0 -0
  81. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/issues.py +0 -0
  82. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/lifecycle.py +0 -0
  83. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/milestone.py +0 -0
  84. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/plan_followup.py +0 -0
  85. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/plans.py +0 -0
  86. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/portal.py +0 -0
  87. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/release.py +0 -0
  88. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/repo.py +0 -0
  89. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/report.py +0 -0
  90. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/review.py +0 -0
  91. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/scorecard.py +0 -0
  92. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/sessions.py +0 -0
  93. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/setup.py +0 -0
  94. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/status.py +0 -0
  95. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/terminal.py +0 -0
  96. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/test_gate.py +0 -0
  97. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/commands/tui.py +0 -0
  98. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/comments.py +0 -0
  99. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/config.py +0 -0
  100. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/conflict_fix.py +0 -0
  101. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dao.py +0 -0
  102. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/__init__.py +0 -0
  103. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/fixture.py +0 -0
  104. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/index.html +0 -0
  105. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/server.py +0 -0
  106. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/terminal.py +0 -0
  107. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/.gitignore +0 -0
  108. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/components.json +0 -0
  109. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/dist/assets/Gallery-da3qNiIw.js +0 -0
  110. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  111. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/dist/assets/Terminal-skVFCxPU.js +0 -0
  112. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/dist/assets/index-DltfZR5f.js +0 -0
  113. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  114. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  115. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  116. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  117. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  118. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/dist/index.html +0 -0
  119. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  120. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/dist/sw.js +0 -0
  121. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  122. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  123. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  124. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  125. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  126. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  127. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  128. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  129. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  130. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  131. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/eslint.config.js +0 -0
  132. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/index.html +0 -0
  133. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  134. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/package-lock.json +0 -0
  135. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/package.json +0 -0
  136. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  137. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/playwright.config.ts +0 -0
  138. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/postcss.config.js +0 -0
  139. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  140. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  141. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  142. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/App.tsx +0 -0
  143. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/api/client.ts +0 -0
  144. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  145. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  146. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  147. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  148. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  149. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  150. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  151. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  152. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  153. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  154. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  155. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  156. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  157. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  158. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  159. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  160. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  161. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  162. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  163. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  164. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  165. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  166. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  167. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  168. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  169. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  170. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  171. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  172. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  173. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  174. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  175. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  176. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  177. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  178. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  179. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/index.css +0 -0
  180. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  181. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  182. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/main.tsx +0 -0
  183. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  184. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  185. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  186. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  187. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  188. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  189. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  190. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  191. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  192. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  193. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  194. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  195. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  196. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  197. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  198. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  199. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  200. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  201. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  202. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  203. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  204. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  205. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  206. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/tailwind.config.js +0 -0
  207. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/tsconfig.json +0 -0
  208. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  209. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dashboard/webapp/vite.config.ts +0 -0
  210. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dead_end.py +0 -0
  211. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/README.md +0 -0
  212. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-agent.service +0 -0
  213. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-db-backup.service +0 -0
  214. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-db-backup.sh +0 -0
  215. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-db-backup.timer +0 -0
  216. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-drive-queue.service +0 -0
  217. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-drive-queue.timer +0 -0
  218. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-notify.service +0 -0
  219. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-notify.timer +0 -0
  220. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-release-propagate.service +0 -0
  221. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-release-propagate.timer +0 -0
  222. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-release-window.service +0 -0
  223. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-release-window.timer +0 -0
  224. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-serve.service +0 -0
  225. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-web-dist-build.service +0 -0
  226. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-web-dist-build.timer +0 -0
  227. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy/coord-web.service +0 -0
  228. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy_manifest.py +0 -0
  229. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deploy_units.py +0 -0
  230. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/deps.py +0 -0
  231. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/diagnose.py +0 -0
  232. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dispatch.py +0 -0
  233. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/dist_name.py +0 -0
  234. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/drive.py +0 -0
  235. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/drive_state.py +0 -0
  236. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/events.py +0 -0
  237. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/failure_class.py +0 -0
  238. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/filelock.py +0 -0
  239. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/fleet_config_health.py +0 -0
  240. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/freshness.py +0 -0
  241. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/gate_a.py +0 -0
  242. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/gate_b.py +0 -0
  243. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/gate_snapshot.py +0 -0
  244. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/gates.py +0 -0
  245. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/github_ops.py +0 -0
  246. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/goal.py +0 -0
  247. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/graph_health.py +0 -0
  248. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/__init__.py +0 -0
  249. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/aggregate.py +0 -0
  250. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/__init__.py +0 -0
  251. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/agent_install.py +0 -0
  252. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/cargo_targets.py +0 -0
  253. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/claude_binary.py +0 -0
  254. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/deploy_lane_facts.py +0 -0
  255. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/disk.py +0 -0
  256. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/fleet_board.py +0 -0
  257. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  258. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/fleet_phantom.py +0 -0
  259. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/fleet_unit_drift.py +0 -0
  260. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/graph.py +0 -0
  261. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/plan_usage.py +0 -0
  262. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/repo_state.py +0 -0
  263. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/spawned_coord.py +0 -0
  264. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/timer_active.py +0 -0
  265. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/toolchain.py +0 -0
  266. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/unit_drift.py +0 -0
  267. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/unit_enablement.py +0 -0
  268. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/checks/worktrees.py +0 -0
  269. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/cli.py +0 -0
  270. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/context.py +0 -0
  271. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/fleet_snapshot.py +0 -0
  272. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/models.py +0 -0
  273. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/pypi.py +0 -0
  274. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/registry.py +0 -0
  275. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/render.py +0 -0
  276. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/health/units.py +0 -0
  277. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/hooks.py +0 -0
  278. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/housekeeping.py +0 -0
  279. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/interactive.py +0 -0
  280. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/issue_store.py +0 -0
  281. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/liveness_auditor.py +0 -0
  282. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/machine_pause.py +0 -0
  283. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/milestone_chat.py +0 -0
  284. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/milestone_dispatch.py +0 -0
  285. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/milestone_gate.py +0 -0
  286. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/milestone_order.py +0 -0
  287. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/mock_author.py +0 -0
  288. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/models.py +0 -0
  289. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/network.py +0 -0
  290. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/new_issue_chat.py +0 -0
  291. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/notifier/__init__.py +0 -0
  292. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/notifier/baseline.py +0 -0
  293. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/notifier/cli.py +0 -0
  294. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/notifier/collect.py +0 -0
  295. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/notifier/digest.py +0 -0
  296. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/notifier/models.py +0 -0
  297. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/notifier/predicate.py +0 -0
  298. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/notifier/service.py +0 -0
  299. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/notifier/store.py +0 -0
  300. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/notifier/transport.py +0 -0
  301. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/notify.py +0 -0
  302. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/openapi.py +0 -0
  303. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/overlap_fence.py +0 -0
  304. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/parentage.py +0 -0
  305. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/parentage_github.py +0 -0
  306. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/pipeline.py +0 -0
  307. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/plan_parser.py +0 -0
  308. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/plans.py +0 -0
  309. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/platform_paths.py +0 -0
  310. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/portal_bridge.py +0 -0
  311. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/pr_body_lint.py +0 -0
  312. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/prereqs.py +0 -0
  313. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/progress.py +0 -0
  314. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/providers/__init__.py +0 -0
  315. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/providers/base.py +0 -0
  316. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/providers/claude.py +0 -0
  317. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/providers/claude_pty.py +0 -0
  318. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/providers/opencode.py +0 -0
  319. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/reconcile.py +0 -0
  320. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/refine_chat.py +0 -0
  321. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/release_cordon.py +0 -0
  322. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/release_propagate.py +0 -0
  323. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/release_verify.py +0 -0
  324. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/release_window.py +0 -0
  325. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/repo_edit.py +0 -0
  326. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/repo_onboard.py +0 -0
  327. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/reports.py +0 -0
  328. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/review.py +0 -0
  329. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/scorecard.py +0 -0
  330. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/serve_app.py +0 -0
  331. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/skills/update-issue/SKILL.md +0 -0
  332. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/smoke.py +0 -0
  333. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/spend_ceiling.py +0 -0
  334. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/split_work.py +0 -0
  335. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/stage_projection.py +0 -0
  336. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/test_author.py +0 -0
  337. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/test_chat.py +0 -0
  338. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/test_orchestrator.py +0 -0
  339. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/test_report.py +0 -0
  340. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/tui_release.py +0 -0
  341. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/usage.py +0 -0
  342. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/usage_limits.py +0 -0
  343. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/usage_rollup.py +0 -0
  344. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coord/worker_events.py +0 -0
  345. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/coordinator.example.yml +0 -0
  346. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-agent.service +0 -0
  347. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-db-backup.service +0 -0
  348. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-db-backup.sh +0 -0
  349. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-db-backup.timer +0 -0
  350. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-drive-queue.service +0 -0
  351. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-drive-queue.timer +0 -0
  352. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-notify.service +0 -0
  353. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-notify.timer +0 -0
  354. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-release-propagate.service +0 -0
  355. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-release-propagate.timer +0 -0
  356. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-release-window.service +0 -0
  357. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-release-window.timer +0 -0
  358. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-serve.service +0 -0
  359. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-web-dist-build.service +0 -0
  360. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-web-dist-build.sh +0 -0
  361. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-web-dist-build.timer +0 -0
  362. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-web-rollback.sh +0 -0
  363. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/coord-web.service +0 -0
  364. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/deploy/node-shim.sh +0 -0
  365. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/AGENT_OPERATIONS.md +0 -0
  366. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/ARCHITECTURE.md +0 -0
  367. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/ARCH_SECURITY_GATES.md +0 -0
  368. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/COCKPIT.md +0 -0
  369. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/CONTROL_CENTER.md +0 -0
  370. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/COST_DISCIPLINE.md +0 -0
  371. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/CROSS_PLATFORM.md +0 -0
  372. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/CUSTOMER_PORTAL.md +0 -0
  373. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/EPHEMERAL_WORKERS.md +0 -0
  374. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/FORGE_MIGRATION.md +0 -0
  375. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/GRAPHIFY_SETUP.md +0 -0
  376. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/ISSUE_GUIDANCE.md +0 -0
  377. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/MAC_MINI.md +0 -0
  378. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  379. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/NOTIFIER.md +0 -0
  380. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/OPENCODE_VERIFICATION.md +0 -0
  381. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/ORACLE_LOOP.md +0 -0
  382. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/PHONE_WEBAPP.md +0 -0
  383. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/PIPELINE_V2.md +0 -0
  384. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/PLATFORM_EVOLUTION.md +0 -0
  385. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/SECOND_BACKEND.md +0 -0
  386. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/STORE_SERVICE.md +0 -0
  387. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  388. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/WEB_CONTROL_CENTER.md +0 -0
  389. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/mocks/web/README.md +0 -0
  390. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/mocks/web/_tokens.css +0 -0
  391. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/mocks/web/issue-detail.html +0 -0
  392. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/mocks/web/pipeline-narrow.html +0 -0
  393. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/docs/mocks/web/pipeline-wide.html +0 -0
  394. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/graphify-out/.gitignore +0 -0
  395. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/install-agent.sh +0 -0
  396. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/pyproject.toml +0 -0
  397. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/audit_review_verdict_overrides.py +0 -0
  398. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  399. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/azure-workers/build-worker-image.sh +0 -0
  400. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/azure-workers/coordinator-machine.py +0 -0
  401. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/azure-workers/epic-down.sh +0 -0
  402. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/azure-workers/epic-up.sh +0 -0
  403. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/azure-workers/preflight.sh +0 -0
  404. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/azure-workers/provision-worker.sh +0 -0
  405. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  406. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  407. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/azure-workers/verify-github-token.sh +0 -0
  408. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/codegen.py +0 -0
  409. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/coord-test-runner.sh +0 -0
  410. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/drive-batch.sh +0 -0
  411. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/gen_board_fixture.py +0 -0
  412. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/next_release_tag.py +0 -0
  413. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/run_tests_in_populated_home.sh +0 -0
  414. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/run_tests_without_gh.sh +0 -0
  415. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/smoke_437_interactive.py +0 -0
  416. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/verify_878_review_capture.py +0 -0
  417. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/verify_release_published.py +0 -0
  418. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/scripts/verify_release_wheel.py +0 -0
  419. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/setup.cfg +0 -0
  420. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/SMOKE_SET.md +0 -0
  421. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/__init__.py +0 -0
  422. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  423. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-33/contract.md +0 -0
  424. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-33/manifest.yml +0 -0
  425. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  426. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  427. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  428. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  429. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-37/conftest.py +0 -0
  430. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-37/contract.md +0 -0
  431. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-37/manifest.yml +0 -0
  432. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  433. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  434. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-38/contract.md +0 -0
  435. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-38/manifest.yml +0 -0
  436. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  437. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  438. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  439. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  440. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  441. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  442. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  443. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  444. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  445. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  446. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-51/contract.md +0 -0
  447. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  448. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  449. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-51/manifest.yml +0 -0
  450. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  451. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-51/tsconfig.json +0 -0
  452. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  453. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/conftest.py +0 -0
  454. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/board-pipeline-basic.json +0 -0
  455. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  456. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  457. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  458. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/playwright/all_pass.json +0 -0
  459. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  460. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/playwright/mixed_fail.json +0 -0
  461. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  462. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  463. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/playwright/skip.json +0 -0
  464. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/playwright/truncated.json +0 -0
  465. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  466. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  467. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  468. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  469. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  470. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  471. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  472. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  473. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_acceptance.py +0 -0
  474. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_acceptance_drivers.py +0 -0
  475. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent.py +0 -0
  476. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_api_error.py +0 -0
  477. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_app.py +0 -0
  478. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_branch_base.py +0 -0
  479. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_branch_capture.py +0 -0
  480. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_config_free_1712.py +0 -0
  481. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_deploy_units_endpoint.py +0 -0
  482. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_dirty_worktree.py +0 -0
  483. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_graph_self_heal.py +0 -0
  484. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_health_h3.py +0 -0
  485. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_idle_restart.py +0 -0
  486. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_push_failure.py +0 -0
  487. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_reap.py +0 -0
  488. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_repos_and_pull.py +0 -0
  489. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_restart_services_endpoint.py +0 -0
  490. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_startup_diagnostics.py +0 -0
  491. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_update.py +0 -0
  492. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_update_bluegreen.py +0 -0
  493. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_usage_limit.py +0 -0
  494. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_agent_zero_commit.py +0 -0
  495. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_ambient_home_isolation.py +0 -0
  496. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_approve_reject_plan.py +0 -0
  497. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_approve_usage_gate.py +0 -0
  498. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_assignment_already_recorded_daemon.py +0 -0
  499. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_audit_log.py +0 -0
  500. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_audit_outcome.py +0 -0
  501. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_audit_query.py +0 -0
  502. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_auto_loop.py +0 -0
  503. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_auto_release_publish_2035.py +0 -0
  504. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_base_checkout_restore.py +0 -0
  505. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_board_cap_762.py +0 -0
  506. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_board_fixture.py +0 -0
  507. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_board_read_path.py +0 -0
  508. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_board_service.py +0 -0
  509. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_board_state.py +0 -0
  510. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_board_wire.py +0 -0
  511. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_brain.py +0 -0
  512. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_branch_model.py +0 -0
  513. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_bug_intake.py +0 -0
  514. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_build_worker_image_env_update.py +0 -0
  515. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cargo_cache.py +0 -0
  516. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_ci_acceptance_gate_1950.py +0 -0
  517. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_ci_parity_2091.py +0 -0
  518. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_ci_store.py +0 -0
  519. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_claim.py +0 -0
  520. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_acceptance.py +0 -0
  521. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_assign.py +0 -0
  522. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  523. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_assign_interactive_remote.py +0 -0
  524. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_assign_provider.py +0 -0
  525. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  526. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_audit.py +0 -0
  527. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_chat_continue.py +0 -0
  528. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_diagnose_config_provenance.py +0 -0
  529. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_diagnose_graph.py +0 -0
  530. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_doctor.py +0 -0
  531. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_doctor_config_free_1801.py +0 -0
  532. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  533. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_drive.py +0 -0
  534. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_escalate.py +0 -0
  535. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_fix_headless_review.py +0 -0
  536. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_gate_a.py +0 -0
  537. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_install_drift.py +0 -0
  538. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_install_skills.py +0 -0
  539. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_issue_create_label.py +0 -0
  540. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_issue_reopen.py +0 -0
  541. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_merge.py +0 -0
  542. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_milestone_assign.py +0 -0
  543. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_milestone_capture.py +0 -0
  544. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_milestone_chat_add_child.py +0 -0
  545. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_milestone_dispatch.py +0 -0
  546. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_milestone_gate_b.py +0 -0
  547. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_milestone_gate_c.py +0 -0
  548. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_milestone_order.py +0 -0
  549. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  550. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_milestone_ship.py +0 -0
  551. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_network.py +0 -0
  552. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_new_issue_chat.py +0 -0
  553. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_plans.py +0 -0
  554. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_portal.py +0 -0
  555. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_pull_artifact.py +0 -0
  556. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_queue.py +0 -0
  557. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_reattach_sessions.py +0 -0
  558. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_refine_board.py +0 -0
  559. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_release_preflight.py +0 -0
  560. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_release_propagate.py +0 -0
  561. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_release_window.py +0 -0
  562. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_repo_2220.py +0 -0
  563. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_scorecard.py +0 -0
  564. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_set_review_findings.py +0 -0
  565. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_status_advisory_terminal.py +0 -0
  566. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_status_merge_queue.py +0 -0
  567. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_status_provider.py +0 -0
  568. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_status_review_finalizing.py +0 -0
  569. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_status_test_failed_tag.py +0 -0
  570. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_status_usage_limit.py +0 -0
  571. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_sync_comments_873.py +0 -0
  572. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_test_plan.py +0 -0
  573. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_track.py +0 -0
  574. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_tui_update.py +0 -0
  575. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cli_wait.py +0 -0
  576. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_client_base_install.py +0 -0
  577. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_comments.py +0 -0
  578. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_completion_summary.py +0 -0
  579. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_config.py +0 -0
  580. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_config_acceptance.py +0 -0
  581. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_config_audit.py +0 -0
  582. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_config_pricing.py +0 -0
  583. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_config_usage_gate.py +0 -0
  584. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_conflict_fix.py +0 -0
  585. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_conflict_fix_semantic.py +0 -0
  586. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_coord_test.py +0 -0
  587. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_coord_test_runner_baseline.py +0 -0
  588. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_coord_test_runner_routing.py +0 -0
  589. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_coord_test_runner_toolchain.py +0 -0
  590. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_coord_web_sse_restart_live.py +0 -0
  591. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_coordinator_machine.py +0 -0
  592. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_cross_platform_imports.py +0 -0
  593. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_dashboard.py +0 -0
  594. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_dashboard_fixture.py +0 -0
  595. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_dashboard_terminal.py +0 -0
  596. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_dashboard_terminal_live.py +0 -0
  597. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_dead_end.py +0 -0
  598. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_deploy_coord_db_backup.py +0 -0
  599. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_deploy_coord_web_dist.py +0 -0
  600. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_deploy_coord_web_rollback.py +0 -0
  601. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_deploy_drive_queue_unit.py +0 -0
  602. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_deploy_manifest.py +0 -0
  603. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_deploy_units_lane.py +0 -0
  604. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_deploy_web_unit.py +0 -0
  605. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_deps.py +0 -0
  606. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_diagnose.py +0 -0
  607. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_dispatch.py +0 -0
  608. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_dispatch_target_validation.py +0 -0
  609. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_dist_name.py +0 -0
  610. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_done_housekeeping.py +0 -0
  611. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_drive.py +0 -0
  612. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_drive_state.py +0 -0
  613. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_drive_tmux.py +0 -0
  614. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_epic_up_capability_detection.py +0 -0
  615. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  616. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_epic_up_image_provenance.py +0 -0
  617. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_errors.py +0 -0
  618. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_events.py +0 -0
  619. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_failure_class.py +0 -0
  620. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_filelock.py +0 -0
  621. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  622. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_fix_of_force_override.py +0 -0
  623. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_fleet_config_health.py +0 -0
  624. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_fleet_health_probes.py +0 -0
  625. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_fleet_health_snapshot.py +0 -0
  626. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_freshness.py +0 -0
  627. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_gate_a.py +0 -0
  628. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_gate_b.py +0 -0
  629. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_gate_snapshot_staleness.py +0 -0
  630. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_gates.py +0 -0
  631. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  632. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_generated_types_fixture.py +0 -0
  633. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_github_ops.py +0 -0
  634. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_goal.py +0 -0
  635. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_graph_health.py +0 -0
  636. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_handoff.py +0 -0
  637. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_health_checks.py +0 -0
  638. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_health_cli.py +0 -0
  639. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_health_cli_graph.py +0 -0
  640. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_health_config.py +0 -0
  641. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_health_context.py +0 -0
  642. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_health_deploy_lane_facts.py +0 -0
  643. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_health_incident_regression.py +0 -0
  644. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_health_pypi.py +0 -0
  645. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_health_registry.py +0 -0
  646. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_health_timer_active.py +0 -0
  647. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_health_toolchain.py +0 -0
  648. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_health_unit_drift.py +0 -0
  649. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_health_unit_enablement.py +0 -0
  650. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_hooks.py +0 -0
  651. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_human_attended_437.py +0 -0
  652. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_init.py +0 -0
  653. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_integration.py +0 -0
  654. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_interactive_briefing_echo.py +0 -0
  655. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_interactive_prefill_state.py +0 -0
  656. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_interactive_session_relaunch.py +0 -0
  657. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_interactive_test_verdict_backstop.py +0 -0
  658. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_interactive_token_attribution.py +0 -0
  659. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_interactive_worktree.py +0 -0
  660. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_issue_store_seam.py +0 -0
  661. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_liveness_auditor.py +0 -0
  662. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_liveness_notify.py +0 -0
  663. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_machine_pause.py +0 -0
  664. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_merge_verify.py +0 -0
  665. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_milestone_chat.py +0 -0
  666. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_milestone_dispatch.py +0 -0
  667. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_milestone_gate.py +0 -0
  668. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_milestone_order.py +0 -0
  669. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_milestone_seam.py +0 -0
  670. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_mock_author.py +0 -0
  671. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_model_tiering.py +0 -0
  672. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_models.py +0 -0
  673. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_models_config_labels.py +0 -0
  674. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_needs_attention.py +0 -0
  675. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_network.py +0 -0
  676. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_new_issue_chat.py +0 -0
  677. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_next_release_tag.py +0 -0
  678. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_no_direct_gh_calls.py +0 -0
  679. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_node_shim.py +0 -0
  680. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_notifier_baseline.py +0 -0
  681. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_notifier_cli.py +0 -0
  682. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_notifier_collect.py +0 -0
  683. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_notifier_config.py +0 -0
  684. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_notifier_drive_seam.py +0 -0
  685. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_notifier_isolation.py +0 -0
  686. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_notifier_predicate.py +0 -0
  687. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_notifier_quiet_hours.py +0 -0
  688. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_notifier_service.py +0 -0
  689. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_notify.py +0 -0
  690. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_notify_drain.py +0 -0
  691. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_openapi.py +0 -0
  692. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_operational_defaults.py +0 -0
  693. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_overlap_fence.py +0 -0
  694. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_packaged_deploy_units.py +0 -0
  695. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_parentage.py +0 -0
  696. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_paste_landed.py +0 -0
  697. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_pipeline.py +0 -0
  698. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_plan_followup_approve_plan_command.py +0 -0
  699. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_plan_followup_pr_command.py +0 -0
  700. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_plan_followup_review_command.py +0 -0
  701. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_plan_only.py +0 -0
  702. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_plan_parser.py +0 -0
  703. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_platform_paths.py +0 -0
  704. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_portal_bridge.py +0 -0
  705. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_portal_config.py +0 -0
  706. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_pr_body_lint.py +0 -0
  707. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_prereqs.py +0 -0
  708. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_production_db_guard.py +0 -0
  709. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_progress.py +0 -0
  710. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_provider_seam.py +0 -0
  711. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_providers.py +0 -0
  712. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_providers_config_labels.py +0 -0
  713. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_providers_pty.py +0 -0
  714. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_quiet_hours.py +0 -0
  715. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_quiet_hours_store_2146.py +0 -0
  716. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_reap_merged_sessions.py +0 -0
  717. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_reap_stale_interactive_tick.py +0 -0
  718. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_reconcile_branch.py +0 -0
  719. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_reconcile_completions.py +0 -0
  720. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_reconcile_merges.py +0 -0
  721. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_reconcile_usage_limit_done.py +0 -0
  722. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_refine_chat.py +0 -0
  723. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_release_cordon_2101.py +0 -0
  724. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_release_propagate.py +0 -0
  725. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_release_unified_1242.py +0 -0
  726. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_release_verify.py +0 -0
  727. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_release_window.py +0 -0
  728. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_remote_auto_prune.py +0 -0
  729. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_remote_interactive_reaper.py +0 -0
  730. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_repo_edit_2220.py +0 -0
  731. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_repo_onboard_2220.py +0 -0
  732. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_report_result_push.py +0 -0
  733. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_reports.py +0 -0
  734. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_retry.py +0 -0
  735. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_retry_advisory_1606.py +0 -0
  736. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_retry_type_1636.py +0 -0
  737. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_review.py +0 -0
  738. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_review_end_review_without_verdict.py +0 -0
  739. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_review_parse_failure_diagnostic.py +0 -0
  740. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_review_reaffirm.py +0 -0
  741. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_review_state.py +0 -0
  742. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_review_verdict_backstop.py +0 -0
  743. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_review_verdict_override_audit.py +0 -0
  744. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_review_verdict_relay.py +0 -0
  745. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_review_zero_commits.py +0 -0
  746. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_scoped_review_wiring.py +0 -0
  747. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_scorecard.py +0 -0
  748. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_serve.py +0 -0
  749. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_serve_app_board_trim.py +0 -0
  750. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_session.py +0 -0
  751. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_slice_issue_attribution.py +0 -0
  752. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_smoke.py +0 -0
  753. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_smoke_live_checkout_restore.py +0 -0
  754. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_smoke_workflow.py +0 -0
  755. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_spend_ceiling.py +0 -0
  756. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_spend_ceiling_coordinator.py +0 -0
  757. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_split.py +0 -0
  758. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_split_work.py +0 -0
  759. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_stage_projection.py +0 -0
  760. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_stalled_pipeline.py +0 -0
  761. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_state.py +0 -0
  762. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_state_review_findings_daemon.py +0 -0
  763. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_status_fleet_footer.py +0 -0
  764. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_stop_1567.py +0 -0
  765. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_stuck.py +0 -0
  766. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_terminal_command.py +0 -0
  767. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_test_author.py +0 -0
  768. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_test_chat.py +0 -0
  769. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_test_orchestrator.py +0 -0
  770. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_test_report.py +0 -0
  771. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_test_verdict_parsing.py +0 -0
  772. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_test_verdict_transcript_floor.py +0 -0
  773. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_thin_client_config_load_1080.py +0 -0
  774. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_thin_client_daemon_routing_906.py +0 -0
  775. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_tmux_host.py +0 -0
  776. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_tmux_session.py +0 -0
  777. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_transcript_floor.py +0 -0
  778. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_usage.py +0 -0
  779. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_usage_limits.py +0 -0
  780. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_usage_rollup.py +0 -0
  781. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_venv_live_install_2121.py +0 -0
  782. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_version_single_source.py +0 -0
  783. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_watch.py +0 -0
  784. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_worker_events.py +0 -0
  785. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_worker_image_pin_sync.py +0 -0
  786. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_worker_safety.py +0 -0
  787. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_worker_test_scoping.py +0 -0
  788. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_worktree.py +0 -0
  789. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  790. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/Cargo.lock +0 -0
  791. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/Cargo.toml +0 -0
  792. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/cargo-config-local-quadraui.toml.example +0 -0
  793. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/audit.rs +0 -0
  794. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/chat.rs +0 -0
  795. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/data.rs +0 -0
  796. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/dialogs.rs +0 -0
  797. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/drive.rs +0 -0
  798. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/drive_queue.rs +0 -0
  799. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/escalation.rs +0 -0
  800. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/events.rs +0 -0
  801. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/fixtures.rs +0 -0
  802. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/fleet_health.rs +0 -0
  803. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/fleet_sessions.rs +0 -0
  804. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/fleet_terminals.rs +0 -0
  805. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/format.rs +0 -0
  806. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/milestone_dag.rs +0 -0
  807. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/mod.rs +0 -0
  808. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/msv.rs +0 -0
  809. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/pipeline.rs +0 -0
  810. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/plans.rs +0 -0
  811. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/render.rs +0 -0
  812. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/reports.rs +0 -0
  813. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/sessions.rs +0 -0
  814. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/settings_ui.rs +0 -0
  815. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/sidebar.rs +0 -0
  816. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/terminal.rs +0 -0
  817. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/tests.rs +0 -0
  818. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/types.rs +0 -0
  819. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/app/workspace.rs +0 -0
  820. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/bin/gtk.rs +0 -0
  821. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/commands.rs +0 -0
  822. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/lib.rs +0 -0
  823. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/main.rs +0 -0
  824. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/src/settings.rs +0 -0
  825. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/tests/acceptance.rs +0 -0
  826. {code_coordinator-0.5.77 → code_coordinator-0.5.79}/tui/tests/cli.rs +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.77
3
+ Version: 0.5.79
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.77
3
+ Version: 0.5.79
4
4
  Summary: Coordinate Claude Code workers across multiple machines and repos.
5
5
  Author-email: John Donaghy <johnfdonaghy@gmail.com>
6
6
  License-Expression: LicenseRef-FSL-1.1-MIT
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.77",
2
+ "tag": "0.5.79",
3
3
  "distance": 0,
4
- "node": "gb940996c651692e5e0c90012a9046b2dfe09ec50",
4
+ "node": "gbe7902b68e134d6b91d1c44718937944d75065b3",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-14"
@@ -45,6 +45,7 @@ from coord.drive_queue import (
45
45
  HOLD_RELEASED,
46
46
  HOLD_SCOPE_ENTRY,
47
47
  HOLD_SCOPE_FLEET,
48
+ MAX_BLOCKED_RESUMES,
48
49
  QUEUE_ALERT_ISSUE,
49
50
  QUEUE_ALERT_REPO,
50
51
  QUEUE_ALERT_STAGE,
@@ -65,6 +66,7 @@ from coord.drive_queue import (
65
66
  entry_key,
66
67
  find_cycle,
67
68
  fired_holds,
69
+ is_permanent_block_reason,
68
70
  parse_after_spec,
69
71
  parse_key,
70
72
  pending_probe_targets,
@@ -317,9 +319,23 @@ _DIAGNOSABLE_STATES = (STATE_BLOCKED, STATE_FAILED)
317
319
  _ROW_CAUSE_MAX_CHARS = 88
318
320
 
319
321
  _BLOCKED_REMEDY = (
320
- "remedy: {state} is terminal the queue will not re-check this row "
321
- "on its own; `coord drive-queue remove` + `add` only helps once the "
322
- "cause above is actually fixed, not merely because a pre-req merged"
322
+ "remedy: {state}'s `after=` graph above is never re-checked on its own "
323
+ " `coord drive-queue remove` + `add` only helps once the cause is "
324
+ "actually fixed, not merely because a pre-req merged"
325
+ )
326
+
327
+ # #2230: `blocked`'s MERGE GATE (as opposed to its `after=` graph, which
328
+ # `_BLOCKED_REMEDY` above still correctly calls never-re-checked) is no
329
+ # longer unconditionally terminal — see `coord.drive_queue.
330
+ # is_permanent_block_reason`/`_reconcile_blocked`. Shown only for `blocked`
331
+ # (never `failed`, which #2230 does not touch at all) so an operator reading
332
+ # `list` right after this ships doesn't have to go read the issue to learn
333
+ # their remove+add might be about to race an automatic resume.
334
+ _BLOCKED_GATE_NOTE = (
335
+ "note: a re-evaluable blocked cause (i.e. not a #1844/#2019 permanent "
336
+ "refusal) IS re-checked against the merge gate automatically (#2230) — "
337
+ "see `resumes=` above if this row has already self-resumed and "
338
+ "re-blocked"
323
339
  )
324
340
 
325
341
 
@@ -423,6 +439,11 @@ def drive_queue_list(repo: str | None, output_json: bool, config_path: Path) ->
423
439
  bits.append(f"attempts={entry.attempts}")
424
440
  if entry.deferrals:
425
441
  bits.append(f"deferrals={entry.deferrals}")
442
+ if entry.resumes:
443
+ # #2230: how many times the merge-gate sweep has auto-resumed
444
+ # THIS row from `blocked` — the churn signal the issue asks to be
445
+ # visible, not just logged in a tick's journal.
446
+ bits.append(f"resumes={entry.resumes}/{MAX_BLOCKED_RESUMES}")
426
447
  if entry.hold_after:
427
448
  bits.append(f"hold={entry.hold_state or 'armed'}")
428
449
  if entry.hold_scope == HOLD_SCOPE_FLEET:
@@ -435,6 +456,13 @@ def drive_queue_list(repo: str | None, output_json: bool, config_path: Path) ->
435
456
  # operator is already reading the row, not just in an unrelated
436
457
  # operator's hand-written `--hold-after` note.
437
458
  click.echo(f" {_BLOCKED_REMEDY.format(state=entry.state)}")
459
+ # #2230: independent of the `after=` diagnosis above (most `blocked`
460
+ # rows have no `after=` at all — they blocked on attempts, not a
461
+ # pre-req), so gated on the row's OWN state and cause, not `diagnosed`.
462
+ if entry.state == STATE_BLOCKED and not is_permanent_block_reason(
463
+ entry.last_reason
464
+ ):
465
+ click.echo(f" {_BLOCKED_GATE_NOTE}")
438
466
  for line in _hold_lines(entry):
439
467
  click.echo(line)
440
468
 
@@ -1105,6 +1133,91 @@ def _fetch_live_ci_gate(
1105
1133
  return overrides
1106
1134
 
1107
1135
 
1136
+ def _fetch_live_blocked_gate(
1137
+ entries: list, config_path: Path | None
1138
+ ) -> dict[str, bool]:
1139
+ """``{entry_key: still_blocked}`` for every RE-EVALUABLE ``blocked``
1140
+ entry (#2230) — the counterpart of :func:`_fetch_live_ci_gate` above:
1141
+ same mechanism, same bound, a different queue state.
1142
+
1143
+ THE GAP THIS CLOSES. `blocked` used to be terminal: once
1144
+ `_reconcile_running` exhausted an entry's attempts, nothing ever asked
1145
+ again whether the gate it kept dying against had since cleared — even
1146
+ minutes later, even when `coord merge --only` would land it on the first
1147
+ try with no objection. quadraui#309 sat `blocked attempts=2` for ~11h on
1148
+ exactly that: `coord gates quadraui 309` read `merge: READY` for most of
1149
+ the window, and nothing in the queue ever looked again.
1150
+
1151
+ NOT EVERY BLOCKED ENTRY QUALIFIES. `coord.drive_queue.
1152
+ is_permanent_block_reason` excludes #1844 (a pre-dispatch guard's
1153
+ refusal — deterministic, cannot change on retry) and #2019 (a dead-end
1154
+ row — also cannot change): paying for a live `gh`-backed call on either
1155
+ would be spending real cost to re-confirm an answer this function
1156
+ already knows without asking. Everything else that reached `blocked` —
1157
+ chiefly `exhausted`, a drive that died `max_attempts` times for whatever
1158
+ reason — is a candidate.
1159
+
1160
+ THE COST. One `coord.merge_queue.entry_gate_status` call — the same live
1161
+ backend `coord merge --plan`/`--only` build — per QUALIFYING blocked
1162
+ entry, mirroring `_fetch_live_ci_gate`'s exact justification: bounded to
1163
+ the (typically 0-2) entries actually sitting in `blocked` right now, not
1164
+ the whole queue and not forever — an entry that resumes leaves `blocked`
1165
+ and stops costing anything; one confirmed still-shut is untouched and
1166
+ re-pays this same bounded cost next tick, identical to how a
1167
+ still-CI-pending `parked` entry already does.
1168
+
1169
+ Same fail-open-per-entry, fail-closed-overall contract as
1170
+ `_fetch_live_ci_gate`: a key ABSENT from the result (no queue row, no PR
1171
+ yet, a `ci_store` that failed to build, any exception) leaves that entry
1172
+ to `plan_tick`'s cheap board-only fallback
1173
+ (`IssueFacts.merge_gate_status`, populated for free on a thin client's
1174
+ live `/board`) — which on the daemon-host tick (the only host this
1175
+ actually runs on, `docs/DRIVE_QUEUE.md` §2) has no `merge_plan` section
1176
+ to read at all, so an absent key there means simply "no evidence, stays
1177
+ blocked" (`_reconcile_blocked` never guesses).
1178
+ """
1179
+ targets = [
1180
+ e for e in entries
1181
+ if e.state == STATE_BLOCKED
1182
+ and not is_permanent_block_reason(getattr(e, "last_reason", "") or "")
1183
+ ]
1184
+ if not targets:
1185
+ return {}
1186
+
1187
+ from coord.board_service import resolve as resolve_board_service # noqa: PLC0415
1188
+
1189
+ if resolve_board_service() is not None:
1190
+ return {}
1191
+
1192
+ try:
1193
+ from coord import github_ops as _gh_ops # noqa: PLC0415
1194
+ from coord import merge_queue as _mq # noqa: PLC0415
1195
+ from coord.ci_store import build_ci_store # noqa: PLC0415
1196
+ from coord.commands._common import _load_config # noqa: PLC0415
1197
+ from coord.state import load_board as _load_board # noqa: PLC0415
1198
+
1199
+ cfg = _load_config(config_path)
1200
+ board = _load_board()
1201
+ ci_store = build_ci_store(cfg.ci_store.type)
1202
+ queue_by_key = {
1203
+ entry_key(q.repo_name, q.issue_number): q for q in _mq.load_queue()
1204
+ }
1205
+ except Exception: # noqa: BLE001 — see the fail-soft note above
1206
+ return {}
1207
+
1208
+ overrides: dict[str, bool] = {}
1209
+ for e in targets:
1210
+ q = queue_by_key.get(e.key)
1211
+ if q is None or not q.pr_number:
1212
+ continue
1213
+ try:
1214
+ status, _reason = _mq.entry_gate_status(q, board, cfg, ci_store, _gh_ops)
1215
+ except Exception: # noqa: BLE001 — leave this one entry to the fallback
1216
+ continue
1217
+ overrides[e.key] = status != _mq.PLAN_READY
1218
+ return overrides
1219
+
1220
+
1108
1221
  def _launch_argv(entry: QueueEntry, config_path: Path | None) -> list[str]:
1109
1222
  """The ``coord drive --tmux`` argv for *entry*.
1110
1223
 
@@ -1425,6 +1538,12 @@ def drive_queue_tick(
1425
1538
  # this tick's board read never computes a live `merge_plan`).
1426
1539
  live_ci_gate = _fetch_live_ci_gate(entries, config_path)
1427
1540
 
1541
+ # #2230: the same live re-derivation, for RE-EVALUABLE `blocked`
1542
+ # entries — see `_fetch_live_blocked_gate`'s docstring for the gap
1543
+ # this closes (quadraui#309 sat `blocked` ~11h on a merge that was
1544
+ # landable for most of that window, and nothing ever looked again).
1545
+ live_blocked_gate = _fetch_live_blocked_gate(entries, config_path)
1546
+
1428
1547
  # #2101: release cordons. THIS is the hole the issue names — the
1429
1548
  # queue's launcher had zero pause awareness (`coord/drive.py` checks
1430
1549
  # pause only when routing a *worker*), so a cordoned host kept getting
@@ -1457,6 +1576,7 @@ def drive_queue_tick(
1457
1576
  gate_a_pending=gate_a_pending,
1458
1577
  cordons=cordons,
1459
1578
  live_ci_gate=live_ci_gate,
1579
+ live_blocked_gate=live_blocked_gate,
1460
1580
  )
1461
1581
 
1462
1582
  if reconcile_only:
@@ -1493,6 +1613,33 @@ def drive_queue_tick(
1493
1613
  command=_requeue_command(entry, item.key),
1494
1614
  )
1495
1615
 
1616
+ # #2230: an entry #2230's sweep would have resumed, but has already
1617
+ # oscillated blocked/waiting :data:`MAX_BLOCKED_RESUMES` times — the
1618
+ # "say so out loud" half of the issue. This is a SEPARATE record from
1619
+ # the `plan.blocked` loop above (that one only fires the tick an
1620
+ # entry FIRST reaches `blocked`; this one fires on every tick the
1621
+ # ceiling stays hit, same posture the queue-level alert already takes
1622
+ # for an ongoing stall) so the escalation names the oscillation
1623
+ # itself, not just "still blocked".
1624
+ for item in plan.reconciles:
1625
+ if item.outcome != "oscillating":
1626
+ continue
1627
+ parsed = parse_key(item.key)
1628
+ if parsed is None:
1629
+ continue
1630
+ entry = by_key.get(item.key)
1631
+ _escalate(
1632
+ parsed[0],
1633
+ parsed[1],
1634
+ reason=item.reason,
1635
+ gates=(
1636
+ f"queue_state=blocked | resumes={entry.resumes if entry else '?'}"
1637
+ f"/{MAX_BLOCKED_RESUMES} | position="
1638
+ f"{entry.position if entry else '?'}"
1639
+ ),
1640
+ command=_requeue_command(entry, item.key),
1641
+ )
1642
+
1496
1643
  if plan.alert is not None:
1497
1644
  _escalate(
1498
1645
  QUEUE_ALERT_REPO,
@@ -1547,7 +1694,24 @@ def drive_queue_tick(
1547
1694
  # #1606: `--tmux` only exits 0 once the session is live and writing its
1548
1695
  # run log, so a non-zero exit means nothing is running — record a
1549
1696
  # consumed attempt, never a running entry.
1550
- attempts = target.attempts + 1
1697
+ #
1698
+ # #2230: `target` is `plan_tick`'s PRE-tick snapshot — its internal
1699
+ # `by_key` is never refreshed after step 1b's writes (see
1700
+ # `coord.drive_queue.plan_tick`'s own note on why `by_key` stays
1701
+ # frozen). An entry #2230's sweep just resumed from `blocked` had its
1702
+ # `attempts` reset to 0 by `_apply_writes` above; reading
1703
+ # `target.attempts` here would silently undo that reset the moment
1704
+ # the launch subprocess itself fails (before ever reaching tmux) —
1705
+ # rare, but exactly the "resumed only to give up again immediately"
1706
+ # failure the issue calls out by name. `plan.writes()` carries the
1707
+ # freshest resolved value for this key, the same one `_apply_writes`
1708
+ # already persisted; fall back to `target.attempts` only when this
1709
+ # tick wrote nothing for it (the common case — no reconcile touched
1710
+ # this entry's `attempts`).
1711
+ base_attempts = dict(plan.writes()).get(target.key, {}).get(
1712
+ "attempts", target.attempts
1713
+ )
1714
+ attempts = base_attempts + 1
1551
1715
  reason = (
1552
1716
  f"launch failed (exit {returncode}): {message}"
1553
1717
  if message
@@ -76,6 +76,7 @@ def _apply_revalidation(items, board, config, gh_ops, *, dry_run: bool):
76
76
 
77
77
  recorded_any = False
78
78
  total_runs = 0
79
+ conflicted: list = []
79
80
  groups = _rv.group_candidates(candidates)
80
81
  for (repo_name, target_branch), group in groups:
81
82
  click.echo(
@@ -85,6 +86,7 @@ def _apply_revalidation(items, board, config, gh_ops, *, dry_run: bool):
85
86
  batch = _rv.revalidate_group(group, config, echo=click.echo)
86
87
  total_runs += batch.suite_runs
87
88
  recorded_any = recorded_any or bool(batch.recorded)
89
+ conflicted.extend(batch.conflicted)
88
90
  if not batch.composite.ok:
89
91
  # The composite's own failure report — stderr, as before.
90
92
  for line in _rv.format_failure(batch.composite):
@@ -100,6 +102,13 @@ def _apply_revalidation(items, board, config, gh_ops, *, dry_run: bool):
100
102
  f"{len(candidates)} entry(ies)"
101
103
  )
102
104
 
105
+ # #2231: the composed run just PROVED these branches don't merge. That is
106
+ # not a staleness problem and re-testing can never resolve it — hand it to
107
+ # the mechanism built for it instead of formatting a diagnosis nobody acts
108
+ # on.
109
+ if conflicted:
110
+ _dispatch_revalidation_conflicts(conflicted, config, dry_run=dry_run)
111
+
103
112
  if not recorded_any:
104
113
  return board
105
114
 
@@ -249,6 +258,65 @@ def _reload_board_after_wait(board, *, dry_run: bool):
249
258
  return refreshed if refreshed is not None else _Board(active=[], completed=[])
250
259
 
251
260
 
261
+ def _dispatch_revalidation_conflicts(conflicted, config, *, dry_run: bool) -> None:
262
+ """#2231: turn ``--revalidate``'s conflict verdict into a #241 dispatch.
263
+
264
+ *conflicted* is :attr:`coord.revalidate.BatchRevalidationResult.conflicted`
265
+ — the candidates whose revalidation run died composing the branch onto its
266
+ current base. ``--revalidate`` already did the expensive, authoritative
267
+ part: it fetched, built a worktree at the live base, ran ``git merge`` and
268
+ watched it fail. That is strictly better evidence than the failed ``gh pr
269
+ merge`` that normally arms this path, and it was being spent on an
270
+ operator-facing paragraph and then discarded (quadraui #306/#309 sat 11h
271
+ each behind a "test verdict stale" gate whose real blocker was a content
272
+ conflict; a human eventually typed ``coord fix --force`` by hand, which is
273
+ #241's own job description).
274
+
275
+ Two things happen per entry, in this order:
276
+
277
+ 1. The entry is moved to ``CONFLICT`` with an ``entry.error`` that names
278
+ the conflict (:func:`coord.revalidate.compose_conflict_error`). This is
279
+ the reporting half: the gate reason stops reading (only) "stale
280
+ verdict", so ``coord drive``'s #1738 arm no longer sees a shape it
281
+ would answer with a re-test, and ``merge_queue.process()`` — which acts
282
+ only on ``PENDING`` — leaves the entry alone this pass instead of
283
+ re-deriving the same smoke block. The caller persists the mutation with
284
+ the rest of the queue; nothing is written here.
285
+ 2. The entry is handed to :func:`_dispatch_conflict_fixes` as a synthetic
286
+ ``conflict`` event, which is the SAME call the whole-queue and
287
+ ``--only`` paths make after a live merge attempt. Every guard it owns
288
+ still applies unchanged: :func:`coord.merge_queue.classify_conflict`
289
+ must read the error as ``rebaseable``, the #241/#784 retry cap still
290
+ flips a second failure to ``HUMAN_REQUIRED``, and
291
+ ``dispatch_conflict_fix``'s own in-flight check still refuses a
292
+ duplicate. Deliberately routed through that function rather than
293
+ calling ``dispatch_conflict_fix`` directly — a second dispatch site
294
+ with its own copy of those guards is how they drift apart.
295
+
296
+ Under ``--dry-run`` nothing is mutated and nothing is dispatched (the
297
+ revalidation itself never ran either — see :func:`_apply_revalidation`).
298
+ """
299
+ if dry_run or not conflicted:
300
+ return
301
+
302
+ from coord.merge_queue import CONFLICT, MergeEvent # noqa: PLC0415
303
+ from coord.revalidate import compose_conflict_error # noqa: PLC0415
304
+
305
+ events = []
306
+ for candidate, _result in conflicted:
307
+ entry = candidate.entry
308
+ entry.error = compose_conflict_error(entry)
309
+ entry.state = CONFLICT
310
+ click.echo(
311
+ f" --revalidate: {entry.repo_name} #{entry.issue_number}: "
312
+ "the blocker is a CONFLICT, not a stale verdict — the branch does "
313
+ "not compose onto its base. Routing to the conflict-fix path "
314
+ "(#241) instead of re-testing (#2231)."
315
+ )
316
+ events.append(MergeEvent(entry, "conflict", entry.error))
317
+ _dispatch_conflict_fixes(events, config, dry_run=False)
318
+
319
+
252
320
  def _dispatch_conflict_fixes(events, config, *, dry_run: bool) -> None:
253
321
  """#241: classify any conflict events and dispatch a conflict-fix worker
254
322
  for the eligible ones. Mutates each conflict event's ``ev.entry.state``
@@ -408,6 +408,17 @@ def _ensure_schema(conn: sqlite3.Connection) -> None:
408
408
  -- this column existed reads as the narrower scope, never a silent
409
409
  -- fleet-wide one — see coord.drive_queue.QueueEntry.hold_scope.
410
410
  hold_scope TEXT NOT NULL DEFAULT 'entry',
411
+ -- #2230: count of times the tick's blocked-reconciliation sweep
412
+ -- has auto-resumed THIS row from 'blocked' back to 'waiting' —
413
+ -- see coord.drive_queue.MAX_BLOCKED_RESUMES / _reconcile_blocked.
414
+ -- `blocked` used to be genuinely terminal (nothing ever asked
415
+ -- again whether the gate that blocked an entry had since
416
+ -- cleared); this bounds how many times the sweep will requeue
417
+ -- the SAME entry before it stops and leaves it blocked for an
418
+ -- operator, so a gate that itself flaps cannot oscillate the
419
+ -- entry forever. 0 for every row predating this column, same as
420
+ -- a freshly-enqueued entry that has never been auto-resumed.
421
+ resumes INTEGER NOT NULL DEFAULT 0,
411
422
  UNIQUE(repo_name, issue_number)
412
423
  );
413
424
 
@@ -731,6 +742,11 @@ def _migrate_add_columns(conn: sqlite3.Connection) -> None:
731
742
  # row holds only its own dependents rather than the whole queue, which
732
743
  # is the #2186 fix itself, not just a schema detail.
733
744
  "ALTER TABLE drive_queue ADD COLUMN hold_scope TEXT NOT NULL DEFAULT 'entry'",
745
+ # #2230: see the CREATE TABLE comment above — count of times the
746
+ # blocked-reconciliation sweep has auto-resumed a row from 'blocked'.
747
+ # 0 for every row predating this migration, same as the column's own
748
+ # default for a freshly-enqueued entry.
749
+ "ALTER TABLE drive_queue ADD COLUMN resumes INTEGER NOT NULL DEFAULT 0",
734
750
  ]
735
751
  for sql in migrations:
736
752
  try: