code-coordinator 0.5.106__tar.gz → 0.5.107__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.107}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/auto_loop.py +133 -13
  5. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notify.py +24 -2
  6. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_auto_loop.py +184 -0
  7. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_stalled_pipeline.py +162 -0
  8. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.claude/commands/board.md +0 -0
  9. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.claude/commands/complete-session.md +0 -0
  10. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.claude/commands/coordinator.md +0 -0
  11. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.githooks/_lib.sh +0 -0
  12. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.githooks/post-checkout +0 -0
  13. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.githooks/post-commit +0 -0
  14. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.githooks/post-merge +0 -0
  15. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  16. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.github/coord-ci-acceptance.yml +0 -0
  17. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.github/workflows/auto-release.yml +0 -0
  18. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.github/workflows/cargo-test.yml +0 -0
  19. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.github/workflows/publish.yml +0 -0
  20. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.github/workflows/release-tui.yml +0 -0
  21. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.github/workflows/test.yml +0 -0
  22. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/.gitignore +0 -0
  23. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/CLAUDE.md +0 -0
  24. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/GOAL.md +0 -0
  25. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/LICENSE +0 -0
  26. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/MANIFEST.in +0 -0
  27. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/README.md +0 -0
  28. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/SOURCES.txt +0 -0
  29. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/dependency_links.txt +0 -0
  30. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/entry_points.txt +0 -0
  31. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/requires.txt +0 -0
  32. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/scm_file_list.json +0 -0
  33. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/code_coordinator.egg-info/top_level.txt +0 -0
  34. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/__init__.py +0 -0
  35. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/_board_mapping.py +0 -0
  36. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/acceptance.py +0 -0
  37. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/acceptance_drivers.py +0 -0
  38. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/agent.py +0 -0
  39. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/agent_app.py +0 -0
  40. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/agent_update.py +0 -0
  41. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/agents/opencode/.gitignore +0 -0
  42. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/agents/opencode/agents/work.md +0 -0
  43. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/agents/opencode/routing.jsonc +0 -0
  44. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/audit.py +0 -0
  45. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/block_log.py +0 -0
  46. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/board_bool_guard.py +0 -0
  47. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/board_service.py +0 -0
  48. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/board_wire.py +0 -0
  49. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/brain.py +0 -0
  50. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/branch_model.py +0 -0
  51. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/bug_intake.py +0 -0
  52. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/cargo_cache.py +0 -0
  53. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/ci_github.py +0 -0
  54. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/ci_store.py +0 -0
  55. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/claim.py +0 -0
  56. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/cli.py +0 -0
  57. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/client.py +0 -0
  58. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/__init__.py +0 -0
  59. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/_common.py +0 -0
  60. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/acceptance.py +0 -0
  61. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/agent_ops.py +0 -0
  62. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/audit.py +0 -0
  63. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/chat.py +0 -0
  64. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/dispatch.py +0 -0
  65. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/dispatch_workers.py +0 -0
  66. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/drive.py +0 -0
  67. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/drive_queue.py +0 -0
  68. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/gate_a.py +0 -0
  69. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/gates.py +0 -0
  70. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/issues.py +0 -0
  71. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/lifecycle.py +0 -0
  72. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/merge.py +0 -0
  73. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/milestone.py +0 -0
  74. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/plan_followup.py +0 -0
  75. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/plans.py +0 -0
  76. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/portal.py +0 -0
  77. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/release.py +0 -0
  78. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/repo.py +0 -0
  79. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/report.py +0 -0
  80. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/review.py +0 -0
  81. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/scorecard.py +0 -0
  82. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/sessions.py +0 -0
  83. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/setup.py +0 -0
  84. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/status.py +0 -0
  85. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/terminal.py +0 -0
  86. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/test_gate.py +0 -0
  87. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/commands/tui.py +0 -0
  88. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/comments.py +0 -0
  89. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/config.py +0 -0
  90. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/config_reload.py +0 -0
  91. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/conflict_fix.py +0 -0
  92. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dao.py +0 -0
  93. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/__init__.py +0 -0
  94. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/fixture.py +0 -0
  95. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/index.html +0 -0
  96. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/server.py +0 -0
  97. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/terminal.py +0 -0
  98. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/.gitignore +0 -0
  99. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/components.json +0 -0
  100. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/assets/Gallery-Cq84itDE.js +0 -0
  101. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  102. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/assets/Terminal-DOXLcMue.js +0 -0
  103. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/assets/index-DHn-RIJ8.js +0 -0
  104. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  105. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  106. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  107. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  108. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  109. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/index.html +0 -0
  110. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  111. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/sw.js +0 -0
  112. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  113. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  114. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  115. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  116. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  117. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  118. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  119. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  120. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  121. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  122. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/eslint.config.js +0 -0
  123. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/index.html +0 -0
  124. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  125. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/package-lock.json +0 -0
  126. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/package.json +0 -0
  127. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  128. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/playwright.config.ts +0 -0
  129. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/postcss.config.js +0 -0
  130. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  131. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  132. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  133. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/App.tsx +0 -0
  134. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/api/client.ts +0 -0
  135. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  136. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  137. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  138. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  139. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  140. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  141. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  142. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  143. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  144. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  145. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  146. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  147. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  148. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  149. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  150. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  151. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  152. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  153. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  154. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  155. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  156. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  157. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  158. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  159. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  160. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  161. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  162. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  163. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  164. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  165. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  166. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  167. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  168. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  169. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  170. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/index.css +0 -0
  171. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  172. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  173. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/main.tsx +0 -0
  174. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  175. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  176. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  177. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  178. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  179. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  180. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  181. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  182. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  183. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  184. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  185. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  186. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  187. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  188. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  189. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  190. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  191. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  192. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  193. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  194. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  195. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  196. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  197. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/tailwind.config.js +0 -0
  198. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/tsconfig.json +0 -0
  199. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  200. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dashboard/webapp/vite.config.ts +0 -0
  201. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/db.py +0 -0
  202. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dead_end.py +0 -0
  203. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/README.md +0 -0
  204. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-agent.service +0 -0
  205. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-db-backup.service +0 -0
  206. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-db-backup.sh +0 -0
  207. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-db-backup.timer +0 -0
  208. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-drive-queue.service +0 -0
  209. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-drive-queue.timer +0 -0
  210. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-notify.service +0 -0
  211. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-notify.timer +0 -0
  212. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-release-propagate.service +0 -0
  213. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-release-propagate.timer +0 -0
  214. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-release-window.service +0 -0
  215. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-release-window.timer +0 -0
  216. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-serve.service +0 -0
  217. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-web-dist-build.service +0 -0
  218. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-web-dist-build.timer +0 -0
  219. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy/coord-web.service +0 -0
  220. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy_manifest.py +0 -0
  221. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deploy_units.py +0 -0
  222. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/deps.py +0 -0
  223. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/diagnose.py +0 -0
  224. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dispatch.py +0 -0
  225. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/dist_name.py +0 -0
  226. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/drive.py +0 -0
  227. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/drive_queue.py +0 -0
  228. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/drive_state.py +0 -0
  229. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/events.py +0 -0
  230. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/failure_class.py +0 -0
  231. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/filelock.py +0 -0
  232. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/fleet_config_health.py +0 -0
  233. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/freshness.py +0 -0
  234. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/gate_a.py +0 -0
  235. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/gate_b.py +0 -0
  236. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/gate_snapshot.py +0 -0
  237. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/gates.py +0 -0
  238. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/github_ops.py +0 -0
  239. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/goal.py +0 -0
  240. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/graph_health.py +0 -0
  241. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/__init__.py +0 -0
  242. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/aggregate.py +0 -0
  243. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/__init__.py +0 -0
  244. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/agent_install.py +0 -0
  245. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/cargo_targets.py +0 -0
  246. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/claude_binary.py +0 -0
  247. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/deploy_lane_facts.py +0 -0
  248. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/disk.py +0 -0
  249. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/fleet_board.py +0 -0
  250. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  251. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/fleet_phantom.py +0 -0
  252. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/fleet_unit_drift.py +0 -0
  253. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/graph.py +0 -0
  254. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/graphify_cli.py +0 -0
  255. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/index_lock.py +0 -0
  256. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/plan_usage.py +0 -0
  257. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/repo_state.py +0 -0
  258. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/spawned_coord.py +0 -0
  259. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/timer_active.py +0 -0
  260. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/toolchain.py +0 -0
  261. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/unit_drift.py +0 -0
  262. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/unit_enablement.py +0 -0
  263. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/checks/worktrees.py +0 -0
  264. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/cli.py +0 -0
  265. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/context.py +0 -0
  266. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/fleet_snapshot.py +0 -0
  267. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/models.py +0 -0
  268. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/pypi.py +0 -0
  269. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/registry.py +0 -0
  270. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/render.py +0 -0
  271. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/health/units.py +0 -0
  272. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/hooks.py +0 -0
  273. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/housekeeping.py +0 -0
  274. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/interactive.py +0 -0
  275. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/issue_store.py +0 -0
  276. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/liveness_auditor.py +0 -0
  277. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/machine_pause.py +0 -0
  278. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/merge_queue.py +0 -0
  279. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/milestone_chat.py +0 -0
  280. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/milestone_dispatch.py +0 -0
  281. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/milestone_gate.py +0 -0
  282. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/milestone_order.py +0 -0
  283. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/mock_author.py +0 -0
  284. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/models.py +0 -0
  285. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/network.py +0 -0
  286. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/new_issue_chat.py +0 -0
  287. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/__init__.py +0 -0
  288. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/baseline.py +0 -0
  289. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/cli.py +0 -0
  290. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/collect.py +0 -0
  291. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/digest.py +0 -0
  292. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/models.py +0 -0
  293. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/predicate.py +0 -0
  294. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/service.py +0 -0
  295. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/store.py +0 -0
  296. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/notifier/transport.py +0 -0
  297. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/openapi.py +0 -0
  298. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/overlap_fence.py +0 -0
  299. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/overlap_predict.py +0 -0
  300. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/parentage.py +0 -0
  301. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/parentage_github.py +0 -0
  302. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/pipeline.py +0 -0
  303. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/plan_parser.py +0 -0
  304. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/plans.py +0 -0
  305. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/platform_paths.py +0 -0
  306. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/portal_bridge.py +0 -0
  307. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/portal_store.py +0 -0
  308. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/portal_sync.py +0 -0
  309. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/pr_body_lint.py +0 -0
  310. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/prereqs.py +0 -0
  311. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/progress.py +0 -0
  312. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/providers/__init__.py +0 -0
  313. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/providers/base.py +0 -0
  314. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/providers/claude.py +0 -0
  315. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/providers/claude_pty.py +0 -0
  316. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/providers/opencode.py +0 -0
  317. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/queue_diagnose.py +0 -0
  318. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/reconcile.py +0 -0
  319. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/refine_chat.py +0 -0
  320. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/release_cordon.py +0 -0
  321. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/release_propagate.py +0 -0
  322. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/release_verify.py +0 -0
  323. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/release_window.py +0 -0
  324. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/repo_edit.py +0 -0
  325. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/repo_onboard.py +0 -0
  326. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/reports.py +0 -0
  327. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/revalidate.py +0 -0
  328. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/review.py +0 -0
  329. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/scorecard.py +0 -0
  330. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/serve_app.py +0 -0
  331. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/skills/update-issue/SKILL.md +0 -0
  332. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/smoke.py +0 -0
  333. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/spend_ceiling.py +0 -0
  334. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/split_work.py +0 -0
  335. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/stage_projection.py +0 -0
  336. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/state.py +0 -0
  337. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/test_author.py +0 -0
  338. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/test_chat.py +0 -0
  339. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/test_orchestrator.py +0 -0
  340. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/test_report.py +0 -0
  341. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/tui_release.py +0 -0
  342. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/usage.py +0 -0
  343. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/usage_limits.py +0 -0
  344. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/usage_rollup.py +0 -0
  345. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coord/worker_events.py +0 -0
  346. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/coordinator.example.yml +0 -0
  347. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-agent.service +0 -0
  348. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-db-backup.service +0 -0
  349. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-db-backup.sh +0 -0
  350. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-db-backup.timer +0 -0
  351. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-drive-queue.service +0 -0
  352. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-drive-queue.timer +0 -0
  353. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-notify.service +0 -0
  354. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-notify.timer +0 -0
  355. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-release-propagate.service +0 -0
  356. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-release-propagate.timer +0 -0
  357. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-release-window.service +0 -0
  358. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-release-window.timer +0 -0
  359. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-serve.service +0 -0
  360. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-web-dist-build.service +0 -0
  361. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-web-dist-build.sh +0 -0
  362. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-web-dist-build.timer +0 -0
  363. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-web-rollback.sh +0 -0
  364. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/coord-web.service +0 -0
  365. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/deploy/node-shim.sh +0 -0
  366. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/AGENT_OPERATIONS.md +0 -0
  367. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/ARCHITECTURE.md +0 -0
  368. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/ARCH_SECURITY_GATES.md +0 -0
  369. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/COCKPIT.md +0 -0
  370. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/CONTROL_CENTER.md +0 -0
  371. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/COST_DISCIPLINE.md +0 -0
  372. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/CROSS_PLATFORM.md +0 -0
  373. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/CUSTOMER_PORTAL.md +0 -0
  374. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/DRIVE_QUEUE.md +0 -0
  375. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/EPHEMERAL_WORKERS.md +0 -0
  376. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/FORGE_MIGRATION.md +0 -0
  377. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/GRAPHIFY_SETUP.md +0 -0
  378. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/ISSUE_GUIDANCE.md +0 -0
  379. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/MAC_MINI.md +0 -0
  380. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  381. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/NOTIFIER.md +0 -0
  382. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/OPENCODE_VERIFICATION.md +0 -0
  383. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/OPERATING_GOTCHAS.md +0 -0
  384. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/ORACLE_LOOP.md +0 -0
  385. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/PHONE_WEBAPP.md +0 -0
  386. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/PIPELINE_V2.md +0 -0
  387. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/PLATFORM_EVOLUTION.md +0 -0
  388. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/SECOND_BACKEND.md +0 -0
  389. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/STORE_SERVICE.md +0 -0
  390. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  391. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/WEB_CONTROL_CENTER.md +0 -0
  392. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/mocks/web/README.md +0 -0
  393. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/mocks/web/_tokens.css +0 -0
  394. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/mocks/web/issue-detail.html +0 -0
  395. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/mocks/web/pipeline-narrow.html +0 -0
  396. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/docs/mocks/web/pipeline-wide.html +0 -0
  397. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/graphify-out/.gitignore +0 -0
  398. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/install-agent.sh +0 -0
  399. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/pyproject.toml +0 -0
  400. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/audit_review_verdict_overrides.py +0 -0
  401. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  402. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/build-worker-image.sh +0 -0
  403. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/coordinator-machine.py +0 -0
  404. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/epic-down.sh +0 -0
  405. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/epic-up.sh +0 -0
  406. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/preflight.sh +0 -0
  407. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/provision-worker.sh +0 -0
  408. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  409. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  410. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/azure-workers/verify-github-token.sh +0 -0
  411. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/codegen.py +0 -0
  412. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/coord-test-runner.sh +0 -0
  413. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/drive-batch.sh +0 -0
  414. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/gen_board_fixture.py +0 -0
  415. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/next_release_tag.py +0 -0
  416. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/run_tests_in_populated_home.sh +0 -0
  417. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/run_tests_without_gh.sh +0 -0
  418. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/smoke_437_interactive.py +0 -0
  419. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/verify_878_review_capture.py +0 -0
  420. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/verify_release_published.py +0 -0
  421. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/scripts/verify_release_wheel.py +0 -0
  422. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/setup.cfg +0 -0
  423. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/SMOKE_SET.md +0 -0
  424. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/__init__.py +0 -0
  425. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  426. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-33/contract.md +0 -0
  427. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-33/manifest.yml +0 -0
  428. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  429. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  430. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  431. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  432. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-37/conftest.py +0 -0
  433. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-37/contract.md +0 -0
  434. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-37/manifest.yml +0 -0
  435. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  436. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  437. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/contract.md +0 -0
  438. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/manifest.yml +0 -0
  439. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  440. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  441. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  442. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  443. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  444. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  445. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  446. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  447. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  448. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  449. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-51/contract.md +0 -0
  450. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  451. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  452. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-51/manifest.yml +0 -0
  453. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  454. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-51/tsconfig.json +0 -0
  455. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  456. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/conftest.py +0 -0
  457. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/board-pipeline-basic.json +0 -0
  458. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  459. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  460. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  461. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/playwright/all_pass.json +0 -0
  462. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  463. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/playwright/mixed_fail.json +0 -0
  464. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  465. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  466. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/playwright/skip.json +0 -0
  467. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/playwright/truncated.json +0 -0
  468. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  469. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  470. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  471. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  472. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  473. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  474. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  475. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  476. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_acceptance.py +0 -0
  477. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_acceptance_drivers.py +0 -0
  478. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent.py +0 -0
  479. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_api_error.py +0 -0
  480. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_app.py +0 -0
  481. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_branch_base.py +0 -0
  482. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_branch_capture.py +0 -0
  483. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_config_free_1712.py +0 -0
  484. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_deploy_units_endpoint.py +0 -0
  485. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_dirty_worktree.py +0 -0
  486. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_graph_self_heal.py +0 -0
  487. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_health_h3.py +0 -0
  488. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_idle_restart.py +0 -0
  489. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_push_failure.py +0 -0
  490. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_reap.py +0 -0
  491. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_repos_and_pull.py +0 -0
  492. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_restart_services_endpoint.py +0 -0
  493. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_startup_diagnostics.py +0 -0
  494. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_update.py +0 -0
  495. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_update_bluegreen.py +0 -0
  496. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_usage_limit.py +0 -0
  497. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_agent_zero_commit.py +0 -0
  498. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_ambient_home_isolation.py +0 -0
  499. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_approve_reject_plan.py +0 -0
  500. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_approve_usage_gate.py +0 -0
  501. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_assignment_already_recorded_daemon.py +0 -0
  502. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_audit_log.py +0 -0
  503. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_audit_outcome.py +0 -0
  504. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_audit_query.py +0 -0
  505. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_auto_release_publish_2035.py +0 -0
  506. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_base_checkout_restore.py +0 -0
  507. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_block_log.py +0 -0
  508. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_board_cap_762.py +0 -0
  509. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_board_fixture.py +0 -0
  510. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_board_read_path.py +0 -0
  511. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_board_service.py +0 -0
  512. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_board_state.py +0 -0
  513. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_board_wire.py +0 -0
  514. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_brain.py +0 -0
  515. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_branch_model.py +0 -0
  516. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_bug_intake.py +0 -0
  517. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_build_worker_image_env_update.py +0 -0
  518. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cargo_cache.py +0 -0
  519. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_ci_acceptance_gate_1950.py +0 -0
  520. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_ci_parity_2091.py +0 -0
  521. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_ci_store.py +0 -0
  522. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_claim.py +0 -0
  523. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_acceptance.py +0 -0
  524. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_assign.py +0 -0
  525. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  526. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_assign_interactive_remote.py +0 -0
  527. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_assign_provider.py +0 -0
  528. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  529. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_audit.py +0 -0
  530. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_chat_continue.py +0 -0
  531. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_diagnose_config_provenance.py +0 -0
  532. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_diagnose_graph.py +0 -0
  533. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_doctor.py +0 -0
  534. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_doctor_config_free_1801.py +0 -0
  535. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  536. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_drive.py +0 -0
  537. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_drive_queue.py +0 -0
  538. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_escalate.py +0 -0
  539. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_fix_headless_review.py +0 -0
  540. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_gate_a.py +0 -0
  541. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_install_drift.py +0 -0
  542. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_install_skills.py +0 -0
  543. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_issue_create_label.py +0 -0
  544. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_issue_reopen.py +0 -0
  545. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_merge.py +0 -0
  546. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_assign.py +0 -0
  547. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_capture.py +0 -0
  548. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_chat_add_child.py +0 -0
  549. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_dispatch.py +0 -0
  550. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_gate_b.py +0 -0
  551. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_gate_c.py +0 -0
  552. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_order.py +0 -0
  553. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  554. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_milestone_ship.py +0 -0
  555. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_network.py +0 -0
  556. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_new_issue_chat.py +0 -0
  557. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_plans.py +0 -0
  558. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_portal.py +0 -0
  559. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_pull_artifact.py +0 -0
  560. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_queue.py +0 -0
  561. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_reattach_sessions.py +0 -0
  562. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_refine_board.py +0 -0
  563. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_release_preflight.py +0 -0
  564. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_release_propagate.py +0 -0
  565. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_release_window.py +0 -0
  566. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_repo_2220.py +0 -0
  567. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_scorecard.py +0 -0
  568. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_set_review_findings.py +0 -0
  569. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_status_advisory_terminal.py +0 -0
  570. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_status_merge_queue.py +0 -0
  571. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_status_provider.py +0 -0
  572. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_status_review_finalizing.py +0 -0
  573. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_status_test_failed_tag.py +0 -0
  574. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_status_usage_limit.py +0 -0
  575. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_sync_comments_873.py +0 -0
  576. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_test_plan.py +0 -0
  577. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_track.py +0 -0
  578. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_tui_update.py +0 -0
  579. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cli_wait.py +0 -0
  580. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_client_base_install.py +0 -0
  581. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_comments.py +0 -0
  582. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_completion_summary.py +0 -0
  583. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_config.py +0 -0
  584. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_config_acceptance.py +0 -0
  585. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_config_audit.py +0 -0
  586. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_config_pricing.py +0 -0
  587. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  588. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_config_usage_gate.py +0 -0
  589. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_conflict_fix.py +0 -0
  590. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_conflict_fix_semantic.py +0 -0
  591. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_coord_test.py +0 -0
  592. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_coord_test_runner_baseline.py +0 -0
  593. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_coord_test_runner_routing.py +0 -0
  594. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_coord_test_runner_toolchain.py +0 -0
  595. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_coord_web_sse_restart_live.py +0 -0
  596. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_coordinator_machine.py +0 -0
  597. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_cross_platform_imports.py +0 -0
  598. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dashboard.py +0 -0
  599. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dashboard_fixture.py +0 -0
  600. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dashboard_terminal.py +0 -0
  601. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dashboard_terminal_live.py +0 -0
  602. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_db.py +0 -0
  603. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dead_end.py +0 -0
  604. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deploy_coord_db_backup.py +0 -0
  605. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deploy_coord_web_dist.py +0 -0
  606. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deploy_coord_web_rollback.py +0 -0
  607. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deploy_drive_queue_unit.py +0 -0
  608. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deploy_manifest.py +0 -0
  609. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deploy_units_lane.py +0 -0
  610. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deploy_web_unit.py +0 -0
  611. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_deps.py +0 -0
  612. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_diagnose.py +0 -0
  613. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dispatch.py +0 -0
  614. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dispatch_target_validation.py +0 -0
  615. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_dist_name.py +0 -0
  616. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_done_housekeeping.py +0 -0
  617. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_drive.py +0 -0
  618. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_drive_queue.py +0 -0
  619. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_drive_state.py +0 -0
  620. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_drive_tmux.py +0 -0
  621. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_epic_up_capability_detection.py +0 -0
  622. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  623. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_epic_up_image_provenance.py +0 -0
  624. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_errors.py +0 -0
  625. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_events.py +0 -0
  626. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_failure_class.py +0 -0
  627. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_filelock.py +0 -0
  628. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  629. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_fix_of_force_override.py +0 -0
  630. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_fleet_config_health.py +0 -0
  631. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_fleet_health_probes.py +0 -0
  632. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_fleet_health_snapshot.py +0 -0
  633. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_freshness.py +0 -0
  634. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_gate_a.py +0 -0
  635. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_gate_b.py +0 -0
  636. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_gate_snapshot_staleness.py +0 -0
  637. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_gates.py +0 -0
  638. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  639. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_generated_types_fixture.py +0 -0
  640. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_github_ops.py +0 -0
  641. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_goal.py +0 -0
  642. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_graph_health.py +0 -0
  643. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_graph_selfheal_absent_2237.py +0 -0
  644. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_handoff.py +0 -0
  645. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_checks.py +0 -0
  646. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_cli.py +0 -0
  647. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_cli_graph.py +0 -0
  648. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_config.py +0 -0
  649. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_context.py +0 -0
  650. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_deploy_lane_facts.py +0 -0
  651. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_incident_regression.py +0 -0
  652. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_pypi.py +0 -0
  653. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_registry.py +0 -0
  654. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_timer_active.py +0 -0
  655. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_toolchain.py +0 -0
  656. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_unit_drift.py +0 -0
  657. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_health_unit_enablement.py +0 -0
  658. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_hooks.py +0 -0
  659. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_human_attended_437.py +0 -0
  660. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_init.py +0 -0
  661. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_integration.py +0 -0
  662. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_interactive_briefing_echo.py +0 -0
  663. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_interactive_prefill_state.py +0 -0
  664. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_interactive_session_relaunch.py +0 -0
  665. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_interactive_test_verdict_backstop.py +0 -0
  666. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_interactive_token_attribution.py +0 -0
  667. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_interactive_worktree.py +0 -0
  668. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_issue_store_seam.py +0 -0
  669. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_liveness_auditor.py +0 -0
  670. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_liveness_notify.py +0 -0
  671. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_machine_pause.py +0 -0
  672. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_merge_queue.py +0 -0
  673. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_merge_verify.py +0 -0
  674. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_milestone_chat.py +0 -0
  675. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_milestone_dispatch.py +0 -0
  676. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_milestone_gate.py +0 -0
  677. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_milestone_order.py +0 -0
  678. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_milestone_seam.py +0 -0
  679. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_mock_author.py +0 -0
  680. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_model_tiering.py +0 -0
  681. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_models.py +0 -0
  682. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_models_config_labels.py +0 -0
  683. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_needs_attention.py +0 -0
  684. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_network.py +0 -0
  685. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_new_issue_chat.py +0 -0
  686. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_next_release_tag.py +0 -0
  687. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_no_direct_gh_calls.py +0 -0
  688. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_node_shim.py +0 -0
  689. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_baseline.py +0 -0
  690. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_cli.py +0 -0
  691. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_collect.py +0 -0
  692. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_config.py +0 -0
  693. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_drive_seam.py +0 -0
  694. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_isolation.py +0 -0
  695. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_predicate.py +0 -0
  696. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_quiet_hours.py +0 -0
  697. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notifier_service.py +0 -0
  698. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notify.py +0 -0
  699. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_notify_drain.py +0 -0
  700. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_openapi.py +0 -0
  701. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_operational_defaults.py +0 -0
  702. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_overlap_fence.py +0 -0
  703. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_overlap_predict.py +0 -0
  704. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_packaged_deploy_units.py +0 -0
  705. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_parentage.py +0 -0
  706. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_paste_landed.py +0 -0
  707. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_pipeline.py +0 -0
  708. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_plan_followup_approve_plan_command.py +0 -0
  709. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_plan_followup_pr_command.py +0 -0
  710. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_plan_followup_review_command.py +0 -0
  711. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_plan_only.py +0 -0
  712. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_plan_parser.py +0 -0
  713. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_platform_paths.py +0 -0
  714. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_portal_bridge.py +0 -0
  715. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_portal_config.py +0 -0
  716. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_portal_sync.py +0 -0
  717. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_pr_body_lint.py +0 -0
  718. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_prereqs.py +0 -0
  719. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_production_db_guard.py +0 -0
  720. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_progress.py +0 -0
  721. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_provider_seam.py +0 -0
  722. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_providers.py +0 -0
  723. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_providers_config_labels.py +0 -0
  724. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_providers_pty.py +0 -0
  725. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_quiet_hours.py +0 -0
  726. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_quiet_hours_store_2146.py +0 -0
  727. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reap_merged_sessions.py +0 -0
  728. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reap_stale_interactive_tick.py +0 -0
  729. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reconcile_branch.py +0 -0
  730. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reconcile_completions.py +0 -0
  731. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reconcile_merges.py +0 -0
  732. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reconcile_no_agent_record.py +0 -0
  733. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reconcile_usage_limit_done.py +0 -0
  734. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_refine_chat.py +0 -0
  735. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_release_cordon_2101.py +0 -0
  736. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  737. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_release_cordon_deadlock_2240.py +0 -0
  738. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_release_propagate.py +0 -0
  739. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_release_unified_1242.py +0 -0
  740. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_release_verify.py +0 -0
  741. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_release_window.py +0 -0
  742. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_remote_auto_prune.py +0 -0
  743. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_remote_interactive_reaper.py +0 -0
  744. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_repo_edit_2220.py +0 -0
  745. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_repo_graph_fleet_2237.py +0 -0
  746. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_repo_onboard_2220.py +0 -0
  747. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_report_result_push.py +0 -0
  748. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_reports.py +0 -0
  749. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_retry.py +0 -0
  750. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_retry_advisory_1606.py +0 -0
  751. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_retry_type_1636.py +0 -0
  752. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_revalidate.py +0 -0
  753. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review.py +0 -0
  754. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_end_review_without_verdict.py +0 -0
  755. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_parse_failure_diagnostic.py +0 -0
  756. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_reaffirm.py +0 -0
  757. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_state.py +0 -0
  758. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_verdict_backstop.py +0 -0
  759. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_verdict_override_audit.py +0 -0
  760. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_verdict_relay.py +0 -0
  761. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_review_zero_commits.py +0 -0
  762. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_scoped_review_wiring.py +0 -0
  763. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_scorecard.py +0 -0
  764. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_serve.py +0 -0
  765. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_serve_app_board_trim.py +0 -0
  766. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_session.py +0 -0
  767. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_slice_issue_attribution.py +0 -0
  768. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_smoke.py +0 -0
  769. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_smoke_live_checkout_restore.py +0 -0
  770. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_smoke_workflow.py +0 -0
  771. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_spend_ceiling.py +0 -0
  772. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_spend_ceiling_coordinator.py +0 -0
  773. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_split.py +0 -0
  774. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_split_work.py +0 -0
  775. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_stage_projection.py +0 -0
  776. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_state.py +0 -0
  777. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_state_review_findings_daemon.py +0 -0
  778. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_status_fleet_footer.py +0 -0
  779. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_stop_1567.py +0 -0
  780. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_stuck.py +0 -0
  781. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_terminal_command.py +0 -0
  782. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_test_author.py +0 -0
  783. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_test_chat.py +0 -0
  784. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_test_orchestrator.py +0 -0
  785. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_test_report.py +0 -0
  786. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_test_verdict_parsing.py +0 -0
  787. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_test_verdict_transcript_floor.py +0 -0
  788. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_thin_client_board_audit.py +0 -0
  789. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_thin_client_config_load_1080.py +0 -0
  790. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_thin_client_daemon_routing_906.py +0 -0
  791. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_tmux_host.py +0 -0
  792. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_tmux_session.py +0 -0
  793. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_transcript_floor.py +0 -0
  794. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_usage.py +0 -0
  795. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_usage_limits.py +0 -0
  796. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_usage_rollup.py +0 -0
  797. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_venv_live_install_2121.py +0 -0
  798. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_version_single_source.py +0 -0
  799. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_watch.py +0 -0
  800. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_worker_events.py +0 -0
  801. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_worker_image_pin_sync.py +0 -0
  802. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_worker_safety.py +0 -0
  803. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_worker_test_scoping.py +0 -0
  804. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_worktree.py +0 -0
  805. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  806. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/Cargo.lock +0 -0
  807. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/Cargo.toml +0 -0
  808. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/cargo-config-local-quadraui.toml.example +0 -0
  809. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/audit.rs +0 -0
  810. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/chat.rs +0 -0
  811. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/data.rs +0 -0
  812. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/dialogs.rs +0 -0
  813. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/drive.rs +0 -0
  814. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/drive_queue.rs +0 -0
  815. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/escalation.rs +0 -0
  816. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/events.rs +0 -0
  817. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/fixtures.rs +0 -0
  818. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/fleet_health.rs +0 -0
  819. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/fleet_sessions.rs +0 -0
  820. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/fleet_terminals.rs +0 -0
  821. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/format.rs +0 -0
  822. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/milestone_dag.rs +0 -0
  823. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/mod.rs +0 -0
  824. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/msv.rs +0 -0
  825. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/pipeline.rs +0 -0
  826. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/plans.rs +0 -0
  827. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/render.rs +0 -0
  828. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/reports.rs +0 -0
  829. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/sessions.rs +0 -0
  830. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/settings_ui.rs +0 -0
  831. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/sidebar.rs +0 -0
  832. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/terminal.rs +0 -0
  833. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/tests.rs +0 -0
  834. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/types.rs +0 -0
  835. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/app/workspace.rs +0 -0
  836. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/bin/gtk.rs +0 -0
  837. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/commands.rs +0 -0
  838. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/lib.rs +0 -0
  839. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/main.rs +0 -0
  840. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/src/settings.rs +0 -0
  841. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/tests/acceptance.rs +0 -0
  842. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/tui/tests/cli.rs +0 -0
  843. {code_coordinator-0.5.106 → code_coordinator-0.5.107}/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.107
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.107
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.107",
3
3
  "distance": 0,
4
- "node": "g254718dc492ab30f9a86d7fce65cb4a2156430b5",
4
+ "node": "gd8477c280ee82a9279e982ed0b3aea53dc089761",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-16"
@@ -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
  )
@@ -958,6 +958,61 @@ class TestBuildFixBriefingTestAuthor:
958
958
  assert "ensure all tests pass" in briefing.lower()
959
959
 
960
960
 
961
+ class TestBuildFixBriefingMockAuthor:
962
+ """#2302: a type="mock-author" source row (Gate A) gets its own
963
+ fix-briefing variant instead of the generic "implement + make tests
964
+ pass" briefing — the diff is a specification (contract.md + rendered
965
+ mocks), there is no suite to run, and the diff must stay confined to
966
+ tests/acceptance/ms-NN/."""
967
+
968
+ def test_contains_reviewer_findings(self) -> None:
969
+ work = _work_assignment(type="mock-author")
970
+ findings = _request_changes_findings()
971
+ briefing = _build_fix_briefing(work, findings, iteration=1, max_iter=3)
972
+ assert "Missing test coverage for edge case X" in briefing
973
+
974
+ def test_does_not_instruct_making_tests_pass(self) -> None:
975
+ """The generic fix briefing's "ensure all tests pass" is wrong
976
+ guidance for a specification diff with no suite behind it — must
977
+ not leak into the mock-author variant."""
978
+ work = _work_assignment(type="mock-author")
979
+ findings = _request_changes_findings()
980
+ briefing = _build_fix_briefing(work, findings, iteration=1, max_iter=3)
981
+ assert "ensure all tests pass" not in briefing.lower()
982
+ assert "make them pass" not in briefing.lower()
983
+
984
+ def test_instructs_confining_diff_to_acceptance_dir(self) -> None:
985
+ work = _work_assignment(type="mock-author")
986
+ findings = _request_changes_findings()
987
+ briefing = _build_fix_briefing(work, findings, iteration=1, max_iter=3)
988
+ assert "tests/acceptance/ms-nn" in briefing.lower()
989
+ assert "request-changes" in briefing.lower()
990
+
991
+ def test_instructs_contract_and_mocks_agree_both_ways(self) -> None:
992
+ work = _work_assignment(type="mock-author")
993
+ findings = _request_changes_findings()
994
+ briefing = _build_fix_briefing(work, findings, iteration=1, max_iter=3)
995
+ assert "both directions" in briefing.lower()
996
+
997
+ def test_contains_branch_name(self) -> None:
998
+ work = _work_assignment(type="mock-author", branch="ms-65-gate-a")
999
+ findings = _request_changes_findings()
1000
+ briefing = _build_fix_briefing(work, findings, iteration=1, max_iter=3)
1001
+ assert "ms-65-gate-a" in briefing
1002
+
1003
+ def test_contains_do_not_change_branch_instruction(self) -> None:
1004
+ work = _work_assignment(type="mock-author")
1005
+ findings = _request_changes_findings()
1006
+ briefing = _build_fix_briefing(work, findings, iteration=1, max_iter=3)
1007
+ assert "do not change the branch name" in briefing.lower()
1008
+
1009
+ def test_contains_original_briefing(self) -> None:
1010
+ work = _work_assignment(type="mock-author")
1011
+ findings = _request_changes_findings()
1012
+ briefing = _build_fix_briefing(work, findings, iteration=1, max_iter=3)
1013
+ assert "Original briefing text." in briefing
1014
+
1015
+
961
1016
  # ── Unit tests: _fix_model_for_iteration ─────────────────────────────────────
962
1017
 
963
1018
 
@@ -2424,6 +2479,87 @@ class TestDispatchFixTestAuthorType:
2424
2479
  assert "deny_commands" not in payload
2425
2480
 
2426
2481
 
2482
+ # ── #2302: mock-author bounce gets a type="mock-author" fix, not "work" ─────
2483
+
2484
+
2485
+ class TestDispatchFixMockAuthorType:
2486
+ """A review bounce of a type="mock-author" (Gate A) row must dispatch a
2487
+ type="mock-author" fix, not a plain type="work" fix — `coord/review.py`
2488
+ only inverts the sealed-path tamper rule for
2489
+ `coord.models.SEALED_PATH_AUTHOR_TYPES`, so a "work"-typed fix confined
2490
+ to `tests/acceptance/ms-NN/**` trips "TAMPER DETECTED" on every round."""
2491
+
2492
+ def _dispatch(
2493
+ self, config: Config, *, work_type: str, for_issue_number: int | None = None
2494
+ ) -> tuple[dict, Assignment]:
2495
+ work = _work_assignment(
2496
+ assignment_id="ma-work-1",
2497
+ branch="ms-65-gate-a",
2498
+ type=work_type,
2499
+ for_issue_number=for_issue_number,
2500
+ )
2501
+ board = Board(completed=[work])
2502
+ mock_http = MagicMock()
2503
+ mock_http.post.return_value.json.return_value = {"id": "fix-ma-1"}
2504
+ mock_http.post.return_value.raise_for_status = MagicMock()
2505
+
2506
+ with patch("coord.auto_loop.record_dispatched_assignment"):
2507
+ result = _dispatch_fix(
2508
+ work, "Fix briefing.", board, config, iteration=1,
2509
+ http_client=mock_http,
2510
+ )
2511
+
2512
+ assert result is not None
2513
+ sent_payload = mock_http.post.call_args.kwargs["json"]
2514
+ return sent_payload, result
2515
+
2516
+ def test_payload_type_is_mock_author(self, config: Config) -> None:
2517
+ payload, _ = self._dispatch(config, work_type="mock-author")
2518
+ assert payload["type"] == "mock-author"
2519
+
2520
+ def test_assignment_type_is_mock_author(self, config: Config) -> None:
2521
+ _, fix = self._dispatch(config, work_type="mock-author")
2522
+ assert fix.type == "mock-author"
2523
+
2524
+ def test_files_forbidden_does_not_block_acceptance_path(
2525
+ self, config: Config
2526
+ ) -> None:
2527
+ """The source mock-author row carries files_forbidden=[] — confirm
2528
+ the fix dispatch doesn't add tests/acceptance/ to it."""
2529
+ payload, _ = self._dispatch(config, work_type="mock-author")
2530
+ assert not any(
2531
+ "tests/acceptance" in f for f in payload["files_forbidden"]
2532
+ )
2533
+
2534
+ def test_for_issue_number_carried_over(self, config: Config) -> None:
2535
+ _, fix = self._dispatch(config, work_type="mock-author", for_issue_number=65)
2536
+ assert fix.for_issue_number == 65
2537
+
2538
+ def test_work_type_bounce_is_unchanged(self, config: Config) -> None:
2539
+ """Regression guard: a type="work" bounce still gets a plain "work"
2540
+ fix — untouched by the mock-author addition."""
2541
+ payload, fix = self._dispatch(config, work_type="work")
2542
+ assert payload["type"] == "work"
2543
+ assert fix.type == "work"
2544
+
2545
+
2546
+ class TestFixDispatchTypesIncludesMockAuthor:
2547
+ """#2302: FIX_DISPATCH_TYPES must include every type `_dispatch_fix` can
2548
+ actually emit — this is the same drift class as #1141
2549
+ ("test-author was never added to WORK_LIKE_TYPES")."""
2550
+
2551
+ def test_mock_author_is_a_member(self) -> None:
2552
+ from coord.auto_loop import FIX_DISPATCH_TYPES
2553
+
2554
+ assert "mock-author" in FIX_DISPATCH_TYPES
2555
+
2556
+ def test_all_sealed_path_author_types_are_members(self) -> None:
2557
+ from coord.auto_loop import FIX_DISPATCH_TYPES
2558
+ from coord.models import SEALED_PATH_AUTHOR_TYPES
2559
+
2560
+ assert SEALED_PATH_AUTHOR_TYPES <= FIX_DISPATCH_TYPES
2561
+
2562
+
2427
2563
  class TestProcessReviewCompletionTestAuthorType:
2428
2564
  """End-to-end: a `coord bounce` (via process_review_completion) of a
2429
2565
  request-changes review on a type="test-author" work row dispatches a
@@ -2468,3 +2604,51 @@ class TestProcessReviewCompletionTestAuthorType:
2468
2604
  assert "Dead monkeypatch.setattr" in sent_payload["briefing"]
2469
2605
  assert "Fragile assertion" in sent_payload["briefing"]
2470
2606
  assert "ensure all tests pass" not in sent_payload["briefing"].lower()
2607
+
2608
+
2609
+ class TestProcessReviewCompletionMockAuthorType:
2610
+ """End-to-end: a `coord bounce` (via process_review_completion) of a
2611
+ request-changes review on a type="mock-author" (Gate A) work row
2612
+ dispatches a type="mock-author" fix carrying the reviewer's findings —
2613
+ the #2289 shape this issue exists to fix."""
2614
+
2615
+ def test_full_cycle_dispatches_mock_author_fix(
2616
+ self, config: Config, tmp_path
2617
+ ) -> None:
2618
+ log_file = tmp_path / "review.log"
2619
+ log_file.write_text(
2620
+ "REVIEW_VERDICT: request-changes\n"
2621
+ "REVIEW_BODY:\n"
2622
+ "- Mock depicts a state the contract's own rules can't reach\n"
2623
+ "- Contract names a field the mocks never render\n"
2624
+ "END_REVIEW\n"
2625
+ )
2626
+ work = _work_assignment(
2627
+ assignment_id="ma-work-2",
2628
+ branch="ms-65-gate-a",
2629
+ type="mock-author",
2630
+ )
2631
+ review = _review_assignment(assignment_id="ma-review-2", review_of="ma-work-2")
2632
+ board = _board_with(work, review)
2633
+
2634
+ mock_http = MagicMock()
2635
+ mock_http.post.return_value.json.return_value = {"id": "fix-ma-2"}
2636
+ mock_http.post.return_value.raise_for_status = MagicMock()
2637
+
2638
+ with patch("coord.auto_loop.record_dispatched_assignment"):
2639
+ actions = process_review_completion(
2640
+ review, board, config,
2641
+ log_path=str(log_file),
2642
+ http_client=mock_http,
2643
+ )
2644
+
2645
+ assert any(a.kind == "fix_dispatched" for a in actions)
2646
+ sent_payload = mock_http.post.call_args.kwargs["json"]
2647
+ fix = board.active[0]
2648
+
2649
+ assert sent_payload["type"] == "mock-author"
2650
+ assert fix.type == "mock-author"
2651
+ assert "Mock depicts a state" in sent_payload["briefing"]
2652
+ assert "Contract names a field" in sent_payload["briefing"]
2653
+ assert "ensure all tests pass" not in sent_payload["briefing"].lower()
2654
+ assert "make them pass" not in sent_payload["briefing"].lower()
@@ -16,6 +16,7 @@ dispatch/kill/handoff, idempotent via the shared `notified` ledger.
16
16
 
17
17
  from __future__ import annotations
18
18
 
19
+ from dataclasses import replace
19
20
  from unittest.mock import MagicMock, patch
20
21
 
21
22
  import pytest
@@ -149,6 +150,14 @@ def _board(*assignments: Assignment) -> Board:
149
150
  return Board(active=active, completed=completed)
150
151
 
151
152
 
153
+ def _mock_author_work(aid: str = "ma-work-1", **kwargs) -> Assignment:
154
+ """#2302: a `type="mock-author"` (Gate A) head row — same shape as
155
+ `_work()` but typed as a SEALED_PATH_AUTHOR_TYPES member so the
156
+ `dispatch_stalled_pipeline_action` flag-bypass tests below can build a
157
+ board around one without duplicating `_work`'s field list."""
158
+ return replace(_work(aid, **kwargs), type="mock-author", branch="ms-65-gate-a")
159
+
160
+
152
161
  # ── Reference fixture: vimcode #602 ──────────────────────────────────────────
153
162
 
154
163
 
@@ -1416,6 +1425,159 @@ class TestDispatchPerReason:
1416
1425
  stub.assert_called_once()
1417
1426
 
1418
1427
 
1428
+ # ── #2302: sealed-author rows bypass the auto_dispatch_stalled flag ─────────
1429
+ #
1430
+ # `pipeline.auto_dispatch_stalled` bounds blast radius on rows another loop
1431
+ # already owns (`coord drive`'s request-changes -> fix arm for `work` rows,
1432
+ # #1692). A `test-author`/`mock-author` row has no such owner — `coord
1433
+ # drive` explicitly `_die()`s on those and Gate A is dispatched standalone
1434
+ # with no drive run over it at all (#2289) — so THIS one reason+type
1435
+ # combination must dispatch regardless of the flag. `work` rows under the
1436
+ # same reason keep the opt-in gate unchanged.
1437
+
1438
+
1439
+ class TestDispatchSealedAuthorBypassesFlag:
1440
+ def test_mock_author_stall_dispatches_with_flag_off(
1441
+ self, config: Config, monkeypatch
1442
+ ) -> None:
1443
+ assert config.pipeline.auto_dispatch_stalled is False
1444
+ board = _board(
1445
+ _mock_author_work("ma-work-1", test_state="passed"),
1446
+ _review("ma-work-1", aid="ma-review-1", review_verdict="request-changes"),
1447
+ )
1448
+ detection, work = notify_mod.detect_stalled_pipeline(
1449
+ config, board=board, merge_queue_items=[]
1450
+ )[0]
1451
+ assert detection.reason == "review_request_changes_no_fix"
1452
+ assert work.type == "mock-author"
1453
+
1454
+ stub = MagicMock(return_value=[
1455
+ LoopAction(
1456
+ kind="fix_dispatched", assignment_id="ma-review-1",
1457
+ detail="fix worker fix-9 dispatched to mac-mini (iteration 1/5)",
1458
+ ),
1459
+ ])
1460
+ monkeypatch.setattr("coord.auto_loop.process_review_completion", stub)
1461
+
1462
+ action = notify_mod.dispatch_stalled_pipeline_action(detection, work, board, config)
1463
+
1464
+ assert action.kind == "fix_dispatch_attempted"
1465
+ stub.assert_called_once()
1466
+
1467
+ def test_test_author_stall_dispatches_with_flag_off(
1468
+ self, config: Config, monkeypatch
1469
+ ) -> None:
1470
+ """The scope is BOTH sealed-author types — test-author has the
1471
+ identical hole (`coord/drive.py` `_die()`s on it too)."""
1472
+ assert config.pipeline.auto_dispatch_stalled is False
1473
+ board = _board(
1474
+ replace(_mock_author_work("ta-work-1", test_state="passed"), type="test-author"),
1475
+ _review("ta-work-1", aid="ta-review-1", review_verdict="request-changes"),
1476
+ )
1477
+ detection, work = notify_mod.detect_stalled_pipeline(
1478
+ config, board=board, merge_queue_items=[]
1479
+ )[0]
1480
+ assert detection.reason == "review_request_changes_no_fix"
1481
+ assert work.type == "test-author"
1482
+
1483
+ stub = MagicMock(return_value=[
1484
+ LoopAction(
1485
+ kind="fix_dispatched", assignment_id="ta-review-1",
1486
+ detail="fix worker fix-9 dispatched to mac-mini (iteration 1/5)",
1487
+ ),
1488
+ ])
1489
+ monkeypatch.setattr("coord.auto_loop.process_review_completion", stub)
1490
+
1491
+ action = notify_mod.dispatch_stalled_pipeline_action(detection, work, board, config)
1492
+
1493
+ assert action.kind == "fix_dispatch_attempted"
1494
+ stub.assert_called_once()
1495
+
1496
+ def test_work_stall_still_disabled_with_flag_off(
1497
+ self, config: Config, monkeypatch
1498
+ ) -> None:
1499
+ """Regression guard: a plain `work` row under the identical reason
1500
+ stays gated behind the flag — `coord drive` owns that row and a
1501
+ second dispatcher racing it would duplicate/clobber its fix."""
1502
+ assert config.pipeline.auto_dispatch_stalled is False
1503
+ board = _board(
1504
+ _work("work-1", test_state="passed"),
1505
+ _review("work-1", aid="review-1", review_verdict="request-changes"),
1506
+ )
1507
+ detection, work = notify_mod.detect_stalled_pipeline(
1508
+ config, board=board, merge_queue_items=[]
1509
+ )[0]
1510
+ assert detection.reason == "review_request_changes_no_fix"
1511
+ assert work.type == "work"
1512
+
1513
+ stub = MagicMock()
1514
+ monkeypatch.setattr("coord.auto_loop.process_review_completion", stub)
1515
+
1516
+ action = notify_mod.dispatch_stalled_pipeline_action(detection, work, board, config)
1517
+
1518
+ assert action.kind == "disabled"
1519
+ stub.assert_not_called()
1520
+
1521
+ def test_mock_author_stall_still_respects_live_session_guard(
1522
+ self, config: Config, monkeypatch
1523
+ ) -> None:
1524
+ """The flag bypass must not skip the #602 live-session guard — an
1525
+ interactive session on the same (repo, issue) still wins."""
1526
+ assert config.pipeline.auto_dispatch_stalled is False
1527
+ work = _mock_author_work("ma-work-2", test_state="passed")
1528
+ review = _review("ma-work-2", aid="ma-review-2", review_verdict="request-changes")
1529
+ live_session = Assignment(
1530
+ machine_name="mac-mini", repo_name="vimcode", issue_number=602,
1531
+ issue_title="interactive smoke", assignment_id="smoke-live",
1532
+ status="running", type="smoke",
1533
+ )
1534
+ board = Board(active=[live_session], completed=[work, review])
1535
+
1536
+ detection, work_row = notify_mod.detect_stalled_pipeline(
1537
+ config, board=board, merge_queue_items=[]
1538
+ )[0]
1539
+ assert detection.reason == "review_request_changes_no_fix"
1540
+
1541
+ stub = MagicMock()
1542
+ monkeypatch.setattr("coord.auto_loop.process_review_completion", stub)
1543
+
1544
+ action = notify_mod.dispatch_stalled_pipeline_action(
1545
+ detection, work_row, board, config
1546
+ )
1547
+
1548
+ assert action.kind == "skipped_live_session"
1549
+ stub.assert_not_called()
1550
+
1551
+ def test_mock_author_stall_still_respects_iteration_cap(
1552
+ self, config: Config, monkeypatch
1553
+ ) -> None:
1554
+ """The flag bypass must not skip `process_review_completion`'s own
1555
+ `max_review_iterations` cap — a `max_iterations` resolution stays
1556
+ `no_action`, not a dispatch."""
1557
+ assert config.pipeline.auto_dispatch_stalled is False
1558
+ board = _board(
1559
+ _mock_author_work("ma-work-3", test_state="passed"),
1560
+ _review("ma-work-3", aid="ma-review-3", review_verdict="request-changes"),
1561
+ )
1562
+ detection, work = notify_mod.detect_stalled_pipeline(
1563
+ config, board=board, merge_queue_items=[]
1564
+ )[0]
1565
+
1566
+ stub = MagicMock(return_value=[
1567
+ LoopAction(
1568
+ kind="max_iterations", assignment_id="ma-review-3",
1569
+ detail="max_review_iterations=5 reached",
1570
+ ),
1571
+ ])
1572
+ monkeypatch.setattr("coord.auto_loop.process_review_completion", stub)
1573
+
1574
+ action = notify_mod.dispatch_stalled_pipeline_action(detection, work, board, config)
1575
+
1576
+ assert action.kind == "no_action"
1577
+ assert action.kind not in notify_mod._STALLED_DISPATCH_KINDS
1578
+ stub.assert_called_once()
1579
+
1580
+
1419
1581
  class TestLiveSessionGuard:
1420
1582
  def test_dispatch_skipped_when_live_session_active(
1421
1583
  self, config: Config, monkeypatch