code-coordinator 0.5.161__tar.gz → 0.5.164__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (879) hide show
  1. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/_board_mapping.py +6 -0
  5. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/api/generated.ts +1 -0
  6. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/db.py +8 -0
  7. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/drive.py +96 -17
  8. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/models.py +32 -0
  9. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/state.py +77 -8
  10. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_drive.py +95 -1
  11. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_state.py +157 -0
  12. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/data.rs +6 -1
  13. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/dialogs.rs +138 -0
  14. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/doc_tabs.rs +141 -0
  15. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/events.rs +121 -2
  16. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/fixtures.rs +6 -0
  17. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/milestone_dag.rs +1 -0
  18. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/mod.rs +94 -8
  19. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/plans.rs +12 -1
  20. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/render.rs +32 -0
  21. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/tests.rs +197 -0
  22. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/types.rs +37 -0
  23. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/tests/fixtures/board_sample.json +3 -0
  24. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.claude/commands/board.md +0 -0
  25. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.claude/commands/complete-session.md +0 -0
  26. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.claude/commands/coordinator.md +0 -0
  27. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.githooks/_lib.sh +0 -0
  28. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.githooks/post-checkout +0 -0
  29. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.githooks/post-commit +0 -0
  30. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.githooks/post-merge +0 -0
  31. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  32. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/coord-ci-acceptance.yml +0 -0
  33. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/workflows/acceptance-web.yml +0 -0
  34. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/workflows/auto-release.yml +0 -0
  35. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/workflows/cargo-test.yml +0 -0
  36. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/workflows/publish.yml +0 -0
  37. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/workflows/release-tui.yml +0 -0
  38. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.github/workflows/test.yml +0 -0
  39. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/.gitignore +0 -0
  40. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/CLAUDE.md +0 -0
  41. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/GOAL.md +0 -0
  42. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/LICENSE +0 -0
  43. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/MANIFEST.in +0 -0
  44. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/README.md +0 -0
  45. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/SOURCES.txt +0 -0
  46. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/dependency_links.txt +0 -0
  47. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/entry_points.txt +0 -0
  48. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/requires.txt +0 -0
  49. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/scm_file_list.json +0 -0
  50. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/code_coordinator.egg-info/top_level.txt +0 -0
  51. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/__init__.py +0 -0
  52. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/acceptance.py +0 -0
  53. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/acceptance_drivers.py +0 -0
  54. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/agent.py +0 -0
  55. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/agent_app.py +0 -0
  56. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/agent_update.py +0 -0
  57. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/agents/opencode/.gitignore +0 -0
  58. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/agents/opencode/agents/work.md +0 -0
  59. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/agents/opencode/routing.jsonc +0 -0
  60. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/audit.py +0 -0
  61. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/auto_loop.py +0 -0
  62. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/block_log.py +0 -0
  63. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/board_bool_guard.py +0 -0
  64. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/board_service.py +0 -0
  65. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/board_wire.py +0 -0
  66. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/brain.py +0 -0
  67. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/branch_model.py +0 -0
  68. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/bug_intake.py +0 -0
  69. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/cargo_cache.py +0 -0
  70. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/ci_github.py +0 -0
  71. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/ci_store.py +0 -0
  72. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/claim.py +0 -0
  73. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/cli.py +0 -0
  74. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/client.py +0 -0
  75. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/__init__.py +0 -0
  76. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/_common.py +0 -0
  77. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/acceptance.py +0 -0
  78. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/agent_ops.py +0 -0
  79. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/audit.py +0 -0
  80. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/chat.py +0 -0
  81. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/dispatch.py +0 -0
  82. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/dispatch_workers.py +0 -0
  83. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/drive.py +0 -0
  84. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/drive_queue.py +0 -0
  85. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/gate_a.py +0 -0
  86. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/gates.py +0 -0
  87. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/issues.py +0 -0
  88. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/lifecycle.py +0 -0
  89. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/merge.py +0 -0
  90. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/milestone.py +0 -0
  91. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/plan_followup.py +0 -0
  92. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/plans.py +0 -0
  93. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/portal.py +0 -0
  94. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/release.py +0 -0
  95. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/repo.py +0 -0
  96. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/report.py +0 -0
  97. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/review.py +0 -0
  98. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/scorecard.py +0 -0
  99. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/sessions.py +0 -0
  100. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/setup.py +0 -0
  101. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/status.py +0 -0
  102. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/terminal.py +0 -0
  103. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/test_gate.py +0 -0
  104. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/commands/tui.py +0 -0
  105. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/comments.py +0 -0
  106. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/config.py +0 -0
  107. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/config_reload.py +0 -0
  108. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/conflict_fix.py +0 -0
  109. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dao.py +0 -0
  110. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/__init__.py +0 -0
  111. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/fixture.py +0 -0
  112. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/index.html +0 -0
  113. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/server.py +0 -0
  114. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/terminal.py +0 -0
  115. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/.gitignore +0 -0
  116. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/components.json +0 -0
  117. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
  118. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  119. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
  120. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
  121. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  122. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  123. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  124. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  125. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  126. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/index.html +0 -0
  127. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  128. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/sw.js +0 -0
  129. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  130. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  131. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  132. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  133. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  134. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  135. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  136. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  137. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  138. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  139. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/eslint.config.js +0 -0
  140. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/index.html +0 -0
  141. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  142. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/package-lock.json +0 -0
  143. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/package.json +0 -0
  144. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  145. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/playwright.config.ts +0 -0
  146. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/postcss.config.js +0 -0
  147. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  148. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  149. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  150. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/App.tsx +0 -0
  151. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/api/client.ts +0 -0
  152. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  153. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  154. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  155. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  156. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  157. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  158. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  159. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  160. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  161. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  162. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  163. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  164. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  165. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  166. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  167. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  168. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  169. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  170. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  171. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  172. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  173. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  174. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  175. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  176. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  177. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  178. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  179. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  180. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  181. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  182. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  183. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  184. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  185. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  186. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/index.css +0 -0
  187. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  188. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  189. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/main.tsx +0 -0
  190. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  191. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  192. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  193. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  194. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  195. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  196. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  197. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  198. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  199. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  200. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  201. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  202. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  203. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  204. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  205. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  206. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  207. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  208. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  209. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  210. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  211. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  212. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  213. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/tailwind.config.js +0 -0
  214. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/tsconfig.json +0 -0
  215. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  216. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dashboard/webapp/vite.config.ts +0 -0
  217. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dead_end.py +0 -0
  218. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/README.md +0 -0
  219. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-agent.service +0 -0
  220. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-db-backup.service +0 -0
  221. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-db-backup.sh +0 -0
  222. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-db-backup.timer +0 -0
  223. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-drive-queue.service +0 -0
  224. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-drive-queue.timer +0 -0
  225. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-notify.service +0 -0
  226. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-notify.timer +0 -0
  227. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-release-propagate.service +0 -0
  228. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-release-propagate.timer +0 -0
  229. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-release-window.service +0 -0
  230. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-release-window.timer +0 -0
  231. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-serve.service +0 -0
  232. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-web-dist-build.service +0 -0
  233. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-web-dist-build.timer +0 -0
  234. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy/coord-web.service +0 -0
  235. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy_manifest.py +0 -0
  236. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deploy_units.py +0 -0
  237. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/deps.py +0 -0
  238. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/diagnose.py +0 -0
  239. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dispatch.py +0 -0
  240. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/dist_name.py +0 -0
  241. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/drive_queue.py +0 -0
  242. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/drive_state.py +0 -0
  243. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/events.py +0 -0
  244. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/failure_class.py +0 -0
  245. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/filelock.py +0 -0
  246. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/fleet_config_health.py +0 -0
  247. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/freshness.py +0 -0
  248. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/gate_a.py +0 -0
  249. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/gate_b.py +0 -0
  250. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/gate_snapshot.py +0 -0
  251. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/gates.py +0 -0
  252. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/github_ops.py +0 -0
  253. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/goal.py +0 -0
  254. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/graph_health.py +0 -0
  255. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/__init__.py +0 -0
  256. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/aggregate.py +0 -0
  257. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/__init__.py +0 -0
  258. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/agent_install.py +0 -0
  259. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/cargo_targets.py +0 -0
  260. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/claude_binary.py +0 -0
  261. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/deploy_lane_facts.py +0 -0
  262. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/disk.py +0 -0
  263. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/fleet_board.py +0 -0
  264. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  265. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/fleet_phantom.py +0 -0
  266. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/fleet_unit_drift.py +0 -0
  267. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/graph.py +0 -0
  268. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/graphify_cli.py +0 -0
  269. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/index_lock.py +0 -0
  270. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/plan_usage.py +0 -0
  271. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/repo_state.py +0 -0
  272. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/spawned_coord.py +0 -0
  273. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/timer_active.py +0 -0
  274. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/toolchain.py +0 -0
  275. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/unit_drift.py +0 -0
  276. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/unit_enablement.py +0 -0
  277. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/checks/worktrees.py +0 -0
  278. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/cli.py +0 -0
  279. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/context.py +0 -0
  280. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/fleet_snapshot.py +0 -0
  281. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/models.py +0 -0
  282. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/pypi.py +0 -0
  283. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/registry.py +0 -0
  284. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/render.py +0 -0
  285. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/health/units.py +0 -0
  286. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/hooks.py +0 -0
  287. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/housekeeping.py +0 -0
  288. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/interactive.py +0 -0
  289. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/issue_store.py +0 -0
  290. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/liveness_auditor.py +0 -0
  291. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/machine_pause.py +0 -0
  292. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/merge_queue.py +0 -0
  293. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/milestone_chat.py +0 -0
  294. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/milestone_dispatch.py +0 -0
  295. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/milestone_gate.py +0 -0
  296. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/milestone_order.py +0 -0
  297. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/mock_author.py +0 -0
  298. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/network.py +0 -0
  299. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/new_issue_chat.py +0 -0
  300. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/__init__.py +0 -0
  301. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/baseline.py +0 -0
  302. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/cli.py +0 -0
  303. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/collect.py +0 -0
  304. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/digest.py +0 -0
  305. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/models.py +0 -0
  306. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/predicate.py +0 -0
  307. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/service.py +0 -0
  308. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/store.py +0 -0
  309. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notifier/transport.py +0 -0
  310. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/notify.py +0 -0
  311. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/openapi.py +0 -0
  312. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/overlap_fence.py +0 -0
  313. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/overlap_predict.py +0 -0
  314. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/parentage.py +0 -0
  315. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/parentage_github.py +0 -0
  316. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/pipeline.py +0 -0
  317. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/plan_parser.py +0 -0
  318. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/plans.py +0 -0
  319. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/platform_paths.py +0 -0
  320. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/portal_bridge.py +0 -0
  321. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/portal_store.py +0 -0
  322. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/portal_sync.py +0 -0
  323. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/pr_body_lint.py +0 -0
  324. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/prereqs.py +0 -0
  325. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/progress.py +0 -0
  326. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/providers/__init__.py +0 -0
  327. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/providers/base.py +0 -0
  328. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/providers/claude.py +0 -0
  329. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/providers/claude_pty.py +0 -0
  330. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/providers/opencode.py +0 -0
  331. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/queue_diagnose.py +0 -0
  332. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/reconcile.py +0 -0
  333. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/reconcile_tick.py +0 -0
  334. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/refine_chat.py +0 -0
  335. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/release_cordon.py +0 -0
  336. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/release_propagate.py +0 -0
  337. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/release_verify.py +0 -0
  338. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/release_window.py +0 -0
  339. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/repo_edit.py +0 -0
  340. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/repo_onboard.py +0 -0
  341. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/reports.py +0 -0
  342. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/revalidate.py +0 -0
  343. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/review.py +0 -0
  344. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/scorecard.py +0 -0
  345. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/serve_app.py +0 -0
  346. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  347. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  348. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  349. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  350. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  351. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/portal-followup/SKILL.md +0 -0
  352. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  353. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  354. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/skills/update-issue/SKILL.md +0 -0
  355. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/smoke.py +0 -0
  356. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/spend_ceiling.py +0 -0
  357. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/split_work.py +0 -0
  358. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/stage_projection.py +0 -0
  359. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/test_author.py +0 -0
  360. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/test_chat.py +0 -0
  361. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/test_orchestrator.py +0 -0
  362. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/test_report.py +0 -0
  363. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/tui_release.py +0 -0
  364. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/usage.py +0 -0
  365. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/usage_limits.py +0 -0
  366. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/usage_rollup.py +0 -0
  367. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coord/worker_events.py +0 -0
  368. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/coordinator.example.yml +0 -0
  369. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-agent.service +0 -0
  370. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-db-backup.service +0 -0
  371. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-db-backup.sh +0 -0
  372. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-db-backup.timer +0 -0
  373. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-drive-queue.service +0 -0
  374. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-drive-queue.timer +0 -0
  375. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-notify.service +0 -0
  376. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-notify.timer +0 -0
  377. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-release-propagate.service +0 -0
  378. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-release-propagate.timer +0 -0
  379. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-release-window.service +0 -0
  380. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-release-window.timer +0 -0
  381. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-serve.service +0 -0
  382. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-web-dist-build.service +0 -0
  383. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-web-dist-build.sh +0 -0
  384. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-web-dist-build.timer +0 -0
  385. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-web-rollback.sh +0 -0
  386. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/coord-web.service +0 -0
  387. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/deploy/node-shim.sh +0 -0
  388. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/ADR_COORD_WEB_DIST.md +0 -0
  389. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/AGENT_OPERATIONS.md +0 -0
  390. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/ARCHITECTURE.md +0 -0
  391. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/ARCH_SECURITY_GATES.md +0 -0
  392. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/COCKPIT.md +0 -0
  393. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/CONTROL_CENTER.md +0 -0
  394. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/COST_DISCIPLINE.md +0 -0
  395. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/CROSS_PLATFORM.md +0 -0
  396. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/CUSTOMER_PORTAL.md +0 -0
  397. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/DRIVE_QUEUE.md +0 -0
  398. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/EPHEMERAL_WORKERS.md +0 -0
  399. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/FORGE_MIGRATION.md +0 -0
  400. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/GRAPHIFY_SETUP.md +0 -0
  401. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/ISSUE_GUIDANCE.md +0 -0
  402. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/MAC_MINI.md +0 -0
  403. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  404. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/NOTIFIER.md +0 -0
  405. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/OPENCODE_VERIFICATION.md +0 -0
  406. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/OPERATING_GOTCHAS.md +0 -0
  407. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/ORACLE_LOOP.md +0 -0
  408. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/PHONE_WEBAPP.md +0 -0
  409. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/PIPELINE_V2.md +0 -0
  410. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/PLATFORM_EVOLUTION.md +0 -0
  411. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/SECOND_BACKEND.md +0 -0
  412. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/STORE_SERVICE.md +0 -0
  413. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  414. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/WEB_CONTROL_CENTER.md +0 -0
  415. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/WSL_WINDOWS_WORKER.md +0 -0
  416. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/mocks/web/README.md +0 -0
  417. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/mocks/web/_tokens.css +0 -0
  418. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/mocks/web/issue-detail.html +0 -0
  419. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/mocks/web/pipeline-narrow.html +0 -0
  420. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/docs/mocks/web/pipeline-wide.html +0 -0
  421. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/graphify-out/.gitignore +0 -0
  422. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/install-agent.sh +0 -0
  423. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/pyproject.toml +0 -0
  424. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/audit_review_verdict_overrides.py +0 -0
  425. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  426. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/build-worker-image.sh +0 -0
  427. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/coordinator-machine.py +0 -0
  428. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/epic-down.sh +0 -0
  429. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/epic-up.sh +0 -0
  430. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/preflight.sh +0 -0
  431. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/provision-worker.sh +0 -0
  432. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  433. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  434. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/azure-workers/verify-github-token.sh +0 -0
  435. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/codegen.py +0 -0
  436. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/coord-test-runner.sh +0 -0
  437. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/drive-batch.sh +0 -0
  438. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/gen_board_fixture.py +0 -0
  439. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/next_release_tag.py +0 -0
  440. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/run_tests_in_populated_home.sh +0 -0
  441. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/run_tests_without_gh.sh +0 -0
  442. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/smoke_437_interactive.py +0 -0
  443. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/verify_878_review_capture.py +0 -0
  444. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/verify_release_published.py +0 -0
  445. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/scripts/verify_release_wheel.py +0 -0
  446. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/setup.cfg +0 -0
  447. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/SMOKE_SET.md +0 -0
  448. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/__init__.py +0 -0
  449. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  450. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-33/contract.md +0 -0
  451. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-33/manifest.yml +0 -0
  452. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  453. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  454. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  455. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  456. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-37/conftest.py +0 -0
  457. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-37/contract.md +0 -0
  458. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-37/manifest.yml +0 -0
  459. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  460. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  461. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/contract.md +0 -0
  462. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/manifest.yml +0 -0
  463. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  464. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  465. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  466. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  467. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  468. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  469. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  470. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  471. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  472. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  473. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-51/contract.md +0 -0
  474. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  475. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  476. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-51/manifest.yml +0 -0
  477. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  478. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-51/tsconfig.json +0 -0
  479. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  480. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  481. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/contract.md +0 -0
  482. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  483. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/manifest.yml +0 -0
  484. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  485. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  486. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  487. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  488. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  489. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  490. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  491. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  492. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  493. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  494. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  495. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/conftest.py +0 -0
  496. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/board-pipeline-basic.json +0 -0
  497. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  498. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  499. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  500. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  501. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/playwright/all_pass.json +0 -0
  502. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  503. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/playwright/mixed_fail.json +0 -0
  504. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  505. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  506. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/playwright/skip.json +0 -0
  507. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/playwright/truncated.json +0 -0
  508. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  509. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  510. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  511. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  512. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  513. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  514. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  515. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  516. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_acceptance.py +0 -0
  517. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_acceptance_drivers.py +0 -0
  518. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent.py +0 -0
  519. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_api_error.py +0 -0
  520. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_app.py +0 -0
  521. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_branch_base.py +0 -0
  522. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_branch_capture.py +0 -0
  523. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_config_free_1712.py +0 -0
  524. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_deploy_units_endpoint.py +0 -0
  525. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_dirty_worktree.py +0 -0
  526. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  527. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_graph_self_heal.py +0 -0
  528. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_health_h3.py +0 -0
  529. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_idle_restart.py +0 -0
  530. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_push_failure.py +0 -0
  531. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_reap.py +0 -0
  532. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_repos_and_pull.py +0 -0
  533. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_restart_services_endpoint.py +0 -0
  534. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_skills_self_heal.py +0 -0
  535. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_startup_diagnostics.py +0 -0
  536. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_update.py +0 -0
  537. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_update_bluegreen.py +0 -0
  538. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_usage_limit.py +0 -0
  539. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_agent_zero_commit.py +0 -0
  540. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_ambient_home_isolation.py +0 -0
  541. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_approve_reject_plan.py +0 -0
  542. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_approve_usage_gate.py +0 -0
  543. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_assignment_already_recorded_daemon.py +0 -0
  544. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_audit_log.py +0 -0
  545. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_audit_outcome.py +0 -0
  546. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_audit_query.py +0 -0
  547. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_auto_loop.py +0 -0
  548. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_auto_release_publish_2035.py +0 -0
  549. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_base_checkout_restore.py +0 -0
  550. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_block_log.py +0 -0
  551. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_board_cap_762.py +0 -0
  552. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_board_fixture.py +0 -0
  553. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_board_read_path.py +0 -0
  554. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_board_service.py +0 -0
  555. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_board_state.py +0 -0
  556. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_board_wire.py +0 -0
  557. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_brain.py +0 -0
  558. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_branch_model.py +0 -0
  559. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_bug_intake.py +0 -0
  560. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_build_worker_image_env_update.py +0 -0
  561. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cargo_cache.py +0 -0
  562. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_ci_acceptance_gate_1950.py +0 -0
  563. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_ci_parity_2091.py +0 -0
  564. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_ci_store.py +0 -0
  565. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_claim.py +0 -0
  566. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_acceptance.py +0 -0
  567. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_assign.py +0 -0
  568. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  569. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_assign_interactive_remote.py +0 -0
  570. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_assign_provider.py +0 -0
  571. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  572. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_audit.py +0 -0
  573. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_chat_continue.py +0 -0
  574. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_decide.py +0 -0
  575. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_diagnose_config_provenance.py +0 -0
  576. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_diagnose_graph.py +0 -0
  577. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_doctor.py +0 -0
  578. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_doctor_config_free_1801.py +0 -0
  579. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  580. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_drive.py +0 -0
  581. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_drive_queue.py +0 -0
  582. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_escalate.py +0 -0
  583. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_fix_headless_review.py +0 -0
  584. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_gate_a.py +0 -0
  585. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_install_drift.py +0 -0
  586. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_install_skills.py +0 -0
  587. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_issue_create_label.py +0 -0
  588. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_issue_reopen.py +0 -0
  589. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_merge.py +0 -0
  590. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_assign.py +0 -0
  591. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_capture.py +0 -0
  592. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_chat_add_child.py +0 -0
  593. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_dispatch.py +0 -0
  594. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_gate_b.py +0 -0
  595. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_gate_c.py +0 -0
  596. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_order.py +0 -0
  597. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  598. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_milestone_ship.py +0 -0
  599. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_network.py +0 -0
  600. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_new_issue_chat.py +0 -0
  601. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_plans.py +0 -0
  602. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_portal.py +0 -0
  603. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_pull_artifact.py +0 -0
  604. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_queue.py +0 -0
  605. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_reattach_sessions.py +0 -0
  606. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_refine_board.py +0 -0
  607. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_release_preflight.py +0 -0
  608. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_release_propagate.py +0 -0
  609. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_release_window.py +0 -0
  610. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_repo_2220.py +0 -0
  611. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_scorecard.py +0 -0
  612. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_set_review_findings.py +0 -0
  613. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_status_advisory_terminal.py +0 -0
  614. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_status_merge_queue.py +0 -0
  615. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_status_provider.py +0 -0
  616. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_status_review_finalizing.py +0 -0
  617. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_status_test_failed_tag.py +0 -0
  618. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_status_usage_limit.py +0 -0
  619. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_sync_comments_873.py +0 -0
  620. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_test_plan.py +0 -0
  621. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_track.py +0 -0
  622. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_tui_update.py +0 -0
  623. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cli_wait.py +0 -0
  624. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_client_base_install.py +0 -0
  625. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_comments.py +0 -0
  626. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_completion_summary.py +0 -0
  627. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_config.py +0 -0
  628. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_config_acceptance.py +0 -0
  629. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_config_audit.py +0 -0
  630. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_config_pricing.py +0 -0
  631. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  632. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_config_usage_gate.py +0 -0
  633. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_conflict_fix.py +0 -0
  634. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_conflict_fix_semantic.py +0 -0
  635. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_coord_test.py +0 -0
  636. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_coord_test_runner_baseline.py +0 -0
  637. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_coord_test_runner_populated_home.py +0 -0
  638. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_coord_test_runner_routing.py +0 -0
  639. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_coord_test_runner_toolchain.py +0 -0
  640. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_coord_web_sse_restart_live.py +0 -0
  641. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_coordinator_machine.py +0 -0
  642. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_cross_platform_imports.py +0 -0
  643. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dashboard.py +0 -0
  644. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dashboard_fixture.py +0 -0
  645. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dashboard_terminal.py +0 -0
  646. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dashboard_terminal_live.py +0 -0
  647. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_db.py +0 -0
  648. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dead_end.py +0 -0
  649. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deploy_coord_db_backup.py +0 -0
  650. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deploy_coord_web_dist.py +0 -0
  651. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deploy_coord_web_rollback.py +0 -0
  652. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deploy_drive_queue_unit.py +0 -0
  653. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deploy_manifest.py +0 -0
  654. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deploy_units_lane.py +0 -0
  655. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deploy_web_unit.py +0 -0
  656. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_deps.py +0 -0
  657. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_diagnose.py +0 -0
  658. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dispatch.py +0 -0
  659. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dispatch_target_validation.py +0 -0
  660. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_dist_name.py +0 -0
  661. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_done_housekeeping.py +0 -0
  662. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_drive_queue.py +0 -0
  663. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_drive_state.py +0 -0
  664. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_drive_tmux.py +0 -0
  665. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_epic_up_capability_detection.py +0 -0
  666. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  667. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_epic_up_image_provenance.py +0 -0
  668. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_errors.py +0 -0
  669. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_events.py +0 -0
  670. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_failure_class.py +0 -0
  671. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_filelock.py +0 -0
  672. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  673. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_fix_of_force_override.py +0 -0
  674. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_fleet_config_health.py +0 -0
  675. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_fleet_health_probes.py +0 -0
  676. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_fleet_health_snapshot.py +0 -0
  677. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_freshness.py +0 -0
  678. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_gate_a.py +0 -0
  679. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_gate_b.py +0 -0
  680. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_gate_snapshot_staleness.py +0 -0
  681. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_gates.py +0 -0
  682. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  683. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_generated_types_fixture.py +0 -0
  684. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_github_ops.py +0 -0
  685. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_goal.py +0 -0
  686. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_graph_health.py +0 -0
  687. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_graph_selfheal_absent_2237.py +0 -0
  688. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_handoff.py +0 -0
  689. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_checks.py +0 -0
  690. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_cli.py +0 -0
  691. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_cli_graph.py +0 -0
  692. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_config.py +0 -0
  693. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_context.py +0 -0
  694. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_deploy_lane_facts.py +0 -0
  695. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_incident_regression.py +0 -0
  696. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_pypi.py +0 -0
  697. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_registry.py +0 -0
  698. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_timer_active.py +0 -0
  699. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_toolchain.py +0 -0
  700. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_unit_drift.py +0 -0
  701. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_health_unit_enablement.py +0 -0
  702. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_hooks.py +0 -0
  703. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_human_attended_437.py +0 -0
  704. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_init.py +0 -0
  705. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_integration.py +0 -0
  706. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_interactive_briefing_echo.py +0 -0
  707. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_interactive_prefill_state.py +0 -0
  708. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_interactive_session_relaunch.py +0 -0
  709. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_interactive_test_verdict_backstop.py +0 -0
  710. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_interactive_token_attribution.py +0 -0
  711. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_interactive_worktree.py +0 -0
  712. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_issue_store_seam.py +0 -0
  713. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_liveness_auditor.py +0 -0
  714. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_liveness_notify.py +0 -0
  715. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_machine_pause.py +0 -0
  716. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_merge_queue.py +0 -0
  717. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_merge_verify.py +0 -0
  718. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_milestone_chat.py +0 -0
  719. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_milestone_dispatch.py +0 -0
  720. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_milestone_gate.py +0 -0
  721. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_milestone_order.py +0 -0
  722. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_milestone_seam.py +0 -0
  723. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_mock_author.py +0 -0
  724. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_model_tiering.py +0 -0
  725. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_models.py +0 -0
  726. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_models_config_labels.py +0 -0
  727. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_needs_attention.py +0 -0
  728. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_network.py +0 -0
  729. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_new_issue_chat.py +0 -0
  730. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_next_release_tag.py +0 -0
  731. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_no_direct_gh_calls.py +0 -0
  732. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_node_shim.py +0 -0
  733. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_baseline.py +0 -0
  734. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_cli.py +0 -0
  735. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_collect.py +0 -0
  736. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_config.py +0 -0
  737. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_drive_seam.py +0 -0
  738. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_isolation.py +0 -0
  739. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_predicate.py +0 -0
  740. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_quiet_hours.py +0 -0
  741. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notifier_service.py +0 -0
  742. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notify.py +0 -0
  743. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_notify_drain.py +0 -0
  744. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_openapi.py +0 -0
  745. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_operational_defaults.py +0 -0
  746. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_overlap_fence.py +0 -0
  747. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_overlap_predict.py +0 -0
  748. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_packaged_deploy_units.py +0 -0
  749. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_parentage.py +0 -0
  750. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_paste_landed.py +0 -0
  751. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_pipeline.py +0 -0
  752. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_plan_followup_approve_plan_command.py +0 -0
  753. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_plan_followup_pr_command.py +0 -0
  754. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_plan_followup_review_command.py +0 -0
  755. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_plan_only.py +0 -0
  756. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_plan_parser.py +0 -0
  757. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_platform_paths.py +0 -0
  758. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_portal_bridge.py +0 -0
  759. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_portal_config.py +0 -0
  760. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_portal_sync.py +0 -0
  761. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_pr_body_lint.py +0 -0
  762. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_prereqs.py +0 -0
  763. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_production_db_guard.py +0 -0
  764. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_progress.py +0 -0
  765. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_provider_seam.py +0 -0
  766. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_providers.py +0 -0
  767. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_providers_config_labels.py +0 -0
  768. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_providers_pty.py +0 -0
  769. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_quiet_hours.py +0 -0
  770. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_quiet_hours_store_2146.py +0 -0
  771. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reap_merged_sessions.py +0 -0
  772. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reap_stale_interactive_tick.py +0 -0
  773. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reconcile.py +0 -0
  774. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reconcile_branch.py +0 -0
  775. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reconcile_completions.py +0 -0
  776. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reconcile_merges.py +0 -0
  777. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reconcile_no_agent_record.py +0 -0
  778. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reconcile_tick.py +0 -0
  779. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reconcile_usage_limit_done.py +0 -0
  780. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_refine_chat.py +0 -0
  781. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_release_cordon_2101.py +0 -0
  782. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  783. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_release_cordon_deadlock_2240.py +0 -0
  784. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_release_propagate.py +0 -0
  785. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_release_unified_1242.py +0 -0
  786. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_release_verify.py +0 -0
  787. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_release_window.py +0 -0
  788. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_remote_auto_prune.py +0 -0
  789. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_remote_interactive_reaper.py +0 -0
  790. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_repo_edit_2220.py +0 -0
  791. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_repo_graph_fleet_2237.py +0 -0
  792. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_repo_onboard_2220.py +0 -0
  793. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_report_result_push.py +0 -0
  794. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_reports.py +0 -0
  795. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_retry.py +0 -0
  796. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_retry_advisory_1606.py +0 -0
  797. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_retry_type_1636.py +0 -0
  798. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_revalidate.py +0 -0
  799. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review.py +0 -0
  800. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_end_review_without_verdict.py +0 -0
  801. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_parse_failure_diagnostic.py +0 -0
  802. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_reaffirm.py +0 -0
  803. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_state.py +0 -0
  804. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_verdict_backstop.py +0 -0
  805. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_verdict_override_audit.py +0 -0
  806. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_verdict_relay.py +0 -0
  807. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_review_zero_commits.py +0 -0
  808. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_scoped_review_wiring.py +0 -0
  809. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_scorecard.py +0 -0
  810. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_serve.py +0 -0
  811. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_serve_app_board_trim.py +0 -0
  812. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_session.py +0 -0
  813. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_slice_issue_attribution.py +0 -0
  814. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_smoke.py +0 -0
  815. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_smoke_live_checkout_restore.py +0 -0
  816. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_smoke_workflow.py +0 -0
  817. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_spend_ceiling.py +0 -0
  818. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_spend_ceiling_coordinator.py +0 -0
  819. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_split.py +0 -0
  820. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_split_work.py +0 -0
  821. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_stage_projection.py +0 -0
  822. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_stalled_pipeline.py +0 -0
  823. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_state_review_findings_daemon.py +0 -0
  824. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_status_fleet_footer.py +0 -0
  825. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_stop_1567.py +0 -0
  826. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_stuck.py +0 -0
  827. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_terminal_command.py +0 -0
  828. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_test_author.py +0 -0
  829. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_test_chat.py +0 -0
  830. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_test_orchestrator.py +0 -0
  831. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_test_report.py +0 -0
  832. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_test_verdict_parsing.py +0 -0
  833. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_test_verdict_transcript_floor.py +0 -0
  834. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_thin_client_board_audit.py +0 -0
  835. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_thin_client_config_load_1080.py +0 -0
  836. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_thin_client_daemon_routing_906.py +0 -0
  837. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_tmux_host.py +0 -0
  838. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_tmux_session.py +0 -0
  839. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_transcript_floor.py +0 -0
  840. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_usage.py +0 -0
  841. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_usage_limits.py +0 -0
  842. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_usage_rollup.py +0 -0
  843. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_venv_live_install_2121.py +0 -0
  844. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_version_single_source.py +0 -0
  845. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_watch.py +0 -0
  846. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  847. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_worker_events.py +0 -0
  848. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_worker_image_pin_sync.py +0 -0
  849. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_worker_safety.py +0 -0
  850. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_worker_test_scoping.py +0 -0
  851. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_worktree.py +0 -0
  852. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  853. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/Cargo.lock +0 -0
  854. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/Cargo.toml +0 -0
  855. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/cargo-config-local-quadraui.toml.example +0 -0
  856. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/audit.rs +0 -0
  857. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/chat.rs +0 -0
  858. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/drive.rs +0 -0
  859. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/drive_queue.rs +0 -0
  860. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/escalation.rs +0 -0
  861. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/fleet_health.rs +0 -0
  862. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/fleet_sessions.rs +0 -0
  863. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/fleet_terminals.rs +0 -0
  864. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/format.rs +0 -0
  865. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/msv.rs +0 -0
  866. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/pipeline.rs +0 -0
  867. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/reports.rs +0 -0
  868. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/sessions.rs +0 -0
  869. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/settings_ui.rs +0 -0
  870. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/sidebar.rs +0 -0
  871. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/terminal.rs +0 -0
  872. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/app/workspace.rs +0 -0
  873. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/bin/gtk.rs +0 -0
  874. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/commands.rs +0 -0
  875. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/lib.rs +0 -0
  876. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/main.rs +0 -0
  877. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/src/settings.rs +0 -0
  878. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/tui/tests/acceptance.rs +0 -0
  879. {code_coordinator-0.5.161 → code_coordinator-0.5.164}/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.161
3
+ Version: 0.5.164
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.161
3
+ Version: 0.5.164
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.161",
2
+ "tag": "0.5.164",
3
3
  "distance": 0,
4
- "node": "g2c9d3ac54cc47979d8229c26e8852ac4852dc577",
4
+ "node": "gacacc73c143b2a972a04f33649be185678913aa4",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-19"
@@ -161,6 +161,12 @@ def row_to_assignment(row: object) -> Assignment:
161
161
  # #2316: raw terminal stop_reason; None for rows predating this
162
162
  # column or a worker whose log carried no such field.
163
163
  stop_reason=d.get("stop_reason"),
164
+ # #2417: the calling worker's own assignment id, when this row was
165
+ # dispatched from INSIDE another worker's turn (e.g. `coord
166
+ # acceptance author`/`coord fix` shelled out to from a `type="work"`
167
+ # session's own bash tool). None for a hand or coordinator/brain
168
+ # dispatch, and for rows predating this column.
169
+ dispatched_by_assignment_id=d.get("dispatched_by_assignment_id"),
164
170
  )
165
171
 
166
172
 
@@ -174,4 +174,5 @@ export interface Assignment {
174
174
  for_issue_number: number | null
175
175
  driven_by: string | null
176
176
  stop_reason: string | null
177
+ dispatched_by_assignment_id: string | null
177
178
  }
@@ -926,6 +926,14 @@ def _migrate_add_columns(conn: sqlite3.Connection) -> None:
926
926
  # submission with no preview queued yet, same as `open_question`'s
927
927
  # own default.
928
928
  "ALTER TABLE portal_submissions ADD COLUMN preview_url TEXT NOT NULL DEFAULT ''",
929
+ # #2417: the CALLING assignment's id when this row was dispatched by
930
+ # a `coord` subcommand run from INSIDE another worker's own turn
931
+ # (e.g. `coord acceptance author`/`coord fix` shelled out to from a
932
+ # `type="work"` session's own bash tool) rather than typed by a
933
+ # human — see `coord.models.Assignment.dispatched_by_assignment_id`.
934
+ # NULL for a hand dispatch, a coordinator/brain-proposed dispatch,
935
+ # and every row predating this column.
936
+ "ALTER TABLE assignments ADD COLUMN dispatched_by_assignment_id TEXT",
929
937
  ]
930
938
  for sql in migrations:
931
939
  try:
@@ -996,22 +996,35 @@ def _decide_acceptance_landing(
996
996
  something that will happen, and waiting for the fourth is the #1526
997
997
  defect: an unbounded wait for an event that cannot occur.
998
998
 
999
- Three shapes get an immediate, actionable exit instead of a wait,
1000
- because for each of them the corrective action belongs to a loop that
1001
- will never run for this row:
999
+ Two shapes get an immediate, actionable exit instead of a wait, because
1000
+ for each of them the corrective action belongs to a loop that will never
1001
+ run for this row:
1002
1002
 
1003
1003
  * a FAILED slice test — the work row's equivalent dispatches
1004
1004
  ``coord fix``, but nothing dispatches one for a ``test-author`` row
1005
1005
  whose Test stage failed;
1006
- * a ``request-changes`` slice review — ``auto_loop`` accepts a
1007
- ``test-author`` fix (``FIX_DISPATCH_TYPES``), but the daemon drain
1008
- deliberately excludes fix dispatch (#476/#477, and #1692's own
1009
- analysis), so for the work row it is THIS driver that runs
1010
- ``coord fix``; there was no such arm for the slice;
1011
1006
  * ``--no-merge`` — the slice merge is a hard prerequisite for
1012
1007
  dispatching any work at all (#1138), so with merging switched off the
1013
1008
  run cannot progress, and saying so beats idling to the deadline.
1014
1009
 
1010
+ A third shape — a ``request-changes`` slice review — used to be a fourth
1011
+ immediate exit for the identical reason (``auto_loop`` accepts a
1012
+ ``test-author`` fix via ``FIX_DISPATCH_TYPES``, but the daemon drain
1013
+ deliberately excludes fix dispatch — #476/#477, and #1692's own
1014
+ analysis — so for the work row it is THIS driver that runs
1015
+ ``coord fix``, and there was no such arm for the slice). #2425: it no
1016
+ longer is. Every retry of this lane re-dispatched a fresh author on the
1017
+ SAME branch name instead of fixing the one review blocking it
1018
+ (claude-coordinator#2286 — 11 re-authoring attempts over ~11h with the
1019
+ review's findings never once addressed), because re-authoring was the
1020
+ only path this lane had. Below, ``request-changes`` now gets the same
1021
+ bounded ``coord fix <acceptance_review_aid>`` arm :func:`decide` already
1022
+ runs for the work row's own review (the ``REVIEW: request-changes → fix
1023
+ round`` arm), spending :attr:`DriveCounters.acceptance`'s OWN
1024
+ ``fix_rounds`` — not the work row's — for the same #2079 reason the
1025
+ slice's merge attempts get their own budget: a struggling slice review
1026
+ must not silently leave the issue's real fix budget at zero.
1027
+
1015
1028
  The merge itself reuses :func:`_decide_merge` verbatim against a shadow
1016
1029
  :class:`~coord.drive_state.IssueState` whose "work row" IS the slice —
1017
1030
  that is what carries #1891 (CI not reported → wait, don't retry), #1892
@@ -1049,15 +1062,81 @@ def _decide_acceptance_landing(
1049
1062
  )
1050
1063
 
1051
1064
  if state.acceptance_review_verdict == "request-changes":
1052
- return _die(
1053
- f"the JIT acceptance slice {aid} was reviewed REQUEST-CHANGES "
1054
- f"(review {state.acceptance_review_aid or 'unknown'}) it will "
1055
- "never reach the merge queue until that is addressed, and no "
1056
- "loop dispatches the fix for a test-author row on its own.\n"
1057
- f" Findings: coord log {state.acceptance_review_aid or aid}\n"
1058
- f" Fix it: coord fix {state.acceptance_review_aid or aid}\n"
1059
- " or re-run coord drive with --no-acceptance to skip JIT "
1060
- "authoring."
1065
+ # #2425: the slice's own twin of `decide()`'s `REVIEW: request-
1066
+ # changes fix round` arm see the docstring above for why this
1067
+ # used to be a bare `_die()`. `coord fix` already accepts a
1068
+ # `type="test-author"` review id (#1622/#1692:
1069
+ # `auto_loop.FIX_DISPATCH_TYPES` includes `SEALED_PATH_AUTHOR_TYPES`,
1070
+ # which is where "test-author" lives), so this is the SAME command
1071
+ # the work-row arm dispatches, not a second implementation of it.
1072
+ slice_counters = counters.slice_budget()
1073
+ if not state.auto_loop:
1074
+ return _die(
1075
+ "the JIT acceptance slice's review requested changes, but "
1076
+ "pipeline.auto_loop is OFF — the review→fix path is "
1077
+ "switched off in coordinator.yml, so no fix can be "
1078
+ "dispatched.\n"
1079
+ f" Findings: coord log {state.acceptance_review_aid or aid}\n"
1080
+ " Continue by hand: coord assign --interactive --fix-of "
1081
+ f"{state.acceptance_review_aid or aid}"
1082
+ )
1083
+ # Belt-and-braces, mirroring the work-row arm: `acceptance_review_
1084
+ # verdict` and `acceptance_review_aid` are read off the SAME board
1085
+ # row (drive_state.project), so a verdict without an id is
1086
+ # impossible today. Refuse to guess rather than dispatch `coord fix`
1087
+ # against the wrong assignment.
1088
+ if not state.acceptance_review_aid:
1089
+ return _die(
1090
+ "the JIT acceptance slice's review verdict is "
1091
+ "'request-changes' but no review assignment id is on the "
1092
+ "board — refusing to guess which review to fix. Inspect: "
1093
+ f"coord gates {state.repo} {state.issue}"
1094
+ )
1095
+ # Same de-duplication latch as `review_fix_dispatched_for` on the
1096
+ # work row's own arm, just on the slice's own counters: `coord fix`
1097
+ # returns as soon as the fix worker is dispatched, and the board
1098
+ # this driver polls needs a beat to show the new row.
1099
+ if slice_counters.review_fix_dispatched_for == state.acceptance_review_aid:
1100
+ return _wait(
1101
+ label=(
1102
+ "ACCEPTANCE: fix already dispatched for "
1103
+ f"{state.acceptance_review_aid} — waiting for the fix "
1104
+ "row to appear on the board"
1105
+ )
1106
+ )
1107
+ if slice_counters.fix_rounds >= opts.max_fix_rounds:
1108
+ return _die(
1109
+ f"the JIT acceptance slice {aid} was reviewed REQUEST-"
1110
+ f"CHANGES (review {state.acceptance_review_aid}) after "
1111
+ f"{slice_counters.fix_rounds} fix round(s) this drive spent "
1112
+ "landing the slice — stopping.\n"
1113
+ f" Findings: coord log {state.acceptance_review_aid}\n"
1114
+ f" Continue by hand: coord fix {state.acceptance_review_aid}\n"
1115
+ " or re-run coord drive with --no-acceptance to skip JIT "
1116
+ "authoring."
1117
+ )
1118
+ slice_counters.fix_rounds += 1
1119
+ slice_counters.review_fix_dispatched_for = state.acceptance_review_aid
1120
+ return Action(
1121
+ kind=RUN,
1122
+ label=(
1123
+ "ACCEPTANCE: review request-changes → fix round "
1124
+ f"{slice_counters.fix_rounds}/{opts.max_fix_rounds} "
1125
+ f"(coord fix {state.acceptance_review_aid})"
1126
+ ),
1127
+ command=("fix", state.acceptance_review_aid),
1128
+ error_message=(
1129
+ f"coord fix {state.acceptance_review_aid} failed to "
1130
+ "dispatch a fix for the JIT acceptance slice's review.\n"
1131
+ " Its refusals are all guards doing their job: auto_loop "
1132
+ "disabled, no structured\n"
1133
+ " findings, approve-with-nits (#476), max_review_"
1134
+ "iterations, or the #522\n"
1135
+ " terminal-work guard — the message above names which.\n"
1136
+ f" Check: coord log {state.acceptance_review_aid} / "
1137
+ "continue by hand: coord assign --interactive --fix-of "
1138
+ f"{state.acceptance_review_aid}"
1139
+ ),
1061
1140
  )
1062
1141
 
1063
1142
  if not opts.do_merge:
@@ -723,6 +723,29 @@ class Assignment:
723
723
  # `advisory` — the same bucket as a worker that looked and correctly
724
724
  # found nothing to do — so nobody re-drove it.
725
725
  stop_reason: str | None = None
726
+ # #2417: the CALLING assignment's id when this row was dispatched by a
727
+ # `coord` subcommand run from INSIDE another worker's own turn (e.g. a
728
+ # `type="work"` session shelling out to `coord acceptance author repo ms
729
+ # --issue N` or `coord fix <other-id>`), as opposed to a human typing the
730
+ # same command in their own shell. Populated centrally in
731
+ # `coord.state.record_dispatched`/`record_dispatched_assignment` from the
732
+ # `COORD_ASSIGNMENT_ID` env var (see `coord.agent._build_worker_env`'s
733
+ # #2217 note — every headless worker's subprocess environment carries its
734
+ # own assignment id, so a `coord` CLI the worker shells out to inherits
735
+ # it automatically; a human's own shell never has it set). `None` for a
736
+ # hand dispatch, a coordinator/brain-proposed dispatch, and rows
737
+ # predating this column.
738
+ #
739
+ # This is the missing link #2417 reported: before this field, the only
740
+ # way to discover that a work row had dispatched an independent sibling
741
+ # assignment (and whether that sibling then succeeded) was grepping the
742
+ # worker's raw `claude -p` transcript for the printed "Dispatched ... to
743
+ # ..." line and manually cross-referencing a second `coord log` by hand.
744
+ # With this field, the ORIGIN row can be found by any consumer (the
745
+ # board, `coord audit`, the TUI) via a reverse lookup: "which assignment
746
+ # has `dispatched_by_assignment_id == this row's id`?" — see
747
+ # `coord.state.find_dispatched_children`.
748
+ dispatched_by_assignment_id: str | None = None
726
749
 
727
750
 
728
751
  def effective_issue_number(assignment: "Assignment | dict") -> int:
@@ -859,6 +882,15 @@ class Proposal:
859
882
  # through) carries durable provenance. `None` for every other caller
860
883
  # (brain-proposed, milestone dispatch, ...).
861
884
  driven_by: str | None = None
885
+ # #2417: mirrors `Assignment.dispatched_by_assignment_id` — see that
886
+ # field's docstring. Set here (rather than left for the caller to
887
+ # populate) by `coord.state.record_dispatched` reading
888
+ # `COORD_ASSIGNMENT_ID` from the environment at record time, so every
889
+ # `Proposal`-based dispatch path (`coord fix`/`coord pr`/`coord review`
890
+ # follow-ups via `_dispatch_followup`, `coord assign`,
891
+ # `coord/dispatch_workers.py`, ...) gets this for free without each call
892
+ # site threading it through by hand.
893
+ dispatched_by_assignment_id: str | None = None
862
894
 
863
895
 
864
896
  @dataclass
@@ -17,7 +17,7 @@ import os
17
17
  import sqlite3
18
18
  import time
19
19
  import warnings
20
- from dataclasses import asdict
20
+ from dataclasses import asdict, replace
21
21
  from datetime import datetime, timezone
22
22
  from pathlib import Path
23
23
  from typing import TYPE_CHECKING
@@ -561,6 +561,10 @@ def _dispatched_dict_from_payload(a: dict) -> dict:
561
561
  "provider_name": a.get("provider_name"),
562
562
  # #1499: durable drive provenance; None for a hand `coord assign`.
563
563
  "driven_by": a.get("driven_by"),
564
+ # #2417: the calling worker's own assignment id, when this row was
565
+ # dispatched from INSIDE another worker's turn. None for a hand or
566
+ # coordinator/brain dispatch.
567
+ "dispatched_by_assignment_id": a.get("dispatched_by_assignment_id"),
564
568
  }
565
569
 
566
570
 
@@ -605,6 +609,10 @@ def _row_to_dispatched_dict(row: object) -> dict:
605
609
  "provider_name": d.get("provider_name"),
606
610
  # #1499: durable drive provenance; None for a hand `coord assign`.
607
611
  "driven_by": d.get("driven_by"),
612
+ # #2417: the calling worker's own assignment id, when this row was
613
+ # dispatched from INSIDE another worker's turn. None for a hand or
614
+ # coordinator/brain dispatch.
615
+ "dispatched_by_assignment_id": d.get("dispatched_by_assignment_id"),
608
616
  }
609
617
 
610
618
 
@@ -799,6 +807,21 @@ def _thin_client_local_board_guard(fn_name: str) -> None:
799
807
  _log.warning(msg)
800
808
 
801
809
 
810
+ def _dispatched_by_from_env() -> str | None:
811
+ """The calling worker's own assignment id, if this process is running
812
+ INSIDE a headless worker's turn (#2417).
813
+
814
+ `COORD_ASSIGNMENT_ID` is set on a worker subprocess's own environment by
815
+ `coord.agent._build_worker_env` (#2217) — so a `coord` CLI invocation
816
+ the worker shells out to (e.g. `coord acceptance author` dispatching an
817
+ independent test-author sibling, `coord fix <other-id>` escalating an
818
+ unrelated assignment) inherits it automatically. A human typing the same
819
+ command in their own shell never has it set, so this correctly returns
820
+ `None` for a hand/coordinator dispatch.
821
+ """
822
+ return os.environ.get("COORD_ASSIGNMENT_ID") or None
823
+
824
+
802
825
  def record_dispatched(
803
826
  *,
804
827
  assignment_id: str,
@@ -807,6 +830,15 @@ def record_dispatched(
807
830
  provider_name: str | None = None,
808
831
  ) -> None:
809
832
  """Record a newly dispatched assignment — routes to the daemon when set."""
833
+ # #2417: stamp the calling worker's own assignment id (if any) BEFORE
834
+ # this crosses the HTTP boundary to a possibly-remote daemon — the env
835
+ # var only exists on the machine/process that is actually dispatching,
836
+ # never on the daemon host. Caller-supplied values (none of today's
837
+ # callers set one explicitly) are left alone.
838
+ if proposal.dispatched_by_assignment_id is None:
839
+ proposal = replace(
840
+ proposal, dispatched_by_assignment_id=_dispatched_by_from_env()
841
+ )
810
842
  svc = _board_service()
811
843
  resp = _route_write(
812
844
  svc,
@@ -874,8 +906,8 @@ def _record_dispatched_local(
874
906
  assignment_id, machine_name, repo_name, repo_github,
875
907
  issue_number, issue_title, status, type, briefing,
876
908
  files_allowed, model, dispatched_at, required_gates,
877
- provider_name, branch, driven_by
878
- ) VALUES (?, ?, ?, ?, ?, ?, 'running', ?, ?, ?, ?, ?, ?, ?, ?, ?)
909
+ provider_name, branch, driven_by, dispatched_by_assignment_id
910
+ ) VALUES (?, ?, ?, ?, ?, ?, 'running', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
879
911
  ON CONFLICT(assignment_id) DO NOTHING""",
880
912
  (
881
913
  assignment_id,
@@ -893,6 +925,7 @@ def _record_dispatched_local(
893
925
  provider_name,
894
926
  branch,
895
927
  proposal.driven_by,
928
+ proposal.dispatched_by_assignment_id,
896
929
  ),
897
930
  )
898
931
  conn.commit()
@@ -915,7 +948,16 @@ def _record_dispatched_local(
915
948
  # the audit log alone, after the driver process has exited.
916
949
  actor="drive" if proposal.driven_by else "coordinator",
917
950
  summary=f"Dispatched {proposal.type} to {proposal.machine_name}: "
918
- f"{proposal.repo_name}#{proposal.issue_number}",
951
+ f"{proposal.repo_name}#{proposal.issue_number}"
952
+ # #2417: make the sibling-dispatch link visible in the default
953
+ # (non-`--json`) `coord audit` table, not just in `details` —
954
+ # this is what let coord-portal#119's dispatch of a test-author
955
+ # sibling go unnoticed without grepping the raw worker transcript.
956
+ + (
957
+ f" (dispatched by assignment {proposal.dispatched_by_assignment_id})"
958
+ if proposal.dispatched_by_assignment_id
959
+ else ""
960
+ ),
919
961
  repo=proposal.repo_name,
920
962
  issue=proposal.issue_number,
921
963
  assignment_id=assignment_id,
@@ -924,6 +966,11 @@ def _record_dispatched_local(
924
966
  "type": proposal.type,
925
967
  "branch": branch,
926
968
  "driven_by": proposal.driven_by,
969
+ # #2417: surfaces "this was dispatched BY a worker's own
970
+ # turn" directly in `coord audit`, without cross-referencing
971
+ # the raw `claude -p` transcript for the printed "Dispatched
972
+ # ... to ..." line.
973
+ "dispatched_by_assignment_id": proposal.dispatched_by_assignment_id,
927
974
  },
928
975
  )
929
976
 
@@ -934,6 +981,12 @@ def record_dispatched_assignment(
934
981
  repo_github: str,
935
982
  ) -> None:
936
983
  """Record a dispatched assignment — routes to the daemon when set."""
984
+ # #2417: see record_dispatched's matching comment — must be stamped here,
985
+ # on the dispatching process's own env, before the daemon HTTP hop.
986
+ if assignment.dispatched_by_assignment_id is None:
987
+ assignment = replace(
988
+ assignment, dispatched_by_assignment_id=_dispatched_by_from_env()
989
+ )
937
990
  svc = _board_service()
938
991
  resp = _route_write(
939
992
  svc, "/dispatched", {"assignment": asdict(assignment), "repo_github": repo_github}
@@ -971,7 +1024,8 @@ def _record_dispatched_assignment_local(
971
1024
  issue_number, issue_title, status, type, briefing,
972
1025
  files_allowed, model, dispatched_at, review_of_assignment_id,
973
1026
  review_target, required_gates, review_iteration,
974
- provider_name, branch, for_issue_number, driven_by
1027
+ provider_name, branch, for_issue_number, driven_by,
1028
+ dispatched_by_assignment_id
975
1029
  ) VALUES (?, ?, ?, ?, ?, ?, 'running', ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?,
976
1030
  -- #1553: a follow-up dispatched off another assignment (review,
977
1031
  -- smoke, [fix-N], retry, pr-helper) inherits that parent's
@@ -989,7 +1043,7 @@ def _record_dispatched_assignment_local(
989
1043
  SELECT p.for_issue_number FROM assignments p
990
1044
  WHERE p.assignment_id = ?
991
1045
  )),
992
- ?)
1046
+ ?, ?)
993
1047
  ON CONFLICT(assignment_id) DO UPDATE SET
994
1048
  status = 'running',
995
1049
  machine_name = excluded.machine_name,
@@ -1013,7 +1067,13 @@ def _record_dispatched_assignment_local(
1013
1067
  for_issue_number = COALESCE(excluded.for_issue_number, for_issue_number),
1014
1068
  -- #1499: COALESCE so a re-dispatch/reload doesn't clear the
1015
1069
  -- drive provenance already recorded for this assignment.
1016
- driven_by = COALESCE(excluded.driven_by, driven_by)""",
1070
+ driven_by = COALESCE(excluded.driven_by, driven_by),
1071
+ -- #2417: COALESCE so a re-dispatch/reload doesn't clear the
1072
+ -- calling-worker provenance already recorded for this
1073
+ -- assignment.
1074
+ dispatched_by_assignment_id = COALESCE(
1075
+ excluded.dispatched_by_assignment_id, dispatched_by_assignment_id
1076
+ )""",
1017
1077
  (
1018
1078
  assignment.assignment_id or "",
1019
1079
  assignment.machine_name,
@@ -1039,6 +1099,7 @@ def _record_dispatched_assignment_local(
1039
1099
  # positional).
1040
1100
  assignment.review_of_assignment_id,
1041
1101
  assignment.driven_by,
1102
+ assignment.dispatched_by_assignment_id,
1042
1103
  ),
1043
1104
  )
1044
1105
  conn.commit()
@@ -1051,7 +1112,13 @@ def _record_dispatched_assignment_local(
1051
1112
  # to a human `coord assign` (the exact gap #1499 reported).
1052
1113
  actor="drive" if assignment.driven_by else "coordinator",
1053
1114
  summary=f"Dispatched {assignment.type} to {assignment.machine_name}: "
1054
- f"{assignment.repo_name}#{assignment.issue_number}",
1115
+ f"{assignment.repo_name}#{assignment.issue_number}"
1116
+ # #2417: see the matching Proposal-path comment above.
1117
+ + (
1118
+ f" (dispatched by assignment {assignment.dispatched_by_assignment_id})"
1119
+ if assignment.dispatched_by_assignment_id
1120
+ else ""
1121
+ ),
1055
1122
  repo=assignment.repo_name,
1056
1123
  issue=assignment.issue_number,
1057
1124
  assignment_id=assignment.assignment_id,
@@ -1062,6 +1129,8 @@ def _record_dispatched_assignment_local(
1062
1129
  "review_target": assignment.review_target,
1063
1130
  "review_iteration": assignment.review_iteration,
1064
1131
  "driven_by": assignment.driven_by,
1132
+ # #2417: see record_dispatched's matching comment.
1133
+ "dispatched_by_assignment_id": assignment.dispatched_by_assignment_id,
1065
1134
  },
1066
1135
  )
1067
1136
 
@@ -1304,18 +1304,112 @@ def test_failed_slice_test_stops_with_the_fix_command():
1304
1304
  assert "coord fix ta1" in action.message
1305
1305
 
1306
1306
 
1307
- def test_slice_review_request_changes_stops_with_the_fix_command():
1307
+ def test_slice_review_request_changes_dispatches_a_fix():
1308
+ """#2425: the JIT lane's own twin of the work row's `REVIEW:
1309
+ request-changes → fix round` arm — before this, a request-changes
1310
+ verdict on the slice was a dead end nothing ever dispatched a fix for
1311
+ (claude-coordinator#2286: 11 re-authoring retries over ~11h, never once
1312
+ addressing the review)."""
1313
+ counters = DriveCounters()
1314
+ action = landing_step(
1315
+ landing_state(
1316
+ acceptance_review_verdict="request-changes",
1317
+ acceptance_merge_status="",
1318
+ ),
1319
+ counters=counters,
1320
+ )
1321
+ assert action.kind == RUN
1322
+ assert action.command == ("fix", "rv1")
1323
+ assert "rv1" in action.label
1324
+ assert not action.is_exit
1325
+ # Spends the SLICE's own budget, not the work row's (#2079's rule,
1326
+ # extended to fix rounds): landing the slice must not silently leave
1327
+ # the issue's own fix budget at zero.
1328
+ assert counters.fix_rounds == 0
1329
+ assert counters.acceptance is not None
1330
+ assert counters.acceptance.fix_rounds == 1
1331
+ assert counters.acceptance.review_fix_dispatched_for == "rv1"
1332
+
1333
+
1334
+ def test_slice_review_fix_already_dispatched_waits_for_the_board():
1335
+ """The de-dup latch: a second poll against the SAME review id must not
1336
+ spawn a second fix worker on the same branch (#476/#477)."""
1337
+ counters = DriveCounters()
1338
+ counters.slice_budget().review_fix_dispatched_for = "rv1"
1308
1339
  action = landing_step(
1309
1340
  landing_state(
1310
1341
  acceptance_review_verdict="request-changes",
1311
1342
  acceptance_merge_status="",
1343
+ ),
1344
+ counters=counters,
1345
+ )
1346
+ assert action.kind == WAIT
1347
+ assert "rv1" in action.label
1348
+ assert counters.acceptance.fix_rounds == 0
1349
+
1350
+
1351
+ def test_slice_review_fix_rounds_are_bounded_then_die():
1352
+ """Bounded the same way the work row's fix loop is — a slice review that
1353
+ keeps coming back request-changes must eventually escalate, not spin."""
1354
+ opts = DriveOptions(machine="precision", max_fix_rounds=2)
1355
+ counters = DriveCounters()
1356
+ for expected_round in (1, 2):
1357
+ action = landing_step(
1358
+ landing_state(
1359
+ acceptance_review_verdict="request-changes",
1360
+ acceptance_merge_status="",
1361
+ ),
1362
+ opts,
1363
+ counters=counters,
1312
1364
  )
1365
+ assert action.kind == RUN
1366
+ assert action.command == ("fix", "rv1")
1367
+ assert counters.acceptance.fix_rounds == expected_round
1368
+ # Clear the latch between rounds the same way a changed review row
1369
+ # would on the real board (a fresh review after the fix landed).
1370
+ counters.acceptance.review_fix_dispatched_for = ""
1371
+
1372
+ action = landing_step(
1373
+ landing_state(
1374
+ acceptance_review_verdict="request-changes",
1375
+ acceptance_merge_status="",
1376
+ ),
1377
+ opts,
1378
+ counters=counters,
1313
1379
  )
1314
1380
  assert action.is_exit
1315
1381
  assert action.exit_code == EXIT_TERMINAL_FAILURE
1382
+ assert "2 fix round(s)" in action.message
1316
1383
  assert "coord fix rv1" in action.message
1317
1384
 
1318
1385
 
1386
+ def test_slice_review_request_changes_with_auto_loop_off_dies_without_dispatching():
1387
+ action = landing_step(
1388
+ landing_state(
1389
+ acceptance_review_verdict="request-changes",
1390
+ acceptance_merge_status="",
1391
+ auto_loop=False,
1392
+ )
1393
+ )
1394
+ assert action.is_exit
1395
+ assert action.exit_code == EXIT_TERMINAL_FAILURE
1396
+ assert "auto_loop is OFF" in action.message
1397
+ assert "coord assign --interactive --fix-of rv1" in action.message
1398
+
1399
+
1400
+ def test_slice_review_request_changes_with_no_review_id_refuses_to_guess():
1401
+ action = landing_step(
1402
+ landing_state(
1403
+ acceptance_review_verdict="request-changes",
1404
+ acceptance_merge_status="",
1405
+ acceptance_review_aid="",
1406
+ )
1407
+ )
1408
+ assert action.is_exit
1409
+ assert action.exit_code == EXIT_TERMINAL_FAILURE
1410
+ assert "refusing to guess" in action.message
1411
+
1412
+
1319
1413
  def test_no_merge_refuses_up_front_instead_of_idling_to_the_deadline():
1320
1414
  """`--no-merge` makes the run unable to progress at all (#1138 refuses
1321
1415
  the work dispatch until the slice lands) — say so immediately."""