code-coordinator 0.5.106__tar.gz → 0.5.108__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 (843) hide show
  1. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/agent.py +42 -0
  5. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/auto_loop.py +133 -13
  6. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notify.py +24 -2
  7. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/providers/claude.py +12 -1
  8. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/providers/claude_pty.py +14 -1
  9. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/smoke.py +18 -7
  10. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent.py +58 -0
  11. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_auto_loop.py +184 -0
  12. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_providers.py +46 -0
  13. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_providers_pty.py +46 -1
  14. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_smoke.py +39 -0
  15. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_stalled_pipeline.py +162 -0
  16. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_worker_test_scoping.py +18 -3
  17. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.claude/commands/board.md +0 -0
  18. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.claude/commands/complete-session.md +0 -0
  19. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.claude/commands/coordinator.md +0 -0
  20. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.githooks/_lib.sh +0 -0
  21. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.githooks/post-checkout +0 -0
  22. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.githooks/post-commit +0 -0
  23. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.githooks/post-merge +0 -0
  24. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  25. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.github/coord-ci-acceptance.yml +0 -0
  26. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.github/workflows/auto-release.yml +0 -0
  27. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.github/workflows/cargo-test.yml +0 -0
  28. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.github/workflows/publish.yml +0 -0
  29. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.github/workflows/release-tui.yml +0 -0
  30. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.github/workflows/test.yml +0 -0
  31. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/.gitignore +0 -0
  32. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/CLAUDE.md +0 -0
  33. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/GOAL.md +0 -0
  34. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/LICENSE +0 -0
  35. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/MANIFEST.in +0 -0
  36. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/README.md +0 -0
  37. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/SOURCES.txt +0 -0
  38. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/dependency_links.txt +0 -0
  39. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/entry_points.txt +0 -0
  40. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/requires.txt +0 -0
  41. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/scm_file_list.json +0 -0
  42. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/code_coordinator.egg-info/top_level.txt +0 -0
  43. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/__init__.py +0 -0
  44. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/_board_mapping.py +0 -0
  45. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/acceptance.py +0 -0
  46. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/acceptance_drivers.py +0 -0
  47. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/agent_app.py +0 -0
  48. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/agent_update.py +0 -0
  49. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/agents/opencode/.gitignore +0 -0
  50. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/agents/opencode/agents/work.md +0 -0
  51. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/agents/opencode/routing.jsonc +0 -0
  52. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/audit.py +0 -0
  53. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/block_log.py +0 -0
  54. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/board_bool_guard.py +0 -0
  55. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/board_service.py +0 -0
  56. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/board_wire.py +0 -0
  57. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/brain.py +0 -0
  58. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/branch_model.py +0 -0
  59. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/bug_intake.py +0 -0
  60. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/cargo_cache.py +0 -0
  61. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/ci_github.py +0 -0
  62. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/ci_store.py +0 -0
  63. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/claim.py +0 -0
  64. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/cli.py +0 -0
  65. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/client.py +0 -0
  66. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/__init__.py +0 -0
  67. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/_common.py +0 -0
  68. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/acceptance.py +0 -0
  69. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/agent_ops.py +0 -0
  70. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/audit.py +0 -0
  71. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/chat.py +0 -0
  72. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/dispatch.py +0 -0
  73. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/dispatch_workers.py +0 -0
  74. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/drive.py +0 -0
  75. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/drive_queue.py +0 -0
  76. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/gate_a.py +0 -0
  77. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/gates.py +0 -0
  78. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/issues.py +0 -0
  79. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/lifecycle.py +0 -0
  80. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/merge.py +0 -0
  81. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/milestone.py +0 -0
  82. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/plan_followup.py +0 -0
  83. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/plans.py +0 -0
  84. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/portal.py +0 -0
  85. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/release.py +0 -0
  86. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/repo.py +0 -0
  87. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/report.py +0 -0
  88. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/review.py +0 -0
  89. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/scorecard.py +0 -0
  90. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/sessions.py +0 -0
  91. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/setup.py +0 -0
  92. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/status.py +0 -0
  93. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/terminal.py +0 -0
  94. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/test_gate.py +0 -0
  95. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/commands/tui.py +0 -0
  96. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/comments.py +0 -0
  97. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/config.py +0 -0
  98. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/config_reload.py +0 -0
  99. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/conflict_fix.py +0 -0
  100. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dao.py +0 -0
  101. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/__init__.py +0 -0
  102. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/fixture.py +0 -0
  103. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/index.html +0 -0
  104. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/server.py +0 -0
  105. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/terminal.py +0 -0
  106. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/.gitignore +0 -0
  107. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/components.json +0 -0
  108. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/assets/Gallery-Cq84itDE.js +0 -0
  109. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  110. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/assets/Terminal-DOXLcMue.js +0 -0
  111. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/assets/index-DHn-RIJ8.js +0 -0
  112. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  113. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  114. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  115. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  116. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  117. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/index.html +0 -0
  118. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  119. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/sw.js +0 -0
  120. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  121. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  122. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  123. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  124. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  125. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  126. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  127. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  128. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  129. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  130. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/eslint.config.js +0 -0
  131. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/index.html +0 -0
  132. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  133. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/package-lock.json +0 -0
  134. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/package.json +0 -0
  135. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  136. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/playwright.config.ts +0 -0
  137. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/postcss.config.js +0 -0
  138. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  139. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  140. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  141. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/App.tsx +0 -0
  142. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/api/client.ts +0 -0
  143. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  144. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  145. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  146. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  147. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  148. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  149. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  150. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  151. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  152. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  153. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  154. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  155. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  156. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  157. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  158. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  159. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  160. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  161. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  162. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  163. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  164. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  165. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  166. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  167. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  168. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  169. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  170. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  171. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  172. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  173. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  174. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  175. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  176. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  177. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  178. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/index.css +0 -0
  179. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  180. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  181. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/main.tsx +0 -0
  182. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  183. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  184. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  185. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  186. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  187. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  188. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  189. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  190. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  191. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  192. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  193. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  194. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  195. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  196. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  197. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  198. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  199. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  200. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  201. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  202. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  203. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  204. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  205. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/tailwind.config.js +0 -0
  206. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/tsconfig.json +0 -0
  207. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  208. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dashboard/webapp/vite.config.ts +0 -0
  209. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/db.py +0 -0
  210. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dead_end.py +0 -0
  211. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/README.md +0 -0
  212. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-agent.service +0 -0
  213. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-db-backup.service +0 -0
  214. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-db-backup.sh +0 -0
  215. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-db-backup.timer +0 -0
  216. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-drive-queue.service +0 -0
  217. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-drive-queue.timer +0 -0
  218. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-notify.service +0 -0
  219. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-notify.timer +0 -0
  220. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-release-propagate.service +0 -0
  221. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-release-propagate.timer +0 -0
  222. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-release-window.service +0 -0
  223. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-release-window.timer +0 -0
  224. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-serve.service +0 -0
  225. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-web-dist-build.service +0 -0
  226. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-web-dist-build.timer +0 -0
  227. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy/coord-web.service +0 -0
  228. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy_manifest.py +0 -0
  229. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deploy_units.py +0 -0
  230. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/deps.py +0 -0
  231. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/diagnose.py +0 -0
  232. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dispatch.py +0 -0
  233. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/dist_name.py +0 -0
  234. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/drive.py +0 -0
  235. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/drive_queue.py +0 -0
  236. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/drive_state.py +0 -0
  237. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/events.py +0 -0
  238. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/failure_class.py +0 -0
  239. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/filelock.py +0 -0
  240. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/fleet_config_health.py +0 -0
  241. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/freshness.py +0 -0
  242. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/gate_a.py +0 -0
  243. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/gate_b.py +0 -0
  244. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/gate_snapshot.py +0 -0
  245. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/gates.py +0 -0
  246. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/github_ops.py +0 -0
  247. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/goal.py +0 -0
  248. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/graph_health.py +0 -0
  249. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/__init__.py +0 -0
  250. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/aggregate.py +0 -0
  251. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/__init__.py +0 -0
  252. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/agent_install.py +0 -0
  253. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/cargo_targets.py +0 -0
  254. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/claude_binary.py +0 -0
  255. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/deploy_lane_facts.py +0 -0
  256. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/disk.py +0 -0
  257. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/fleet_board.py +0 -0
  258. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  259. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/fleet_phantom.py +0 -0
  260. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/fleet_unit_drift.py +0 -0
  261. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/graph.py +0 -0
  262. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/graphify_cli.py +0 -0
  263. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/index_lock.py +0 -0
  264. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/plan_usage.py +0 -0
  265. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/repo_state.py +0 -0
  266. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/spawned_coord.py +0 -0
  267. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/timer_active.py +0 -0
  268. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/toolchain.py +0 -0
  269. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/unit_drift.py +0 -0
  270. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/unit_enablement.py +0 -0
  271. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/checks/worktrees.py +0 -0
  272. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/cli.py +0 -0
  273. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/context.py +0 -0
  274. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/fleet_snapshot.py +0 -0
  275. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/models.py +0 -0
  276. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/pypi.py +0 -0
  277. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/registry.py +0 -0
  278. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/render.py +0 -0
  279. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/health/units.py +0 -0
  280. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/hooks.py +0 -0
  281. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/housekeeping.py +0 -0
  282. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/interactive.py +0 -0
  283. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/issue_store.py +0 -0
  284. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/liveness_auditor.py +0 -0
  285. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/machine_pause.py +0 -0
  286. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/merge_queue.py +0 -0
  287. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/milestone_chat.py +0 -0
  288. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/milestone_dispatch.py +0 -0
  289. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/milestone_gate.py +0 -0
  290. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/milestone_order.py +0 -0
  291. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/mock_author.py +0 -0
  292. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/models.py +0 -0
  293. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/network.py +0 -0
  294. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/new_issue_chat.py +0 -0
  295. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/__init__.py +0 -0
  296. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/baseline.py +0 -0
  297. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/cli.py +0 -0
  298. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/collect.py +0 -0
  299. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/digest.py +0 -0
  300. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/models.py +0 -0
  301. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/predicate.py +0 -0
  302. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/service.py +0 -0
  303. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/store.py +0 -0
  304. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/notifier/transport.py +0 -0
  305. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/openapi.py +0 -0
  306. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/overlap_fence.py +0 -0
  307. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/overlap_predict.py +0 -0
  308. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/parentage.py +0 -0
  309. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/parentage_github.py +0 -0
  310. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/pipeline.py +0 -0
  311. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/plan_parser.py +0 -0
  312. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/plans.py +0 -0
  313. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/platform_paths.py +0 -0
  314. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/portal_bridge.py +0 -0
  315. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/portal_store.py +0 -0
  316. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/portal_sync.py +0 -0
  317. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/pr_body_lint.py +0 -0
  318. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/prereqs.py +0 -0
  319. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/progress.py +0 -0
  320. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/providers/__init__.py +0 -0
  321. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/providers/base.py +0 -0
  322. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/providers/opencode.py +0 -0
  323. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/queue_diagnose.py +0 -0
  324. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/reconcile.py +0 -0
  325. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/refine_chat.py +0 -0
  326. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/release_cordon.py +0 -0
  327. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/release_propagate.py +0 -0
  328. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/release_verify.py +0 -0
  329. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/release_window.py +0 -0
  330. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/repo_edit.py +0 -0
  331. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/repo_onboard.py +0 -0
  332. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/reports.py +0 -0
  333. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/revalidate.py +0 -0
  334. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/review.py +0 -0
  335. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/scorecard.py +0 -0
  336. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/serve_app.py +0 -0
  337. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/skills/update-issue/SKILL.md +0 -0
  338. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/spend_ceiling.py +0 -0
  339. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/split_work.py +0 -0
  340. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/stage_projection.py +0 -0
  341. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/state.py +0 -0
  342. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/test_author.py +0 -0
  343. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/test_chat.py +0 -0
  344. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/test_orchestrator.py +0 -0
  345. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/test_report.py +0 -0
  346. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/tui_release.py +0 -0
  347. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/usage.py +0 -0
  348. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/usage_limits.py +0 -0
  349. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/usage_rollup.py +0 -0
  350. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coord/worker_events.py +0 -0
  351. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/coordinator.example.yml +0 -0
  352. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-agent.service +0 -0
  353. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-db-backup.service +0 -0
  354. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-db-backup.sh +0 -0
  355. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-db-backup.timer +0 -0
  356. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-drive-queue.service +0 -0
  357. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-drive-queue.timer +0 -0
  358. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-notify.service +0 -0
  359. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-notify.timer +0 -0
  360. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-release-propagate.service +0 -0
  361. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-release-propagate.timer +0 -0
  362. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-release-window.service +0 -0
  363. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-release-window.timer +0 -0
  364. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-serve.service +0 -0
  365. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-web-dist-build.service +0 -0
  366. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-web-dist-build.sh +0 -0
  367. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-web-dist-build.timer +0 -0
  368. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-web-rollback.sh +0 -0
  369. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/coord-web.service +0 -0
  370. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/deploy/node-shim.sh +0 -0
  371. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/AGENT_OPERATIONS.md +0 -0
  372. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/ARCHITECTURE.md +0 -0
  373. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/ARCH_SECURITY_GATES.md +0 -0
  374. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/COCKPIT.md +0 -0
  375. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/CONTROL_CENTER.md +0 -0
  376. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/COST_DISCIPLINE.md +0 -0
  377. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/CROSS_PLATFORM.md +0 -0
  378. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/CUSTOMER_PORTAL.md +0 -0
  379. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/DRIVE_QUEUE.md +0 -0
  380. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/EPHEMERAL_WORKERS.md +0 -0
  381. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/FORGE_MIGRATION.md +0 -0
  382. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/GRAPHIFY_SETUP.md +0 -0
  383. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/ISSUE_GUIDANCE.md +0 -0
  384. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/MAC_MINI.md +0 -0
  385. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  386. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/NOTIFIER.md +0 -0
  387. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/OPENCODE_VERIFICATION.md +0 -0
  388. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/OPERATING_GOTCHAS.md +0 -0
  389. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/ORACLE_LOOP.md +0 -0
  390. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/PHONE_WEBAPP.md +0 -0
  391. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/PIPELINE_V2.md +0 -0
  392. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/PLATFORM_EVOLUTION.md +0 -0
  393. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/SECOND_BACKEND.md +0 -0
  394. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/STORE_SERVICE.md +0 -0
  395. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  396. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/WEB_CONTROL_CENTER.md +0 -0
  397. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/mocks/web/README.md +0 -0
  398. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/mocks/web/_tokens.css +0 -0
  399. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/mocks/web/issue-detail.html +0 -0
  400. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/mocks/web/pipeline-narrow.html +0 -0
  401. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/docs/mocks/web/pipeline-wide.html +0 -0
  402. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/graphify-out/.gitignore +0 -0
  403. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/install-agent.sh +0 -0
  404. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/pyproject.toml +0 -0
  405. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/audit_review_verdict_overrides.py +0 -0
  406. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  407. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/build-worker-image.sh +0 -0
  408. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/coordinator-machine.py +0 -0
  409. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/epic-down.sh +0 -0
  410. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/epic-up.sh +0 -0
  411. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/preflight.sh +0 -0
  412. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/provision-worker.sh +0 -0
  413. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  414. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  415. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/azure-workers/verify-github-token.sh +0 -0
  416. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/codegen.py +0 -0
  417. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/coord-test-runner.sh +0 -0
  418. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/drive-batch.sh +0 -0
  419. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/gen_board_fixture.py +0 -0
  420. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/next_release_tag.py +0 -0
  421. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/run_tests_in_populated_home.sh +0 -0
  422. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/run_tests_without_gh.sh +0 -0
  423. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/smoke_437_interactive.py +0 -0
  424. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/verify_878_review_capture.py +0 -0
  425. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/verify_release_published.py +0 -0
  426. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/scripts/verify_release_wheel.py +0 -0
  427. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/setup.cfg +0 -0
  428. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/SMOKE_SET.md +0 -0
  429. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/__init__.py +0 -0
  430. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  431. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-33/contract.md +0 -0
  432. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-33/manifest.yml +0 -0
  433. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  434. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  435. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  436. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  437. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-37/conftest.py +0 -0
  438. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-37/contract.md +0 -0
  439. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-37/manifest.yml +0 -0
  440. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  441. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  442. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/contract.md +0 -0
  443. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/manifest.yml +0 -0
  444. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  445. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  446. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  447. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  448. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  449. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  450. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  451. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  452. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  453. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  454. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-51/contract.md +0 -0
  455. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  456. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  457. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-51/manifest.yml +0 -0
  458. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  459. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-51/tsconfig.json +0 -0
  460. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  461. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/conftest.py +0 -0
  462. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/board-pipeline-basic.json +0 -0
  463. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  464. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  465. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  466. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/playwright/all_pass.json +0 -0
  467. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  468. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/playwright/mixed_fail.json +0 -0
  469. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  470. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  471. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/playwright/skip.json +0 -0
  472. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/playwright/truncated.json +0 -0
  473. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  474. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  475. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  476. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  477. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  478. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  479. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  480. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  481. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_acceptance.py +0 -0
  482. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_acceptance_drivers.py +0 -0
  483. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_api_error.py +0 -0
  484. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_app.py +0 -0
  485. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_branch_base.py +0 -0
  486. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_branch_capture.py +0 -0
  487. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_config_free_1712.py +0 -0
  488. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_deploy_units_endpoint.py +0 -0
  489. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_dirty_worktree.py +0 -0
  490. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_graph_self_heal.py +0 -0
  491. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_health_h3.py +0 -0
  492. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_idle_restart.py +0 -0
  493. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_push_failure.py +0 -0
  494. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_reap.py +0 -0
  495. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_repos_and_pull.py +0 -0
  496. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_restart_services_endpoint.py +0 -0
  497. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_startup_diagnostics.py +0 -0
  498. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_update.py +0 -0
  499. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_update_bluegreen.py +0 -0
  500. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_usage_limit.py +0 -0
  501. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_agent_zero_commit.py +0 -0
  502. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_ambient_home_isolation.py +0 -0
  503. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_approve_reject_plan.py +0 -0
  504. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_approve_usage_gate.py +0 -0
  505. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_assignment_already_recorded_daemon.py +0 -0
  506. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_audit_log.py +0 -0
  507. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_audit_outcome.py +0 -0
  508. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_audit_query.py +0 -0
  509. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_auto_release_publish_2035.py +0 -0
  510. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_base_checkout_restore.py +0 -0
  511. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_block_log.py +0 -0
  512. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_board_cap_762.py +0 -0
  513. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_board_fixture.py +0 -0
  514. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_board_read_path.py +0 -0
  515. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_board_service.py +0 -0
  516. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_board_state.py +0 -0
  517. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_board_wire.py +0 -0
  518. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_brain.py +0 -0
  519. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_branch_model.py +0 -0
  520. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_bug_intake.py +0 -0
  521. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_build_worker_image_env_update.py +0 -0
  522. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cargo_cache.py +0 -0
  523. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_ci_acceptance_gate_1950.py +0 -0
  524. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_ci_parity_2091.py +0 -0
  525. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_ci_store.py +0 -0
  526. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_claim.py +0 -0
  527. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_acceptance.py +0 -0
  528. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_assign.py +0 -0
  529. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  530. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_assign_interactive_remote.py +0 -0
  531. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_assign_provider.py +0 -0
  532. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  533. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_audit.py +0 -0
  534. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_chat_continue.py +0 -0
  535. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_diagnose_config_provenance.py +0 -0
  536. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_diagnose_graph.py +0 -0
  537. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_doctor.py +0 -0
  538. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_doctor_config_free_1801.py +0 -0
  539. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  540. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_drive.py +0 -0
  541. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_drive_queue.py +0 -0
  542. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_escalate.py +0 -0
  543. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_fix_headless_review.py +0 -0
  544. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_gate_a.py +0 -0
  545. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_install_drift.py +0 -0
  546. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_install_skills.py +0 -0
  547. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_issue_create_label.py +0 -0
  548. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_issue_reopen.py +0 -0
  549. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_merge.py +0 -0
  550. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_assign.py +0 -0
  551. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_capture.py +0 -0
  552. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_chat_add_child.py +0 -0
  553. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_dispatch.py +0 -0
  554. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_gate_b.py +0 -0
  555. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_gate_c.py +0 -0
  556. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_order.py +0 -0
  557. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  558. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_milestone_ship.py +0 -0
  559. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_network.py +0 -0
  560. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_new_issue_chat.py +0 -0
  561. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_plans.py +0 -0
  562. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_portal.py +0 -0
  563. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_pull_artifact.py +0 -0
  564. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_queue.py +0 -0
  565. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_reattach_sessions.py +0 -0
  566. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_refine_board.py +0 -0
  567. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_release_preflight.py +0 -0
  568. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_release_propagate.py +0 -0
  569. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_release_window.py +0 -0
  570. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_repo_2220.py +0 -0
  571. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_scorecard.py +0 -0
  572. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_set_review_findings.py +0 -0
  573. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_status_advisory_terminal.py +0 -0
  574. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_status_merge_queue.py +0 -0
  575. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_status_provider.py +0 -0
  576. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_status_review_finalizing.py +0 -0
  577. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_status_test_failed_tag.py +0 -0
  578. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_status_usage_limit.py +0 -0
  579. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_sync_comments_873.py +0 -0
  580. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_test_plan.py +0 -0
  581. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_track.py +0 -0
  582. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_tui_update.py +0 -0
  583. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cli_wait.py +0 -0
  584. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_client_base_install.py +0 -0
  585. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_comments.py +0 -0
  586. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_completion_summary.py +0 -0
  587. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_config.py +0 -0
  588. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_config_acceptance.py +0 -0
  589. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_config_audit.py +0 -0
  590. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_config_pricing.py +0 -0
  591. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  592. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_config_usage_gate.py +0 -0
  593. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_conflict_fix.py +0 -0
  594. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_conflict_fix_semantic.py +0 -0
  595. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_coord_test.py +0 -0
  596. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_coord_test_runner_baseline.py +0 -0
  597. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_coord_test_runner_routing.py +0 -0
  598. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_coord_test_runner_toolchain.py +0 -0
  599. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_coord_web_sse_restart_live.py +0 -0
  600. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_coordinator_machine.py +0 -0
  601. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_cross_platform_imports.py +0 -0
  602. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dashboard.py +0 -0
  603. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dashboard_fixture.py +0 -0
  604. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dashboard_terminal.py +0 -0
  605. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dashboard_terminal_live.py +0 -0
  606. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_db.py +0 -0
  607. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dead_end.py +0 -0
  608. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deploy_coord_db_backup.py +0 -0
  609. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deploy_coord_web_dist.py +0 -0
  610. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deploy_coord_web_rollback.py +0 -0
  611. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deploy_drive_queue_unit.py +0 -0
  612. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deploy_manifest.py +0 -0
  613. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deploy_units_lane.py +0 -0
  614. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deploy_web_unit.py +0 -0
  615. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_deps.py +0 -0
  616. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_diagnose.py +0 -0
  617. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dispatch.py +0 -0
  618. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dispatch_target_validation.py +0 -0
  619. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_dist_name.py +0 -0
  620. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_done_housekeeping.py +0 -0
  621. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_drive.py +0 -0
  622. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_drive_queue.py +0 -0
  623. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_drive_state.py +0 -0
  624. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_drive_tmux.py +0 -0
  625. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_epic_up_capability_detection.py +0 -0
  626. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  627. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_epic_up_image_provenance.py +0 -0
  628. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_errors.py +0 -0
  629. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_events.py +0 -0
  630. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_failure_class.py +0 -0
  631. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_filelock.py +0 -0
  632. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  633. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_fix_of_force_override.py +0 -0
  634. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_fleet_config_health.py +0 -0
  635. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_fleet_health_probes.py +0 -0
  636. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_fleet_health_snapshot.py +0 -0
  637. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_freshness.py +0 -0
  638. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_gate_a.py +0 -0
  639. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_gate_b.py +0 -0
  640. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_gate_snapshot_staleness.py +0 -0
  641. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_gates.py +0 -0
  642. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  643. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_generated_types_fixture.py +0 -0
  644. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_github_ops.py +0 -0
  645. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_goal.py +0 -0
  646. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_graph_health.py +0 -0
  647. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_graph_selfheal_absent_2237.py +0 -0
  648. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_handoff.py +0 -0
  649. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_checks.py +0 -0
  650. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_cli.py +0 -0
  651. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_cli_graph.py +0 -0
  652. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_config.py +0 -0
  653. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_context.py +0 -0
  654. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_deploy_lane_facts.py +0 -0
  655. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_incident_regression.py +0 -0
  656. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_pypi.py +0 -0
  657. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_registry.py +0 -0
  658. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_timer_active.py +0 -0
  659. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_toolchain.py +0 -0
  660. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_unit_drift.py +0 -0
  661. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_health_unit_enablement.py +0 -0
  662. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_hooks.py +0 -0
  663. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_human_attended_437.py +0 -0
  664. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_init.py +0 -0
  665. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_integration.py +0 -0
  666. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_interactive_briefing_echo.py +0 -0
  667. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_interactive_prefill_state.py +0 -0
  668. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_interactive_session_relaunch.py +0 -0
  669. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_interactive_test_verdict_backstop.py +0 -0
  670. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_interactive_token_attribution.py +0 -0
  671. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_interactive_worktree.py +0 -0
  672. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_issue_store_seam.py +0 -0
  673. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_liveness_auditor.py +0 -0
  674. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_liveness_notify.py +0 -0
  675. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_machine_pause.py +0 -0
  676. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_merge_queue.py +0 -0
  677. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_merge_verify.py +0 -0
  678. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_milestone_chat.py +0 -0
  679. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_milestone_dispatch.py +0 -0
  680. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_milestone_gate.py +0 -0
  681. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_milestone_order.py +0 -0
  682. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_milestone_seam.py +0 -0
  683. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_mock_author.py +0 -0
  684. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_model_tiering.py +0 -0
  685. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_models.py +0 -0
  686. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_models_config_labels.py +0 -0
  687. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_needs_attention.py +0 -0
  688. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_network.py +0 -0
  689. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_new_issue_chat.py +0 -0
  690. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_next_release_tag.py +0 -0
  691. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_no_direct_gh_calls.py +0 -0
  692. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_node_shim.py +0 -0
  693. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_baseline.py +0 -0
  694. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_cli.py +0 -0
  695. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_collect.py +0 -0
  696. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_config.py +0 -0
  697. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_drive_seam.py +0 -0
  698. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_isolation.py +0 -0
  699. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_predicate.py +0 -0
  700. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_quiet_hours.py +0 -0
  701. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notifier_service.py +0 -0
  702. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notify.py +0 -0
  703. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_notify_drain.py +0 -0
  704. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_openapi.py +0 -0
  705. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_operational_defaults.py +0 -0
  706. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_overlap_fence.py +0 -0
  707. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_overlap_predict.py +0 -0
  708. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_packaged_deploy_units.py +0 -0
  709. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_parentage.py +0 -0
  710. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_paste_landed.py +0 -0
  711. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_pipeline.py +0 -0
  712. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_plan_followup_approve_plan_command.py +0 -0
  713. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_plan_followup_pr_command.py +0 -0
  714. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_plan_followup_review_command.py +0 -0
  715. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_plan_only.py +0 -0
  716. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_plan_parser.py +0 -0
  717. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_platform_paths.py +0 -0
  718. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_portal_bridge.py +0 -0
  719. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_portal_config.py +0 -0
  720. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_portal_sync.py +0 -0
  721. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_pr_body_lint.py +0 -0
  722. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_prereqs.py +0 -0
  723. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_production_db_guard.py +0 -0
  724. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_progress.py +0 -0
  725. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_provider_seam.py +0 -0
  726. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_providers_config_labels.py +0 -0
  727. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_quiet_hours.py +0 -0
  728. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_quiet_hours_store_2146.py +0 -0
  729. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reap_merged_sessions.py +0 -0
  730. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reap_stale_interactive_tick.py +0 -0
  731. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reconcile_branch.py +0 -0
  732. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reconcile_completions.py +0 -0
  733. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reconcile_merges.py +0 -0
  734. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reconcile_no_agent_record.py +0 -0
  735. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reconcile_usage_limit_done.py +0 -0
  736. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_refine_chat.py +0 -0
  737. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_release_cordon_2101.py +0 -0
  738. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  739. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_release_cordon_deadlock_2240.py +0 -0
  740. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_release_propagate.py +0 -0
  741. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_release_unified_1242.py +0 -0
  742. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_release_verify.py +0 -0
  743. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_release_window.py +0 -0
  744. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_remote_auto_prune.py +0 -0
  745. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_remote_interactive_reaper.py +0 -0
  746. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_repo_edit_2220.py +0 -0
  747. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_repo_graph_fleet_2237.py +0 -0
  748. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_repo_onboard_2220.py +0 -0
  749. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_report_result_push.py +0 -0
  750. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_reports.py +0 -0
  751. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_retry.py +0 -0
  752. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_retry_advisory_1606.py +0 -0
  753. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_retry_type_1636.py +0 -0
  754. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_revalidate.py +0 -0
  755. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review.py +0 -0
  756. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_end_review_without_verdict.py +0 -0
  757. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_parse_failure_diagnostic.py +0 -0
  758. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_reaffirm.py +0 -0
  759. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_state.py +0 -0
  760. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_verdict_backstop.py +0 -0
  761. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_verdict_override_audit.py +0 -0
  762. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_verdict_relay.py +0 -0
  763. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_review_zero_commits.py +0 -0
  764. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_scoped_review_wiring.py +0 -0
  765. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_scorecard.py +0 -0
  766. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_serve.py +0 -0
  767. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_serve_app_board_trim.py +0 -0
  768. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_session.py +0 -0
  769. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_slice_issue_attribution.py +0 -0
  770. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_smoke_live_checkout_restore.py +0 -0
  771. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_smoke_workflow.py +0 -0
  772. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_spend_ceiling.py +0 -0
  773. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_spend_ceiling_coordinator.py +0 -0
  774. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_split.py +0 -0
  775. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_split_work.py +0 -0
  776. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_stage_projection.py +0 -0
  777. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_state.py +0 -0
  778. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_state_review_findings_daemon.py +0 -0
  779. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_status_fleet_footer.py +0 -0
  780. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_stop_1567.py +0 -0
  781. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_stuck.py +0 -0
  782. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_terminal_command.py +0 -0
  783. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_test_author.py +0 -0
  784. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_test_chat.py +0 -0
  785. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_test_orchestrator.py +0 -0
  786. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_test_report.py +0 -0
  787. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_test_verdict_parsing.py +0 -0
  788. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_test_verdict_transcript_floor.py +0 -0
  789. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_thin_client_board_audit.py +0 -0
  790. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_thin_client_config_load_1080.py +0 -0
  791. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_thin_client_daemon_routing_906.py +0 -0
  792. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_tmux_host.py +0 -0
  793. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_tmux_session.py +0 -0
  794. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_transcript_floor.py +0 -0
  795. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_usage.py +0 -0
  796. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_usage_limits.py +0 -0
  797. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_usage_rollup.py +0 -0
  798. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_venv_live_install_2121.py +0 -0
  799. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_version_single_source.py +0 -0
  800. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_watch.py +0 -0
  801. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_worker_events.py +0 -0
  802. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_worker_image_pin_sync.py +0 -0
  803. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_worker_safety.py +0 -0
  804. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_worktree.py +0 -0
  805. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  806. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/Cargo.lock +0 -0
  807. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/Cargo.toml +0 -0
  808. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/cargo-config-local-quadraui.toml.example +0 -0
  809. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/audit.rs +0 -0
  810. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/chat.rs +0 -0
  811. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/data.rs +0 -0
  812. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/dialogs.rs +0 -0
  813. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/drive.rs +0 -0
  814. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/drive_queue.rs +0 -0
  815. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/escalation.rs +0 -0
  816. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/events.rs +0 -0
  817. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/fixtures.rs +0 -0
  818. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/fleet_health.rs +0 -0
  819. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/fleet_sessions.rs +0 -0
  820. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/fleet_terminals.rs +0 -0
  821. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/format.rs +0 -0
  822. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/milestone_dag.rs +0 -0
  823. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/mod.rs +0 -0
  824. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/msv.rs +0 -0
  825. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/pipeline.rs +0 -0
  826. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/plans.rs +0 -0
  827. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/render.rs +0 -0
  828. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/reports.rs +0 -0
  829. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/sessions.rs +0 -0
  830. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/settings_ui.rs +0 -0
  831. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/sidebar.rs +0 -0
  832. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/terminal.rs +0 -0
  833. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/tests.rs +0 -0
  834. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/types.rs +0 -0
  835. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/app/workspace.rs +0 -0
  836. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/bin/gtk.rs +0 -0
  837. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/commands.rs +0 -0
  838. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/lib.rs +0 -0
  839. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/main.rs +0 -0
  840. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/src/settings.rs +0 -0
  841. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/tests/acceptance.rs +0 -0
  842. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/tests/cli.rs +0 -0
  843. {code_coordinator-0.5.106 → code_coordinator-0.5.108}/tui/tests/fixtures/board_sample.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.106
3
+ Version: 0.5.108
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.106
3
+ Version: 0.5.108
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.106",
2
+ "tag": "0.5.108",
3
3
  "distance": 0,
4
- "node": "g254718dc492ab30f9a86d7fce65cb4a2156430b5",
4
+ "node": "g88b0fe133f2629aebc4acb6c0cd2f756be9213dc",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-16"
@@ -3850,6 +3850,12 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
3850
3850
  For ``type="plan"`` specs the worker gets :data:`WORKER_PLAN_PROMPT` as
3851
3851
  its system prompt and only ``Read,Bash`` in ``--allowedTools`` — no
3852
3852
  Edit/Write tools so it cannot modify the repository.
3853
+
3854
+ For ``type="smoke"`` specs the worker gets ``Read,Bash`` only — no
3855
+ Edit/Write, and deliberately no ``Monitor`` (#2301): a smoke leg is a
3856
+ one-shot ``claude -p`` session, and ``Monitor`` ends the turn to await a
3857
+ notification that can never arrive in time to resume it, which silently
3858
+ kills a backgrounded smoke suite mid-run and leaves no verdict printed.
3853
3859
  """
3854
3860
  if spec.type == "plan":
3855
3861
  system_prompt = spec.system_prompt if spec.system_prompt else WORKER_PLAN_PROMPT
@@ -3907,6 +3913,33 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
3907
3913
  system_prompt = spec.system_prompt if spec.system_prompt else MOCK_AUTHOR_SYSTEM_PROMPT
3908
3914
  system_prompt += build_deny_prompt(MOCK_AUTHOR_DENY_COMMANDS)
3909
3915
  allowed_tools = "Read,Edit,Write,Bash"
3916
+ elif spec.type == "smoke":
3917
+ # #2301: smoke gets its own branch instead of falling through to the
3918
+ # generic `else` below (which is where it used to land, and where
3919
+ # it inherited the #2169 `Monitor` grant meant for *work* legs).
3920
+ # A smoke runner's whole job is "pull the branch, run the smoke
3921
+ # command, report pass/fail" (see SMOKE_SYSTEM_PROMPT) — it edits
3922
+ # nothing and pushes nothing, so it has no business holding
3923
+ # Edit/Write either.
3924
+ #
3925
+ # `Monitor` is deliberately withheld: it is an await-a-notification
3926
+ # tool — calling it ends the current turn so the harness can wake
3927
+ # the model back up once the condition it's watching fires. That
3928
+ # only resumes anything in an INTERACTIVE session. A smoke leg is a
3929
+ # one-shot `claude -p` session like every coord leg (#1394): ending
3930
+ # the turn ends the session itself, permanently, before any
3931
+ # notification can arrive. The agent was observed reaching for
3932
+ # `Monitor` via ToolSearch to poll a backgrounded smoke suite, then
3933
+ # ending its turn to "wait" — the session (and the backgrounded
3934
+ # suite, reaped ~30s later) died silently with no verdict printed,
3935
+ # burning a Test dispatch for zero signal every single retry.
3936
+ # `BashOutput`/`TaskOutput` (already reachable without an explicit
3937
+ # grant — see the #2169 comment above) return synchronously and are
3938
+ # the correct way to poll a backgrounded task from here.
3939
+ from coord.smoke import SMOKE_SYSTEM_PROMPT # noqa: PLC0415
3940
+ system_prompt = spec.system_prompt if spec.system_prompt else SMOKE_SYSTEM_PROMPT
3941
+ system_prompt += build_deny_prompt(spec.deny_commands)
3942
+ allowed_tools = "Read,Bash"
3910
3943
  else:
3911
3944
  system_prompt = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
3912
3945
  system_prompt += build_deny_prompt(spec.deny_commands)
@@ -3916,6 +3949,15 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
3916
3949
  # past the 600s Bash ceiling. `TaskOutput`/`TaskStop` were already
3917
3950
  # reachable without being in this list; `Monitor` was the one
3918
3951
  # observed denied.
3952
+ #
3953
+ # #2301: this grant is for *work*-shaped legs (work/review/fix/
3954
+ # conflict-fix) whose system prompt (WORKER_SYSTEM_PROMPT, the
3955
+ # ONE-SHOT section) explicitly teaches the bounded-poll pattern and
3956
+ # explains why an await-a-notification tool is safe to reach for
3957
+ # ONLY with that guidance attached. `smoke` used to fall through to
3958
+ # this branch and inherit `Monitor` with none of that context — see
3959
+ # the dedicated `elif spec.type == "smoke"` branch above, which
3960
+ # deliberately withholds it instead.
3919
3961
  allowed_tools = "Read,Edit,Write,Bash,Monitor"
3920
3962
 
3921
3963
  # NOTE: briefing is NOT passed as a positional arg — it is written to
@@ -43,7 +43,7 @@ import httpx
43
43
  from coord.config import Config
44
44
  from coord.dispatch import AGENT_PORT
45
45
  from coord import github_ops
46
- from coord.models import Assignment, Board
46
+ from coord.models import SEALED_PATH_AUTHOR_TYPES, Assignment, Board
47
47
  from coord.review import (
48
48
  ReviewFindings,
49
49
  blocking_findings_confirmed_absent,
@@ -64,7 +64,16 @@ log = logging.getLogger(__name__)
64
64
  # ``coord.notify``'s fix-completion detector doesn't hardcode ``"work"`` and
65
65
  # silently miss a newer fix-dispatch type — the same class of bug as #1141
66
66
  # ("test-author was never added to WORK_LIKE_TYPES").
67
- FIX_DISPATCH_TYPES: frozenset[str] = frozenset({"work", "test-author"})
67
+ #
68
+ # #2302: "mock-author" (Gate A) is the same class of bug repeating — a
69
+ # request-changes fix for a mock-author row dispatched as plain "work",
70
+ # which trips coord/review.py's sealed-path tamper rule on every round
71
+ # (the fix worker isn't authorized to write tests/acceptance/ms-NN/, but
72
+ # that's exactly where the diff has to land) until max_review_iterations
73
+ # burns out. `_dispatch_fix` derives `fix_type` from
74
+ # ``coord.models.SEALED_PATH_AUTHOR_TYPES`` rather than a hardcoded string
75
+ # so this set — and this one — never drift from it again.
76
+ FIX_DISPATCH_TYPES: frozenset[str] = frozenset({"work"}) | SEALED_PATH_AUTHOR_TYPES
68
77
 
69
78
 
70
79
  # Every :class:`LoopAction` kind whose production means the in-memory board was
@@ -816,9 +825,16 @@ def _build_fix_briefing(
816
825
  instructions instead — "make the acceptance suite pass" is actively
817
826
  wrong guidance for an oracle that must stay RED until the real
818
827
  implementation lands.
828
+
829
+ #2302: a ``type="mock-author"`` source row (Gate A) gets its own
830
+ variant for the same reason one level up the pipeline — the diff is a
831
+ specification (``contract.md`` + rendered mocks), not an
832
+ implementation, so "run tests, make them pass" is equally wrong there.
819
833
  """
820
834
  if work.type == "test-author":
821
835
  return _build_test_author_fix_briefing(work, findings, iteration, max_iter)
836
+ if work.type == "mock-author":
837
+ return _build_mock_author_fix_briefing(work, findings, iteration, max_iter)
822
838
 
823
839
  lines: list[str] = [
824
840
  f"# Fix assignment (iteration {iteration}/{max_iter}): {work.issue_title}",
@@ -929,6 +945,93 @@ def _build_test_author_fix_briefing(
929
945
  return "\n".join(lines)
930
946
 
931
947
 
948
+ def _build_mock_author_fix_briefing(
949
+ work: Assignment,
950
+ findings,
951
+ iteration: int,
952
+ max_iter: int,
953
+ ) -> str:
954
+ """Fix briefing for a ``type="mock-author"`` slice (#2302, Gate A).
955
+
956
+ The diff here is a SPECIFICATION — ``contract.md`` plus rendered
957
+ ``tests/acceptance/ms-NN/mocks/*`` — not an implementation. There is no
958
+ suite to run, so "run the tests and make them pass" (the generic fix
959
+ instruction) is actively wrong guidance, the same shape #1176 already
960
+ fixed for ``test-author``. Findings on a Gate A review are almost
961
+ always an internal-consistency defect: a mock depicting an end state
962
+ that the contract's own stated rules cannot produce from the narrated
963
+ input sequence — so the contract and the mocks must be reconciled to
964
+ agree with each other in BOTH directions, not just patched locally.
965
+ The dispatcher pairs this briefing with a bare ``type="mock-author"``
966
+ dispatch (see ``_dispatch_fix``) — ``agent.py``'s own
967
+ ``elif spec.type == "mock-author"`` branch supplies
968
+ ``MOCK_AUTHOR_SYSTEM_PROMPT`` and its deny-list on its own, so no
969
+ explicit ``system_prompt``/``deny_commands`` injection is needed here
970
+ the way ``test-author`` (which has no such branch) requires.
971
+ """
972
+ lines: list[str] = [
973
+ f"# Gate A fix (iteration {iteration}/{max_iter}): {work.issue_title}",
974
+ "",
975
+ (
976
+ f"You are the independent mock-author fixing review findings "
977
+ f"against the Gate A contract and mocks for issue "
978
+ f"#{work.issue_number}."
979
+ ),
980
+ (
981
+ f"Work on branch `{work.branch or '(check your git branches)'}` — "
982
+ "**do not change the branch name**."
983
+ ),
984
+ "",
985
+ "## Reviewer findings to address",
986
+ "",
987
+ findings.body.strip(),
988
+ "",
989
+ "## Instructions",
990
+ "",
991
+ (
992
+ "1. Read the reviewer findings above carefully. Your diff is a "
993
+ "SPECIFICATION (`contract.md` + rendered `mocks/*`), not an "
994
+ "implementation — there is no suite to run and nothing to make "
995
+ "pass. Findings on a Gate A review are almost always an "
996
+ "internal-consistency defect: a mock depicting an end state "
997
+ "that the contract's own stated rules cannot produce from the "
998
+ "narrated input sequence."
999
+ ),
1000
+ (
1001
+ "2. Fix **every** issue identified by the reviewer so the "
1002
+ "contract and the mocks agree with each other in BOTH "
1003
+ "directions — every rule the contract states must be reachable "
1004
+ "from the mocks' narrated sequence, and every state the mocks "
1005
+ "depict must be producible by the contract's stated rules."
1006
+ ),
1007
+ "3. Stay on the **same branch** — push your fixes to the existing branch.",
1008
+ (
1009
+ "4. Do NOT touch any file outside `tests/acceptance/ms-NN/`. "
1010
+ "Touching anything outside that directory is a mandatory "
1011
+ "`request-changes` for this assignment type — you are pinning "
1012
+ "the milestone's contract, not implementing it."
1013
+ ),
1014
+ (
1015
+ f"5. This is fix iteration {iteration} of {max_iter} allowed. "
1016
+ "Address all findings completely so the next review can approve."
1017
+ ),
1018
+ "",
1019
+ (
1020
+ "STATUS: reading review findings → reconciling contract and mocks "
1021
+ "→ confidence: high"
1022
+ ),
1023
+ "",
1024
+ ]
1025
+ if work.briefing and work.briefing.strip():
1026
+ lines += [
1027
+ "## Original mock-author briefing",
1028
+ "",
1029
+ work.briefing.strip(),
1030
+ "",
1031
+ ]
1032
+ return "\n".join(lines)
1033
+
1034
+
932
1035
  def _dispatch_fix(
933
1036
  work: Assignment,
934
1037
  briefing: str,
@@ -945,11 +1048,18 @@ def _dispatch_fix(
945
1048
  Prefers the same machine as the original worker (the branch is already
946
1049
  checked out there). Falls back to any capable machine.
947
1050
 
948
- #1176: the dispatched type mirrors ``work.type`` for ``"test-author"``
949
- (with ``TEST_AUTHOR_SYSTEM_PROMPT`` + its deny-list, since the fix needs
950
- the same acceptance-path authorization and independence rules as the
951
- original test-author dispatch); every other source type still gets the
952
- long-standing plain ``"work"`` fix.
1051
+ #1176/#2302: the dispatched type mirrors ``work.type`` for any
1052
+ :data:`coord.models.SEALED_PATH_AUTHOR_TYPES` member (``"test-author"``,
1053
+ ``"mock-author"``) — those types are the ones ``coord/review.py``
1054
+ inverts its sealed-path tamper rule for, so a fix that needs to write
1055
+ back into ``tests/acceptance/ms-NN/`` must carry the same type as the
1056
+ row it's fixing or every round trips "TAMPER DETECTED" until the
1057
+ iteration cap burns out. ``test-author`` additionally needs
1058
+ ``TEST_AUTHOR_SYSTEM_PROMPT`` + its deny-list injected explicitly since
1059
+ ``agent.py`` has no dispatch-table branch for it; ``mock-author``
1060
+ doesn't — ``agent.py``'s own ``elif spec.type == "mock-author"`` branch
1061
+ supplies its system prompt and deny-list unconditionally. Every other
1062
+ source type still gets the long-standing plain ``"work"`` fix.
953
1063
 
954
1064
  Returns the new Assignment (already added to ``board.active``), or None
955
1065
  on failure.
@@ -1016,12 +1126,16 @@ def _dispatch_fix(
1016
1126
  if repo is None:
1017
1127
  return None
1018
1128
 
1019
- # #1176: preserve the source row's type for a test-author slice fix —
1020
- # dispatching `type="work"` sends a plain worker that is forbidden from
1021
- # (and never given the system prompt authorizing) exactly the
1022
- # `tests/acceptance/**` path it needs to fix. Every other source type
1023
- # (including today's "work") keeps the long-standing "work" fix.
1024
- fix_type = "test-author" if work.type == "test-author" else "work"
1129
+ # #1176/#2302: preserve the source row's type for a sealed-path-author
1130
+ # slice fix (test-author, mock-author) — dispatching `type="work"`
1131
+ # sends a plain worker that is forbidden from (and never given the
1132
+ # system prompt authorizing) exactly the `tests/acceptance/**` path it
1133
+ # needs to fix. Derived from SEALED_PATH_AUTHOR_TYPES rather than a
1134
+ # hardcoded string so this stays in sync with that set — see the
1135
+ # FIX_DISPATCH_TYPES comment above for the class of bug that guards
1136
+ # against. Every other source type (including today's "work") keeps
1137
+ # the long-standing "work" fix.
1138
+ fix_type = work.type if work.type in SEALED_PATH_AUTHOR_TYPES else "work"
1025
1139
 
1026
1140
  payload = {
1027
1141
  "repo_name": work.repo_name,
@@ -1054,6 +1168,12 @@ def _dispatch_fix(
1054
1168
  # stay-RED rules a test-author session needs.
1055
1169
  payload["system_prompt"] = TEST_AUTHOR_SYSTEM_PROMPT
1056
1170
  payload["deny_commands"] = test_author_deny_commands(config, work.repo_name)
1171
+ # #2302: no analogous branch for `fix_type == "mock-author"` — unlike
1172
+ # test-author, `agent.py`'s `elif spec.type == "mock-author"` branch
1173
+ # already supplies `MOCK_AUTHOR_SYSTEM_PROMPT` and unconditionally
1174
+ # appends `MOCK_AUTHOR_DENY_COMMANDS` regardless of `spec.deny_commands`,
1175
+ # so injecting either here would be redundant with what the agent-side
1176
+ # dispatch table already does purely from `type="mock-author"`.
1057
1177
  # Escalated model per bounce iteration (None when pipeline
1058
1178
  # .escalate_fix_model is disabled — preserves today's no-model behaviour).
1059
1179
  # The board record keeps the alias for legibility; the wire payload is
@@ -1053,7 +1053,13 @@ def dispatch_stalled_pipeline_action(
1053
1053
 
1054
1054
  Gated by ``config.pipeline.auto_dispatch_stalled`` (default ``False`` —
1055
1055
  detection/narration via :func:`post_stalled_pipeline` is unconditional;
1056
- this is the opt-in action half). Mutates *board* in place exactly like
1056
+ this is the opt-in action half) — EXCEPT for a ``review_request_changes_
1057
+ no_fix`` stall on a :data:`coord.models.SEALED_PATH_AUTHOR_TYPES` row
1058
+ (``test-author``/``mock-author``), which dispatches regardless of the
1059
+ flag: no loop owns that row (#2302), so the flag would only leave it
1060
+ stalled forever with no alternative dispatcher to race. ``work`` rows
1061
+ under the same reason keep the opt-in gate — ``coord drive`` owns those.
1062
+ Mutates *board* in place exactly like
1057
1063
  the auto-loop / review-dispatch helpers it delegates to — the caller is
1058
1064
  responsible for persisting it.
1059
1065
 
@@ -1096,7 +1102,23 @@ def dispatch_stalled_pipeline_action(
1096
1102
  mirroring the one-shot comment (#1441's own guardrail, reused rather
1097
1103
  than re-derived per #1478's own request).
1098
1104
  """
1099
- if not config.pipeline.auto_dispatch_stalled:
1105
+ # #2302: `pipeline.auto_dispatch_stalled` exists to bound blast radius on
1106
+ # rows another loop already owns (`coord drive`'s request-changes → fix
1107
+ # arm for `work` rows, #1692) — a second dispatcher racing that loop
1108
+ # would duplicate or clobber its fix. A `request-changes` stall on a
1109
+ # SEALED_PATH_AUTHOR_TYPES row (`test-author`/`mock-author`, Gate A/JIT
1110
+ # acceptance slices) has no such owner: `coord drive` explicitly `_die()`s
1111
+ # on those, and `coord acceptance mock` dispatches Gate A standalone with
1112
+ # no drive run over it at all (see #2289). So this one reason+type
1113
+ # combination bypasses the flag — every other reason, and `work` rows
1114
+ # under this same reason, keep the opt-in gate unchanged.
1115
+ from coord.models import SEALED_PATH_AUTHOR_TYPES # noqa: PLC0415
1116
+
1117
+ sealed_author_stall = (
1118
+ detection.reason == "review_request_changes_no_fix"
1119
+ and work.type in SEALED_PATH_AUTHOR_TYPES
1120
+ )
1121
+ if not config.pipeline.auto_dispatch_stalled and not sealed_author_stall:
1100
1122
  return StalledDispatchAction(
1101
1123
  kind="disabled", detail="pipeline.auto_dispatch_stalled is False",
1102
1124
  )
@@ -120,6 +120,7 @@ class ClaudeProvider(Provider):
120
120
  _sealed_write_guard_tools,
121
121
  build_deny_prompt,
122
122
  )
123
+ from coord.smoke import SMOKE_SYSTEM_PROMPT # noqa: PLC0415
123
124
 
124
125
  binary = self._binary if self._binary is not None else DEFAULT_WORKER_BINARY
125
126
 
@@ -170,12 +171,22 @@ class ClaudeProvider(Provider):
170
171
  _sp = spec.system_prompt if spec.system_prompt else MOCK_AUTHOR_SYSTEM_PROMPT
171
172
  _sp += build_deny_prompt(MOCK_AUTHOR_DENY_COMMANDS)
172
173
  _at = "Read,Edit,Write,Bash"
174
+ elif spec.type == "smoke":
175
+ # #2301: keep in sync with default_worker_command's identical
176
+ # branch — smoke gets Read,Bash only, deliberately WITHOUT
177
+ # Monitor (an await-a-notification tool that ends a smoke
178
+ # leg's one-shot session before any wake-up can arrive) or
179
+ # Edit/Write (a smoke leg validates; it never mutates).
180
+ _sp = spec.system_prompt if spec.system_prompt else SMOKE_SYSTEM_PROMPT
181
+ _sp += build_deny_prompt(spec.deny_commands)
182
+ _at = "Read,Bash"
173
183
  else:
174
184
  _sp = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
175
185
  _sp += build_deny_prompt(spec.deny_commands)
176
186
  # #2169: keep in sync with default_worker_command's identical
177
187
  # branch — Monitor is the sanctioned bounded-poll tool for a
178
- # backgrounded long-running command.
188
+ # backgrounded long-running command. #2301: this grant is for
189
+ # work-shaped legs only — smoke has its own branch above.
179
190
  _at = "Read,Edit,Write,Bash,Monitor"
180
191
 
181
192
  if system_prompt is None:
@@ -485,13 +485,26 @@ class ClaudePtyProvider(Provider):
485
485
  _sp = spec.system_prompt if spec.system_prompt else MILESTONE_CHAT_SYSTEM_PROMPT
486
486
  _sp += build_deny_prompt(MILESTONE_CHAT_DENY_COMMANDS)
487
487
  _at = "Read,Bash"
488
+ elif spec.type == "smoke":
489
+ # #2301: keep in sync with default_worker_command's and
490
+ # ClaudeProvider.build_command's identical branch — smoke
491
+ # gets SMOKE_SYSTEM_PROMPT and Read,Bash only, deliberately
492
+ # WITHOUT `Monitor` (an await-a-notification tool: calling it
493
+ # ends the turn, which ends a one-shot leg's session before
494
+ # any wake-up can arrive) and without Edit/Write (a smoke leg
495
+ # validates; it never mutates).
496
+ from coord.smoke import SMOKE_SYSTEM_PROMPT # noqa: PLC0415
497
+ _sp = spec.system_prompt if spec.system_prompt else SMOKE_SYSTEM_PROMPT
498
+ _sp += build_deny_prompt(spec.deny_commands)
499
+ _at = "Read,Bash"
488
500
  else:
489
501
  _sp = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
490
502
  _sp += build_deny_prompt(spec.deny_commands)
491
503
  # #2169: keep in sync with default_worker_command's and
492
504
  # ClaudeProvider.build_command's identical branch — Monitor
493
505
  # is the sanctioned bounded-poll tool for a backgrounded
494
- # long-running command.
506
+ # long-running command. #2301: that grant is for *work*-shaped
507
+ # legs only — smoke has its own branch above.
495
508
  _at = "Read,Edit,Write,Bash,Monitor"
496
509
 
497
510
  if system_prompt is None:
@@ -111,13 +111,24 @@ suite off and stopping there prints no marker, so the Test stage records NO \
111
111
  verdict and re-dispatches; because the ceiling is deterministic, every \
112
112
  re-dispatch does exactly the same thing, which is why this loop bills \
113
113
  indefinitely. Instead: POLL the backgrounded task to completion from THIS \
114
- same session, in bounded steps (`BashOutput`/`TaskOutput` with the id, or \
115
- `Monitor`), and read its REAL exit status before you report anything. Do NOT \
116
- use a foreground `until ! pgrep ...; do sleep ...; done` wait — it hits the \
117
- identical 600s wall. If you genuinely cannot obtain an exit status before you \
118
- run out of room, print `SMOKE: fail <the smoke command never returned an exit \
119
- status within this session>` rather than ending mute: a stated verdict is \
120
- recoverable, silence is not.
114
+ same session, in bounded steps, with `BashOutput`/`TaskOutput` and the task \
115
+ id, and read its REAL exit status before you report anything. Do NOT use a \
116
+ foreground `until ! pgrep ...; do sleep ...; done` wait — it hits the \
117
+ identical 600s wall.
118
+ - NEVER USE `Monitor` OR ANY OTHER AWAIT-A-NOTIFICATION TOOL TO WAIT FOR A \
119
+ RESULT (#2301). Those tools work by ending your turn so the harness can wake \
120
+ the model back up once the condition they're watching fires — that only \
121
+ resumes anything in an INTERACTIVE session. This is a one-shot `claude -p` \
122
+ session: ending your turn ends the session itself, permanently, and no \
123
+ notification will ever arrive to resume it. The backgrounded suite you were \
124
+ polling is then reaped mid-run by the coordinator, and you have printed no \
125
+ verdict marker — exactly the silent failure the previous bullet exists to \
126
+ prevent, just reached by a different tool. Only `BashOutput`/`TaskOutput` \
127
+ return synchronously without ending your turn; those are the only \
128
+ correct way to poll a backgrounded task from here. If you genuinely cannot \
129
+ obtain an exit status before you run out of room, print `SMOKE: fail <the \
130
+ smoke command never returned an exit status within this session>` rather \
131
+ than ending mute: a stated verdict is recoverable, silence is not.
121
132
 
122
133
  Where you are:
123
134
  - You are in a dedicated git worktree created for this run. Every git command \
@@ -1134,6 +1134,64 @@ def test_default_worker_command_resume_flag_present() -> None:
1134
1134
  assert argv[idx + 1] == "ses-abc123"
1135
1135
 
1136
1136
 
1137
+ # ── #2301: smoke legs must not hold Monitor (or Edit/Write) ────────────────
1138
+ #
1139
+ # Root cause: smoke fell through to the generic `else` branch and inherited
1140
+ # the #2169 `Monitor` grant meant for *work*-shaped legs. `Monitor` is an
1141
+ # await-a-notification tool — calling it ends the current turn to wait for a
1142
+ # wake-up condition, which only resumes anything in an INTERACTIVE session.
1143
+ # Every coord leg, smoke included, is a one-shot `claude -p` session (#1394):
1144
+ # ending the turn ends the session itself, permanently, before any
1145
+ # notification can arrive. Two real smoke legs did exactly this — reached
1146
+ # `Monitor` via ToolSearch to poll a backgrounded `cargo test`, ended their
1147
+ # turn to "wait" for it, and died 16-24s later with no verdict printed, while
1148
+ # the backgrounded suite was reaped out from under them ~30s after that.
1149
+
1150
+
1151
+ def _smoke_spec(**overrides) -> AssignmentSpec:
1152
+ base = dict(
1153
+ repo_name="api",
1154
+ repo_path="/tmp/repo",
1155
+ issue_number=2301,
1156
+ issue_title="[smoke] t",
1157
+ briefing="b",
1158
+ branch="main",
1159
+ type="smoke",
1160
+ )
1161
+ base.update(overrides)
1162
+ return AssignmentSpec(**base)
1163
+
1164
+
1165
+ def test_default_worker_command_smoke_type_does_not_grant_monitor() -> None:
1166
+ argv = default_worker_command(_smoke_spec())
1167
+ allowed = argv[argv.index("--allowedTools") + 1].split(",")
1168
+ assert "Monitor" not in allowed
1169
+
1170
+
1171
+ def test_default_worker_command_smoke_type_gets_read_bash_only() -> None:
1172
+ """A smoke leg validates; it never mutates — no Edit/Write either."""
1173
+ argv = default_worker_command(_smoke_spec())
1174
+ allowed = argv[argv.index("--allowedTools") + 1]
1175
+ assert allowed == "Read,Bash"
1176
+
1177
+
1178
+ def test_default_worker_command_smoke_type_uses_smoke_system_prompt() -> None:
1179
+ """Confirms the smoke branch's default system prompt is
1180
+ coord.smoke.SMOKE_SYSTEM_PROMPT, not the generic WORKER_SYSTEM_PROMPT
1181
+ the old fall-through `else` branch would have used."""
1182
+ from coord.smoke import SMOKE_SYSTEM_PROMPT
1183
+
1184
+ argv = default_worker_command(_smoke_spec())
1185
+ system_prompt = argv[argv.index("--system-prompt") + 1]
1186
+ assert system_prompt.startswith(SMOKE_SYSTEM_PROMPT)
1187
+
1188
+
1189
+ def test_default_worker_command_smoke_type_honours_explicit_system_prompt() -> None:
1190
+ argv = default_worker_command(_smoke_spec(system_prompt="custom smoke prompt"))
1191
+ system_prompt = argv[argv.index("--system-prompt") + 1]
1192
+ assert system_prompt.startswith("custom smoke prompt")
1193
+
1194
+
1137
1195
  # ── #1315: structural sealing enforcement (write-guard) ─────────────────────
1138
1196
 
1139
1197