code-coordinator 0.5.130__tar.gz → 0.5.132__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 (861) hide show
  1. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/code_coordinator.egg-info/SOURCES.txt +1 -0
  4. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/code_coordinator.egg-info/scm_file_list.json +1 -0
  5. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/code_coordinator.egg-info/scm_version.json +2 -2
  6. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/drive_queue.py +101 -9
  7. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/coord-test-runner.sh +189 -4
  8. code_coordinator-0.5.132/tests/test_coord_test_runner_populated_home.py +665 -0
  9. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_coord_test_runner_routing.py +9 -3
  10. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_drive_queue.py +131 -0
  11. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/.claude/commands/board.md +0 -0
  12. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/.claude/commands/complete-session.md +0 -0
  13. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/.claude/commands/coordinator.md +0 -0
  14. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/.githooks/_lib.sh +0 -0
  15. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/.githooks/post-checkout +0 -0
  16. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/.githooks/post-commit +0 -0
  17. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/.githooks/post-merge +0 -0
  18. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  19. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/.github/coord-ci-acceptance.yml +0 -0
  20. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/.github/workflows/auto-release.yml +0 -0
  21. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/.github/workflows/cargo-test.yml +0 -0
  22. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/.github/workflows/publish.yml +0 -0
  23. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/.github/workflows/release-tui.yml +0 -0
  24. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/.github/workflows/test.yml +0 -0
  25. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/.gitignore +0 -0
  26. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/CLAUDE.md +0 -0
  27. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/GOAL.md +0 -0
  28. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/LICENSE +0 -0
  29. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/MANIFEST.in +0 -0
  30. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/README.md +0 -0
  31. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/code_coordinator.egg-info/dependency_links.txt +0 -0
  32. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/code_coordinator.egg-info/entry_points.txt +0 -0
  33. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/code_coordinator.egg-info/requires.txt +0 -0
  34. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/code_coordinator.egg-info/top_level.txt +0 -0
  35. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/__init__.py +0 -0
  36. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/_board_mapping.py +0 -0
  37. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/acceptance.py +0 -0
  38. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/acceptance_drivers.py +0 -0
  39. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/agent.py +0 -0
  40. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/agent_app.py +0 -0
  41. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/agent_update.py +0 -0
  42. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/agents/opencode/.gitignore +0 -0
  43. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/agents/opencode/agents/work.md +0 -0
  44. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/agents/opencode/routing.jsonc +0 -0
  45. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/audit.py +0 -0
  46. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/auto_loop.py +0 -0
  47. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/block_log.py +0 -0
  48. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/board_bool_guard.py +0 -0
  49. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/board_service.py +0 -0
  50. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/board_wire.py +0 -0
  51. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/brain.py +0 -0
  52. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/branch_model.py +0 -0
  53. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/bug_intake.py +0 -0
  54. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/cargo_cache.py +0 -0
  55. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/ci_github.py +0 -0
  56. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/ci_store.py +0 -0
  57. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/claim.py +0 -0
  58. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/cli.py +0 -0
  59. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/client.py +0 -0
  60. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/__init__.py +0 -0
  61. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/_common.py +0 -0
  62. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/acceptance.py +0 -0
  63. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/agent_ops.py +0 -0
  64. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/audit.py +0 -0
  65. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/chat.py +0 -0
  66. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/dispatch.py +0 -0
  67. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/dispatch_workers.py +0 -0
  68. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/drive.py +0 -0
  69. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/drive_queue.py +0 -0
  70. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/gate_a.py +0 -0
  71. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/gates.py +0 -0
  72. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/issues.py +0 -0
  73. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/lifecycle.py +0 -0
  74. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/merge.py +0 -0
  75. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/milestone.py +0 -0
  76. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/plan_followup.py +0 -0
  77. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/plans.py +0 -0
  78. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/portal.py +0 -0
  79. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/release.py +0 -0
  80. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/repo.py +0 -0
  81. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/report.py +0 -0
  82. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/review.py +0 -0
  83. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/scorecard.py +0 -0
  84. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/sessions.py +0 -0
  85. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/setup.py +0 -0
  86. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/status.py +0 -0
  87. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/terminal.py +0 -0
  88. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/test_gate.py +0 -0
  89. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/commands/tui.py +0 -0
  90. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/comments.py +0 -0
  91. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/config.py +0 -0
  92. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/config_reload.py +0 -0
  93. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/conflict_fix.py +0 -0
  94. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dao.py +0 -0
  95. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/__init__.py +0 -0
  96. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/fixture.py +0 -0
  97. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/index.html +0 -0
  98. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/server.py +0 -0
  99. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/terminal.py +0 -0
  100. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/.gitignore +0 -0
  101. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/components.json +0 -0
  102. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
  103. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  104. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
  105. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
  106. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  107. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  108. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  109. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  110. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  111. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/dist/index.html +0 -0
  112. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  113. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/dist/sw.js +0 -0
  114. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  115. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  116. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  117. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  118. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  119. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  120. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  121. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  122. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  123. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  124. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/eslint.config.js +0 -0
  125. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/index.html +0 -0
  126. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  127. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/package-lock.json +0 -0
  128. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/package.json +0 -0
  129. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  130. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/playwright.config.ts +0 -0
  131. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/postcss.config.js +0 -0
  132. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  133. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  134. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  135. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/App.tsx +0 -0
  136. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/api/client.ts +0 -0
  137. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  138. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  139. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  140. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  141. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  142. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  143. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  144. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  145. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  146. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  147. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  148. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  149. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  150. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  151. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  152. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  153. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  154. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  155. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  156. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  157. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  158. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  159. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  160. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  161. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  162. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  163. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  164. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  165. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  166. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  167. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  168. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  169. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  170. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  171. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  172. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/index.css +0 -0
  173. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  174. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  175. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/main.tsx +0 -0
  176. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  177. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  178. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  179. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  180. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  181. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  182. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  183. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  184. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  185. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  186. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  187. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  188. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  189. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  190. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  191. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  192. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  193. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  194. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  195. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  196. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  197. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  198. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  199. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/tailwind.config.js +0 -0
  200. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/tsconfig.json +0 -0
  201. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  202. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dashboard/webapp/vite.config.ts +0 -0
  203. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/db.py +0 -0
  204. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dead_end.py +0 -0
  205. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/README.md +0 -0
  206. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-agent.service +0 -0
  207. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-db-backup.service +0 -0
  208. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-db-backup.sh +0 -0
  209. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-db-backup.timer +0 -0
  210. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-drive-queue.service +0 -0
  211. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-drive-queue.timer +0 -0
  212. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-notify.service +0 -0
  213. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-notify.timer +0 -0
  214. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-release-propagate.service +0 -0
  215. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-release-propagate.timer +0 -0
  216. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-release-window.service +0 -0
  217. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-release-window.timer +0 -0
  218. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-serve.service +0 -0
  219. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-web-dist-build.service +0 -0
  220. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-web-dist-build.timer +0 -0
  221. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy/coord-web.service +0 -0
  222. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy_manifest.py +0 -0
  223. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deploy_units.py +0 -0
  224. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/deps.py +0 -0
  225. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/diagnose.py +0 -0
  226. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dispatch.py +0 -0
  227. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/dist_name.py +0 -0
  228. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/drive.py +0 -0
  229. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/drive_state.py +0 -0
  230. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/events.py +0 -0
  231. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/failure_class.py +0 -0
  232. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/filelock.py +0 -0
  233. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/fleet_config_health.py +0 -0
  234. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/freshness.py +0 -0
  235. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/gate_a.py +0 -0
  236. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/gate_b.py +0 -0
  237. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/gate_snapshot.py +0 -0
  238. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/gates.py +0 -0
  239. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/github_ops.py +0 -0
  240. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/goal.py +0 -0
  241. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/graph_health.py +0 -0
  242. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/__init__.py +0 -0
  243. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/aggregate.py +0 -0
  244. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/__init__.py +0 -0
  245. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/agent_install.py +0 -0
  246. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/cargo_targets.py +0 -0
  247. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/claude_binary.py +0 -0
  248. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/deploy_lane_facts.py +0 -0
  249. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/disk.py +0 -0
  250. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/fleet_board.py +0 -0
  251. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  252. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/fleet_phantom.py +0 -0
  253. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/fleet_unit_drift.py +0 -0
  254. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/graph.py +0 -0
  255. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/graphify_cli.py +0 -0
  256. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/index_lock.py +0 -0
  257. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/plan_usage.py +0 -0
  258. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/repo_state.py +0 -0
  259. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/spawned_coord.py +0 -0
  260. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/timer_active.py +0 -0
  261. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/toolchain.py +0 -0
  262. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/unit_drift.py +0 -0
  263. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/unit_enablement.py +0 -0
  264. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/checks/worktrees.py +0 -0
  265. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/cli.py +0 -0
  266. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/context.py +0 -0
  267. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/fleet_snapshot.py +0 -0
  268. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/models.py +0 -0
  269. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/pypi.py +0 -0
  270. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/registry.py +0 -0
  271. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/render.py +0 -0
  272. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/health/units.py +0 -0
  273. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/hooks.py +0 -0
  274. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/housekeeping.py +0 -0
  275. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/interactive.py +0 -0
  276. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/issue_store.py +0 -0
  277. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/liveness_auditor.py +0 -0
  278. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/machine_pause.py +0 -0
  279. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/merge_queue.py +0 -0
  280. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/milestone_chat.py +0 -0
  281. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/milestone_dispatch.py +0 -0
  282. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/milestone_gate.py +0 -0
  283. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/milestone_order.py +0 -0
  284. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/mock_author.py +0 -0
  285. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/models.py +0 -0
  286. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/network.py +0 -0
  287. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/new_issue_chat.py +0 -0
  288. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/notifier/__init__.py +0 -0
  289. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/notifier/baseline.py +0 -0
  290. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/notifier/cli.py +0 -0
  291. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/notifier/collect.py +0 -0
  292. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/notifier/digest.py +0 -0
  293. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/notifier/models.py +0 -0
  294. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/notifier/predicate.py +0 -0
  295. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/notifier/service.py +0 -0
  296. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/notifier/store.py +0 -0
  297. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/notifier/transport.py +0 -0
  298. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/notify.py +0 -0
  299. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/openapi.py +0 -0
  300. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/overlap_fence.py +0 -0
  301. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/overlap_predict.py +0 -0
  302. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/parentage.py +0 -0
  303. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/parentage_github.py +0 -0
  304. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/pipeline.py +0 -0
  305. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/plan_parser.py +0 -0
  306. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/plans.py +0 -0
  307. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/platform_paths.py +0 -0
  308. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/portal_bridge.py +0 -0
  309. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/portal_store.py +0 -0
  310. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/portal_sync.py +0 -0
  311. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/pr_body_lint.py +0 -0
  312. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/prereqs.py +0 -0
  313. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/progress.py +0 -0
  314. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/providers/__init__.py +0 -0
  315. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/providers/base.py +0 -0
  316. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/providers/claude.py +0 -0
  317. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/providers/claude_pty.py +0 -0
  318. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/providers/opencode.py +0 -0
  319. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/queue_diagnose.py +0 -0
  320. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/reconcile.py +0 -0
  321. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/refine_chat.py +0 -0
  322. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/release_cordon.py +0 -0
  323. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/release_propagate.py +0 -0
  324. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/release_verify.py +0 -0
  325. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/release_window.py +0 -0
  326. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/repo_edit.py +0 -0
  327. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/repo_onboard.py +0 -0
  328. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/reports.py +0 -0
  329. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/revalidate.py +0 -0
  330. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/review.py +0 -0
  331. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/scorecard.py +0 -0
  332. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/serve_app.py +0 -0
  333. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/skills/portal-followup/SKILL.md +0 -0
  334. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/skills/update-issue/SKILL.md +0 -0
  335. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/smoke.py +0 -0
  336. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/spend_ceiling.py +0 -0
  337. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/split_work.py +0 -0
  338. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/stage_projection.py +0 -0
  339. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/state.py +0 -0
  340. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/test_author.py +0 -0
  341. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/test_chat.py +0 -0
  342. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/test_orchestrator.py +0 -0
  343. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/test_report.py +0 -0
  344. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/tui_release.py +0 -0
  345. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/usage.py +0 -0
  346. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/usage_limits.py +0 -0
  347. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/usage_rollup.py +0 -0
  348. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coord/worker_events.py +0 -0
  349. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/coordinator.example.yml +0 -0
  350. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-agent.service +0 -0
  351. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-db-backup.service +0 -0
  352. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-db-backup.sh +0 -0
  353. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-db-backup.timer +0 -0
  354. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-drive-queue.service +0 -0
  355. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-drive-queue.timer +0 -0
  356. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-notify.service +0 -0
  357. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-notify.timer +0 -0
  358. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-release-propagate.service +0 -0
  359. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-release-propagate.timer +0 -0
  360. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-release-window.service +0 -0
  361. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-release-window.timer +0 -0
  362. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-serve.service +0 -0
  363. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-web-dist-build.service +0 -0
  364. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-web-dist-build.sh +0 -0
  365. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-web-dist-build.timer +0 -0
  366. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-web-rollback.sh +0 -0
  367. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/coord-web.service +0 -0
  368. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/deploy/node-shim.sh +0 -0
  369. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/AGENT_OPERATIONS.md +0 -0
  370. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/ARCHITECTURE.md +0 -0
  371. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/ARCH_SECURITY_GATES.md +0 -0
  372. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/COCKPIT.md +0 -0
  373. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/CONTROL_CENTER.md +0 -0
  374. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/COST_DISCIPLINE.md +0 -0
  375. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/CROSS_PLATFORM.md +0 -0
  376. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/CUSTOMER_PORTAL.md +0 -0
  377. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/DRIVE_QUEUE.md +0 -0
  378. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/EPHEMERAL_WORKERS.md +0 -0
  379. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/FORGE_MIGRATION.md +0 -0
  380. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/GRAPHIFY_SETUP.md +0 -0
  381. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/ISSUE_GUIDANCE.md +0 -0
  382. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/MAC_MINI.md +0 -0
  383. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  384. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/NOTIFIER.md +0 -0
  385. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/OPENCODE_VERIFICATION.md +0 -0
  386. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/OPERATING_GOTCHAS.md +0 -0
  387. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/ORACLE_LOOP.md +0 -0
  388. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/PHONE_WEBAPP.md +0 -0
  389. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/PIPELINE_V2.md +0 -0
  390. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/PLATFORM_EVOLUTION.md +0 -0
  391. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/SECOND_BACKEND.md +0 -0
  392. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/STORE_SERVICE.md +0 -0
  393. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  394. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/WEB_CONTROL_CENTER.md +0 -0
  395. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/WSL_WINDOWS_WORKER.md +0 -0
  396. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/mocks/web/README.md +0 -0
  397. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/mocks/web/_tokens.css +0 -0
  398. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/mocks/web/issue-detail.html +0 -0
  399. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/mocks/web/pipeline-narrow.html +0 -0
  400. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/docs/mocks/web/pipeline-wide.html +0 -0
  401. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/graphify-out/.gitignore +0 -0
  402. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/install-agent.sh +0 -0
  403. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/pyproject.toml +0 -0
  404. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/audit_review_verdict_overrides.py +0 -0
  405. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  406. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/azure-workers/build-worker-image.sh +0 -0
  407. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/azure-workers/coordinator-machine.py +0 -0
  408. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/azure-workers/epic-down.sh +0 -0
  409. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/azure-workers/epic-up.sh +0 -0
  410. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/azure-workers/preflight.sh +0 -0
  411. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/azure-workers/provision-worker.sh +0 -0
  412. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  413. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  414. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/azure-workers/verify-github-token.sh +0 -0
  415. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/codegen.py +0 -0
  416. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/drive-batch.sh +0 -0
  417. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/gen_board_fixture.py +0 -0
  418. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/next_release_tag.py +0 -0
  419. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/run_tests_in_populated_home.sh +0 -0
  420. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/run_tests_without_gh.sh +0 -0
  421. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/smoke_437_interactive.py +0 -0
  422. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/verify_878_review_capture.py +0 -0
  423. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/verify_release_published.py +0 -0
  424. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/scripts/verify_release_wheel.py +0 -0
  425. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/setup.cfg +0 -0
  426. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/SMOKE_SET.md +0 -0
  427. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/__init__.py +0 -0
  428. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  429. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-33/contract.md +0 -0
  430. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-33/manifest.yml +0 -0
  431. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  432. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  433. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  434. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  435. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-37/conftest.py +0 -0
  436. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-37/contract.md +0 -0
  437. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-37/manifest.yml +0 -0
  438. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  439. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  440. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-38/contract.md +0 -0
  441. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-38/manifest.yml +0 -0
  442. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  443. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  444. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  445. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  446. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  447. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  448. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  449. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  450. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  451. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  452. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-51/contract.md +0 -0
  453. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  454. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  455. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-51/manifest.yml +0 -0
  456. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  457. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-51/tsconfig.json +0 -0
  458. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  459. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-65/contract.md +0 -0
  460. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-65/manifest.yml +0 -0
  461. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  462. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  463. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  464. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  465. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  466. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  467. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  468. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  469. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  470. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/conftest.py +0 -0
  471. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/board-pipeline-basic.json +0 -0
  472. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  473. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  474. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  475. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  476. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/playwright/all_pass.json +0 -0
  477. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  478. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/playwright/mixed_fail.json +0 -0
  479. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  480. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  481. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/playwright/skip.json +0 -0
  482. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/playwright/truncated.json +0 -0
  483. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  484. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  485. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  486. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  487. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  488. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  489. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  490. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  491. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_acceptance.py +0 -0
  492. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_acceptance_drivers.py +0 -0
  493. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent.py +0 -0
  494. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_api_error.py +0 -0
  495. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_app.py +0 -0
  496. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_branch_base.py +0 -0
  497. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_branch_capture.py +0 -0
  498. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_config_free_1712.py +0 -0
  499. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_deploy_units_endpoint.py +0 -0
  500. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_dirty_worktree.py +0 -0
  501. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_graph_self_heal.py +0 -0
  502. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_health_h3.py +0 -0
  503. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_idle_restart.py +0 -0
  504. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_push_failure.py +0 -0
  505. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_reap.py +0 -0
  506. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_repos_and_pull.py +0 -0
  507. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_restart_services_endpoint.py +0 -0
  508. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_startup_diagnostics.py +0 -0
  509. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_update.py +0 -0
  510. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_update_bluegreen.py +0 -0
  511. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_usage_limit.py +0 -0
  512. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_agent_zero_commit.py +0 -0
  513. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_ambient_home_isolation.py +0 -0
  514. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_approve_reject_plan.py +0 -0
  515. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_approve_usage_gate.py +0 -0
  516. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_assignment_already_recorded_daemon.py +0 -0
  517. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_audit_log.py +0 -0
  518. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_audit_outcome.py +0 -0
  519. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_audit_query.py +0 -0
  520. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_auto_loop.py +0 -0
  521. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_auto_release_publish_2035.py +0 -0
  522. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_base_checkout_restore.py +0 -0
  523. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_block_log.py +0 -0
  524. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_board_cap_762.py +0 -0
  525. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_board_fixture.py +0 -0
  526. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_board_read_path.py +0 -0
  527. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_board_service.py +0 -0
  528. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_board_state.py +0 -0
  529. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_board_wire.py +0 -0
  530. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_brain.py +0 -0
  531. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_branch_model.py +0 -0
  532. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_bug_intake.py +0 -0
  533. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_build_worker_image_env_update.py +0 -0
  534. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cargo_cache.py +0 -0
  535. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_ci_acceptance_gate_1950.py +0 -0
  536. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_ci_parity_2091.py +0 -0
  537. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_ci_store.py +0 -0
  538. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_claim.py +0 -0
  539. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_acceptance.py +0 -0
  540. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_assign.py +0 -0
  541. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  542. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_assign_interactive_remote.py +0 -0
  543. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_assign_provider.py +0 -0
  544. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  545. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_audit.py +0 -0
  546. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_chat_continue.py +0 -0
  547. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_diagnose_config_provenance.py +0 -0
  548. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_diagnose_graph.py +0 -0
  549. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_doctor.py +0 -0
  550. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_doctor_config_free_1801.py +0 -0
  551. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  552. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_drive.py +0 -0
  553. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_drive_queue.py +0 -0
  554. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_escalate.py +0 -0
  555. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_fix_headless_review.py +0 -0
  556. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_gate_a.py +0 -0
  557. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_install_drift.py +0 -0
  558. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_install_skills.py +0 -0
  559. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_issue_create_label.py +0 -0
  560. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_issue_reopen.py +0 -0
  561. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_merge.py +0 -0
  562. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_milestone_assign.py +0 -0
  563. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_milestone_capture.py +0 -0
  564. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_milestone_chat_add_child.py +0 -0
  565. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_milestone_dispatch.py +0 -0
  566. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_milestone_gate_b.py +0 -0
  567. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_milestone_gate_c.py +0 -0
  568. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_milestone_order.py +0 -0
  569. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  570. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_milestone_ship.py +0 -0
  571. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_network.py +0 -0
  572. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_new_issue_chat.py +0 -0
  573. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_plans.py +0 -0
  574. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_portal.py +0 -0
  575. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_pull_artifact.py +0 -0
  576. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_queue.py +0 -0
  577. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_reattach_sessions.py +0 -0
  578. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_refine_board.py +0 -0
  579. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_release_preflight.py +0 -0
  580. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_release_propagate.py +0 -0
  581. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_release_window.py +0 -0
  582. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_repo_2220.py +0 -0
  583. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_scorecard.py +0 -0
  584. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_set_review_findings.py +0 -0
  585. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_status_advisory_terminal.py +0 -0
  586. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_status_merge_queue.py +0 -0
  587. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_status_provider.py +0 -0
  588. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_status_review_finalizing.py +0 -0
  589. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_status_test_failed_tag.py +0 -0
  590. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_status_usage_limit.py +0 -0
  591. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_sync_comments_873.py +0 -0
  592. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_test_plan.py +0 -0
  593. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_track.py +0 -0
  594. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_tui_update.py +0 -0
  595. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cli_wait.py +0 -0
  596. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_client_base_install.py +0 -0
  597. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_comments.py +0 -0
  598. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_completion_summary.py +0 -0
  599. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_config.py +0 -0
  600. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_config_acceptance.py +0 -0
  601. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_config_audit.py +0 -0
  602. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_config_pricing.py +0 -0
  603. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  604. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_config_usage_gate.py +0 -0
  605. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_conflict_fix.py +0 -0
  606. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_conflict_fix_semantic.py +0 -0
  607. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_coord_test.py +0 -0
  608. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_coord_test_runner_baseline.py +0 -0
  609. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_coord_test_runner_toolchain.py +0 -0
  610. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_coord_web_sse_restart_live.py +0 -0
  611. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_coordinator_machine.py +0 -0
  612. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_cross_platform_imports.py +0 -0
  613. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_dashboard.py +0 -0
  614. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_dashboard_fixture.py +0 -0
  615. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_dashboard_terminal.py +0 -0
  616. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_dashboard_terminal_live.py +0 -0
  617. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_db.py +0 -0
  618. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_dead_end.py +0 -0
  619. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_deploy_coord_db_backup.py +0 -0
  620. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_deploy_coord_web_dist.py +0 -0
  621. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_deploy_coord_web_rollback.py +0 -0
  622. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_deploy_drive_queue_unit.py +0 -0
  623. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_deploy_manifest.py +0 -0
  624. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_deploy_units_lane.py +0 -0
  625. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_deploy_web_unit.py +0 -0
  626. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_deps.py +0 -0
  627. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_diagnose.py +0 -0
  628. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_dispatch.py +0 -0
  629. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_dispatch_target_validation.py +0 -0
  630. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_dist_name.py +0 -0
  631. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_done_housekeeping.py +0 -0
  632. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_drive.py +0 -0
  633. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_drive_state.py +0 -0
  634. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_drive_tmux.py +0 -0
  635. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_epic_up_capability_detection.py +0 -0
  636. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  637. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_epic_up_image_provenance.py +0 -0
  638. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_errors.py +0 -0
  639. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_events.py +0 -0
  640. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_failure_class.py +0 -0
  641. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_filelock.py +0 -0
  642. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  643. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_fix_of_force_override.py +0 -0
  644. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_fleet_config_health.py +0 -0
  645. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_fleet_health_probes.py +0 -0
  646. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_fleet_health_snapshot.py +0 -0
  647. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_freshness.py +0 -0
  648. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_gate_a.py +0 -0
  649. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_gate_b.py +0 -0
  650. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_gate_snapshot_staleness.py +0 -0
  651. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_gates.py +0 -0
  652. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  653. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_generated_types_fixture.py +0 -0
  654. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_github_ops.py +0 -0
  655. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_goal.py +0 -0
  656. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_graph_health.py +0 -0
  657. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_graph_selfheal_absent_2237.py +0 -0
  658. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_handoff.py +0 -0
  659. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_health_checks.py +0 -0
  660. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_health_cli.py +0 -0
  661. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_health_cli_graph.py +0 -0
  662. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_health_config.py +0 -0
  663. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_health_context.py +0 -0
  664. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_health_deploy_lane_facts.py +0 -0
  665. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_health_incident_regression.py +0 -0
  666. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_health_pypi.py +0 -0
  667. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_health_registry.py +0 -0
  668. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_health_timer_active.py +0 -0
  669. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_health_toolchain.py +0 -0
  670. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_health_unit_drift.py +0 -0
  671. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_health_unit_enablement.py +0 -0
  672. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_hooks.py +0 -0
  673. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_human_attended_437.py +0 -0
  674. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_init.py +0 -0
  675. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_integration.py +0 -0
  676. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_interactive_briefing_echo.py +0 -0
  677. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_interactive_prefill_state.py +0 -0
  678. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_interactive_session_relaunch.py +0 -0
  679. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_interactive_test_verdict_backstop.py +0 -0
  680. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_interactive_token_attribution.py +0 -0
  681. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_interactive_worktree.py +0 -0
  682. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_issue_store_seam.py +0 -0
  683. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_liveness_auditor.py +0 -0
  684. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_liveness_notify.py +0 -0
  685. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_machine_pause.py +0 -0
  686. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_merge_queue.py +0 -0
  687. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_merge_verify.py +0 -0
  688. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_milestone_chat.py +0 -0
  689. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_milestone_dispatch.py +0 -0
  690. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_milestone_gate.py +0 -0
  691. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_milestone_order.py +0 -0
  692. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_milestone_seam.py +0 -0
  693. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_mock_author.py +0 -0
  694. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_model_tiering.py +0 -0
  695. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_models.py +0 -0
  696. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_models_config_labels.py +0 -0
  697. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_needs_attention.py +0 -0
  698. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_network.py +0 -0
  699. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_new_issue_chat.py +0 -0
  700. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_next_release_tag.py +0 -0
  701. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_no_direct_gh_calls.py +0 -0
  702. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_node_shim.py +0 -0
  703. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_notifier_baseline.py +0 -0
  704. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_notifier_cli.py +0 -0
  705. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_notifier_collect.py +0 -0
  706. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_notifier_config.py +0 -0
  707. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_notifier_drive_seam.py +0 -0
  708. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_notifier_isolation.py +0 -0
  709. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_notifier_predicate.py +0 -0
  710. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_notifier_quiet_hours.py +0 -0
  711. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_notifier_service.py +0 -0
  712. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_notify.py +0 -0
  713. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_notify_drain.py +0 -0
  714. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_openapi.py +0 -0
  715. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_operational_defaults.py +0 -0
  716. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_overlap_fence.py +0 -0
  717. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_overlap_predict.py +0 -0
  718. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_packaged_deploy_units.py +0 -0
  719. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_parentage.py +0 -0
  720. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_paste_landed.py +0 -0
  721. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_pipeline.py +0 -0
  722. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_plan_followup_approve_plan_command.py +0 -0
  723. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_plan_followup_pr_command.py +0 -0
  724. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_plan_followup_review_command.py +0 -0
  725. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_plan_only.py +0 -0
  726. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_plan_parser.py +0 -0
  727. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_platform_paths.py +0 -0
  728. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_portal_bridge.py +0 -0
  729. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_portal_config.py +0 -0
  730. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_portal_sync.py +0 -0
  731. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_pr_body_lint.py +0 -0
  732. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_prereqs.py +0 -0
  733. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_production_db_guard.py +0 -0
  734. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_progress.py +0 -0
  735. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_provider_seam.py +0 -0
  736. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_providers.py +0 -0
  737. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_providers_config_labels.py +0 -0
  738. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_providers_pty.py +0 -0
  739. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_quiet_hours.py +0 -0
  740. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_quiet_hours_store_2146.py +0 -0
  741. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_reap_merged_sessions.py +0 -0
  742. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_reap_stale_interactive_tick.py +0 -0
  743. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_reconcile.py +0 -0
  744. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_reconcile_branch.py +0 -0
  745. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_reconcile_completions.py +0 -0
  746. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_reconcile_merges.py +0 -0
  747. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_reconcile_no_agent_record.py +0 -0
  748. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_reconcile_usage_limit_done.py +0 -0
  749. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_refine_chat.py +0 -0
  750. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_release_cordon_2101.py +0 -0
  751. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  752. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_release_cordon_deadlock_2240.py +0 -0
  753. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_release_propagate.py +0 -0
  754. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_release_unified_1242.py +0 -0
  755. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_release_verify.py +0 -0
  756. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_release_window.py +0 -0
  757. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_remote_auto_prune.py +0 -0
  758. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_remote_interactive_reaper.py +0 -0
  759. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_repo_edit_2220.py +0 -0
  760. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_repo_graph_fleet_2237.py +0 -0
  761. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_repo_onboard_2220.py +0 -0
  762. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_report_result_push.py +0 -0
  763. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_reports.py +0 -0
  764. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_retry.py +0 -0
  765. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_retry_advisory_1606.py +0 -0
  766. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_retry_type_1636.py +0 -0
  767. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_revalidate.py +0 -0
  768. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_review.py +0 -0
  769. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_review_end_review_without_verdict.py +0 -0
  770. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_review_parse_failure_diagnostic.py +0 -0
  771. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_review_reaffirm.py +0 -0
  772. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_review_state.py +0 -0
  773. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_review_verdict_backstop.py +0 -0
  774. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_review_verdict_override_audit.py +0 -0
  775. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_review_verdict_relay.py +0 -0
  776. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_review_zero_commits.py +0 -0
  777. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_scoped_review_wiring.py +0 -0
  778. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_scorecard.py +0 -0
  779. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_serve.py +0 -0
  780. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_serve_app_board_trim.py +0 -0
  781. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_session.py +0 -0
  782. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_slice_issue_attribution.py +0 -0
  783. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_smoke.py +0 -0
  784. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_smoke_live_checkout_restore.py +0 -0
  785. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_smoke_workflow.py +0 -0
  786. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_spend_ceiling.py +0 -0
  787. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_spend_ceiling_coordinator.py +0 -0
  788. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_split.py +0 -0
  789. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_split_work.py +0 -0
  790. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_stage_projection.py +0 -0
  791. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_stalled_pipeline.py +0 -0
  792. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_state.py +0 -0
  793. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_state_review_findings_daemon.py +0 -0
  794. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_status_fleet_footer.py +0 -0
  795. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_stop_1567.py +0 -0
  796. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_stuck.py +0 -0
  797. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_terminal_command.py +0 -0
  798. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_test_author.py +0 -0
  799. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_test_chat.py +0 -0
  800. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_test_orchestrator.py +0 -0
  801. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_test_report.py +0 -0
  802. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_test_verdict_parsing.py +0 -0
  803. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_test_verdict_transcript_floor.py +0 -0
  804. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_thin_client_board_audit.py +0 -0
  805. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_thin_client_config_load_1080.py +0 -0
  806. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_thin_client_daemon_routing_906.py +0 -0
  807. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_tmux_host.py +0 -0
  808. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_tmux_session.py +0 -0
  809. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_transcript_floor.py +0 -0
  810. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_usage.py +0 -0
  811. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_usage_limits.py +0 -0
  812. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_usage_rollup.py +0 -0
  813. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_venv_live_install_2121.py +0 -0
  814. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_version_single_source.py +0 -0
  815. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_watch.py +0 -0
  816. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  817. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_worker_events.py +0 -0
  818. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_worker_image_pin_sync.py +0 -0
  819. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_worker_safety.py +0 -0
  820. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_worker_test_scoping.py +0 -0
  821. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_worktree.py +0 -0
  822. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  823. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/Cargo.lock +0 -0
  824. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/Cargo.toml +0 -0
  825. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/cargo-config-local-quadraui.toml.example +0 -0
  826. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/audit.rs +0 -0
  827. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/chat.rs +0 -0
  828. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/data.rs +0 -0
  829. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/dialogs.rs +0 -0
  830. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/doc_tabs.rs +0 -0
  831. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/drive.rs +0 -0
  832. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/drive_queue.rs +0 -0
  833. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/escalation.rs +0 -0
  834. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/events.rs +0 -0
  835. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/fixtures.rs +0 -0
  836. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/fleet_health.rs +0 -0
  837. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/fleet_sessions.rs +0 -0
  838. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/fleet_terminals.rs +0 -0
  839. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/format.rs +0 -0
  840. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/milestone_dag.rs +0 -0
  841. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/mod.rs +0 -0
  842. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/msv.rs +0 -0
  843. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/pipeline.rs +0 -0
  844. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/plans.rs +0 -0
  845. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/render.rs +0 -0
  846. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/reports.rs +0 -0
  847. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/sessions.rs +0 -0
  848. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/settings_ui.rs +0 -0
  849. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/sidebar.rs +0 -0
  850. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/terminal.rs +0 -0
  851. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/tests.rs +0 -0
  852. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/types.rs +0 -0
  853. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/app/workspace.rs +0 -0
  854. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/bin/gtk.rs +0 -0
  855. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/commands.rs +0 -0
  856. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/lib.rs +0 -0
  857. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/main.rs +0 -0
  858. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/src/settings.rs +0 -0
  859. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/tests/acceptance.rs +0 -0
  860. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/tui/tests/cli.rs +0 -0
  861. {code_coordinator-0.5.130 → code_coordinator-0.5.132}/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.130
3
+ Version: 0.5.132
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.130
3
+ Version: 0.5.132
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
@@ -539,6 +539,7 @@ tests/test_conflict_fix.py
539
539
  tests/test_conflict_fix_semantic.py
540
540
  tests/test_coord_test.py
541
541
  tests/test_coord_test_runner_baseline.py
542
+ tests/test_coord_test_runner_populated_home.py
542
543
  tests/test_coord_test_runner_routing.py
543
544
  tests/test_coord_test_runner_toolchain.py
544
545
  tests/test_coord_web_sse_restart_live.py
@@ -581,6 +581,7 @@
581
581
  "tests/test_conflict_fix_semantic.py",
582
582
  "tests/test_coord_test.py",
583
583
  "tests/test_coord_test_runner_baseline.py",
584
+ "tests/test_coord_test_runner_populated_home.py",
584
585
  "tests/test_coord_test_runner_routing.py",
585
586
  "tests/test_coord_test_runner_toolchain.py",
586
587
  "tests/test_coord_web_sse_restart_live.py",
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.130",
2
+ "tag": "0.5.132",
3
3
  "distance": 0,
4
- "node": "g14a2d9301195335040144bf7d82384aeddb54b2b",
4
+ "node": "g77edefa9b01b23c5ab4770f72c62d1469f11346e",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-17"
@@ -309,6 +309,26 @@ RESUME_PROBE_TIMEOUT_SECONDS = 5.0
309
309
  # an unsatisfiable pre-req.
310
310
  DEFAULT_MAX_ATTEMPTS = 2
311
311
 
312
+ # #2363: the WIDER ceiling for one specific drive-death signature — an
313
+ # acceptance-author or plain work session that exited DONE/ADVISORY claiming
314
+ # success while its branch carried zero commits (see
315
+ # `_is_empty_branch_death_reason`). Every recorded instance of this shape in
316
+ # `~/.coord/queue-block-log.jsonl` self-healed 0% of the time inside
317
+ # `DEFAULT_MAX_ATTEMPTS` (2) — `claude-coordinator#2283`, `#2348`;
318
+ # `coord-portal#74` (×2); `space-invaders#1`, `#3` — every one needed a
319
+ # by-hand `operator_removed` after exactly 2 attempts, and the by-hand
320
+ # recovery is `coord acceptance author <repo> <tracking> --issue <n>` (or a
321
+ # bare `coord drive`) — the exact command the queue already tried and could
322
+ # just try again itself. Unlike a CI signal (`is_ci_infra_reason` et al in
323
+ # `coord.merge_queue`), there is no free, passive re-check here — the only
324
+ # way to learn whether a retry would succeed is to actually spend one — so
325
+ # the fix is a WIDER attempt budget for this signature alone, not a global
326
+ # increase: every other death reason keeps `DEFAULT_MAX_ATTEMPTS` unchanged.
327
+ # Still finite: once THIS budget is also exhausted, the entry blocks with
328
+ # the same diagnosis-and-recovery instructions it has today (#1526/#2273
329
+ # discipline — no silent infinite retry).
330
+ EMPTY_BRANCH_MAX_ATTEMPTS = 6
331
+
312
332
  # ── retry spacing (#2273) ────────────────────────────────────────────────────
313
333
  #
314
334
  # 2026-08-15: quadraui#508 and coord-portal#83 each spent their ENTIRE
@@ -1679,6 +1699,48 @@ def _dispatch_produced_nothing(entry: QueueEntry, facts: IssueFacts) -> bool:
1679
1699
  return facts.last_dispatched_at < entry.launched_at
1680
1700
 
1681
1701
 
1702
+ def _is_empty_branch_death_reason(reason: str | None) -> bool:
1703
+ """#2363: does *reason* name the "claimed success, wrote nothing"
1704
+ signature — an acceptance-author or plain work session that exited
1705
+ DONE/ADVISORY while its branch carried zero commits?
1706
+
1707
+ Text-matched against the drive's own `drive_exited` reason, the same
1708
+ convention `is_ci_infra_reason`/`is_ci_flaky_reason`/
1709
+ `is_ci_unreadable_reason` in `coord.merge_queue` use to classify a CI
1710
+ status string — not marker-based like `is_permanent_block_reason`,
1711
+ because neither `_die` call site this recognizes embeds a dedicated
1712
+ marker; today nothing reads their reason text for anything but display.
1713
+
1714
+ Two independent shapes, both required to include "no commits" so a
1715
+ death that merely MENTIONS one of the other words in passing does not
1716
+ false-positive:
1717
+
1718
+ * the acceptance-author JIT-slice death (`coord/drive.py:850-865`
1719
+ ADVISORY, `:887-918` DONE) — "acceptance author ... exited
1720
+ (ADVISORY|DONE) ... no commits".
1721
+ * the plain work-row death (`coord/drive.py`'s `_decide_advisory`) —
1722
+ "work ... exited ADVISORY ... no commits ... nothing was pushed".
1723
+
1724
+ Deliberately does NOT match the sibling "work ... finished with no
1725
+ branch — nothing was pushed" reason (`coord/drive.py`'s `_decide`, the
1726
+ 'done'-status-with-no-branch arm): that shape never reaches
1727
+ `branch_has_commits` at all, is not one of the two shapes the issue's
1728
+ acceptance criteria name, and has no recorded evidence of its own in
1729
+ `queue-block-log.jsonl` — folding it in unasked would be exactly the
1730
+ un-scoped widening #2230's own docstring warns a naive rule invites.
1731
+ """
1732
+ if not reason:
1733
+ return False
1734
+ lowered = reason.lower()
1735
+ if "no commits" not in lowered:
1736
+ return False
1737
+ if "acceptance author" in lowered and (
1738
+ "exited advisory" in lowered or "exited done" in lowered
1739
+ ):
1740
+ return True
1741
+ return "exited advisory" in lowered and "nothing was pushed" in lowered
1742
+
1743
+
1682
1744
  def _retry_backoff_reason(
1683
1745
  entry: QueueEntry,
1684
1746
  facts: IssueFacts,
@@ -1840,6 +1902,15 @@ def _reconcile_running(
1840
1902
  absent, refused or not — only ever changes the WORDING below; whether the
1841
1903
  entry gets another attempt is otherwise unaffected by #1845/#1844 (still
1842
1904
  ``retry`` until ``max_attempts``, still ``exhausted`` → ``blocked`` after).
1905
+ The ONE exception is #2363: when ``own_reason`` matches
1906
+ :func:`_is_empty_branch_death_reason` — an acceptance-author or work
1907
+ session that exited DONE/ADVISORY claiming success with a zero-commit
1908
+ branch — the ceiling widens to :data:`EMPTY_BRANCH_MAX_ATTEMPTS` instead
1909
+ of the passed-in ``max_attempts``, because that signature's own recorded
1910
+ history (see the constant's comment) shows a 0% self-heal rate inside
1911
+ the default budget. Still finite, still ``exhausted`` → ``blocked`` with
1912
+ the same diagnosis-and-recovery instructions once ITS wider ceiling is
1913
+ also hit.
1843
1914
  """
1844
1915
  facts = board.facts(entry.key)
1845
1916
 
@@ -2128,18 +2199,39 @@ def _reconcile_running(
2128
2199
  else ""
2129
2200
  )
2130
2201
 
2202
+ # #2363: the "claimed success, wrote nothing" signature gets a WIDER
2203
+ # ceiling than every other death reason — see `EMPTY_BRANCH_MAX_ATTEMPTS`
2204
+ # and `_is_empty_branch_death_reason`. `max()` against the passed-in
2205
+ # `max_attempts` rather than an outright override so a caller-supplied
2206
+ # `--max-attempts` larger than the #2363 default is never narrowed.
2207
+ # Additive only: any other reason (including `dispatch_only` above) still
2208
+ # uses the plain `max_attempts` ceiling, unchanged.
2209
+ empty_branch = _is_empty_branch_death_reason(own_reason)
2210
+ effective_max_attempts = (
2211
+ max(max_attempts, EMPTY_BRANCH_MAX_ATTEMPTS) if empty_branch else max_attempts
2212
+ )
2213
+ empty_branch_note = (
2214
+ f" — empty-branch DONE/ADVISORY exit (#2363): widened retry budget, "
2215
+ f"{effective_max_attempts} attempts before blocking instead of the "
2216
+ f"usual {max_attempts}"
2217
+ if empty_branch
2218
+ else ""
2219
+ )
2220
+
2131
2221
  attempts = entry.attempts + 1
2132
- if attempts < max_attempts:
2222
+ if attempts < effective_max_attempts:
2133
2223
  if own_reason:
2134
2224
  reason = (
2135
- f"{own_reason} (attempt {attempts}/{max_attempts}) — "
2136
- f"requeued at position {entry.position}{dispatch_note}"
2225
+ f"{own_reason} (attempt {attempts}/{effective_max_attempts}) — "
2226
+ f"requeued at position {entry.position}"
2227
+ f"{dispatch_note}{empty_branch_note}"
2137
2228
  )
2138
2229
  else:
2139
2230
  reason = (
2140
2231
  f"drive session died without landing the work"
2141
- f"{launched} (attempt {attempts}/{max_attempts}) — requeued at "
2142
- f"position {entry.position}{dispatch_note}"
2232
+ f"{launched} (attempt {attempts}/{effective_max_attempts}) — "
2233
+ f"requeued at position {entry.position}"
2234
+ f"{dispatch_note}{empty_branch_note}"
2143
2235
  )
2144
2236
  return (
2145
2237
  Reconcile(
@@ -2168,14 +2260,14 @@ def _reconcile_running(
2168
2260
 
2169
2261
  if own_reason:
2170
2262
  reason = (
2171
- f"{own_reason} ({attempts}/{max_attempts} attempts) — giving up"
2172
- f"{dispatch_note}"
2263
+ f"{own_reason} ({attempts}/{effective_max_attempts} attempts) — "
2264
+ f"giving up{dispatch_note}{empty_branch_note}"
2173
2265
  )
2174
2266
  else:
2175
2267
  reason = (
2176
2268
  f"drive session died without landing the work"
2177
- f"{launched} {attempts}/{max_attempts} times — giving up"
2178
- f"{dispatch_note}"
2269
+ f"{launched} {attempts}/{effective_max_attempts} times — giving up"
2270
+ f"{dispatch_note}{empty_branch_note}"
2179
2271
  )
2180
2272
  return (
2181
2273
  Reconcile(entry.key, "exhausted", reason, occupies=False),
@@ -91,6 +91,24 @@
91
91
  # see the long note above `ensure_baseline_worktree` for why the fallback
92
92
  # arm is excluded rather than "not done yet".
93
93
  #
94
+ # 7. THE POPULATED-$HOME ARM (#2269). A branch can be green here and red in
95
+ # CI's `populated-home` job, and until #2269 whether that was caught
96
+ # depended on WHICH MACHINE the Test stage landed on. That job's
97
+ # environment is SYNTHESIZED by scripts/run_tests_in_populated_home.sh (a
98
+ # thin-client ~/.coord with no coordinator.yml, no `sqlite3` on PATH, a
99
+ # $TMPDIR under an ancestor pytest config); this runner otherwise inherits
100
+ # whatever environment the assigned machine happens to have. dellserver —
101
+ # the daemon host — is structurally incapable of reproducing knob 1, so
102
+ # #2174 passed the Test gate, spent a full adversarial review, and was
103
+ # caught only when `coord fix` noticed CI disagreed. So once the ordinary
104
+ # python arm is green, the test files THE DIFF TOUCHED are re-run through
105
+ # that same harness. Diff-scoped because running the suite twice is not
106
+ # affordable (#2169). This arm can only ever FAIL, never downgrade: the
107
+ # harness's own `exit 2` ("a knob failed to take effect") is a
108
+ # FAIL-with-warning, never a skip. Python arm only, and it names itself
109
+ # (`python-populated-home`) in every verdict line it emits, so a red result
110
+ # is attributable rather than a mystery.
111
+ #
94
112
  # Exit codes: 0 pass (or skip — nothing to test), 1 genuine failure or refusal
95
113
  # (cannot determine what to test), 2 usage, 3 INFRASTRUCTURE — the suite could
96
114
  # not run at all (a required toolchain is missing); no verdict may be inferred
@@ -215,9 +233,77 @@ else
215
233
  log "routing: repo=$REPO_NAME — no path rule and no --fallback-command"
216
234
  fi
217
235
 
236
+ # ── populated-$HOME arm scoping (#2269) ─────────────────────────────────────
237
+ #
238
+ # WHICH FILES. Only the python test files THIS DIFF touched, and only ones that
239
+ # still exist in the worktree (a diff that DELETES a test file must not hand
240
+ # pytest a path that is not there). `tests/acceptance/**` is excluded for the
241
+ # same reason the ordinary arm passes `--ignore=tests/acceptance`: that sealed
242
+ # suite is gated separately through the #2164 `--ci` wrapper, and a
243
+ # red-by-design slice must not fail every concurrent branch.
244
+ #
245
+ # WHY DIFF-SCOPED AND NOT THE WHOLE SUITE. The full suite already exceeds
246
+ # Claude Code's 600s Bash ceiling (#2169); running it a second time under the
247
+ # harness is not on the table. Diff-scoping is what makes this arm affordable —
248
+ # it costs roughly one test FILE's runtime, paid only by branches that touch
249
+ # python tests at all. The always-on cover for the rest of the suite is
250
+ # tests/test_ambient_home_isolation.py (which runs everywhere, on every branch);
251
+ # this arm exists for the case that file cannot cover, a NEWLY WRITTEN test of
252
+ # this class (#2174 was exactly that).
253
+ #
254
+ # Computed HERE, beside the routing decision, rather than inside `run_python`,
255
+ # because `--print-routing` must be able to name the arm before a worker pushes.
256
+ POPULATED_TESTS=""
257
+ POPULATED_COUNT=0
258
+ POPULATED_ARM=0
259
+ POPULATED_SKIP_REASON=""
260
+
261
+ is_python_test_file() {
262
+ case "$1" in
263
+ tests/acceptance/*) return 1 ;;
264
+ tests/*) ;;
265
+ *) return 1 ;;
266
+ esac
267
+ case "${1##*/}" in
268
+ test_*.py) return 0 ;;
269
+ *) return 1 ;;
270
+ esac
271
+ }
272
+
273
+ if [[ "$ROUTE_MODE" == "coordinator" && "$RUN_PY" -eq 1 ]]; then
274
+ if [[ "$DIFF_FAILED" -eq 1 ]]; then
275
+ POPULATED_SKIP_REASON="the diff against $BASE_REF could not be computed, so the arm has no scope to run over"
276
+ else
277
+ while IFS= read -r f; do
278
+ [[ -z "$f" ]] && continue
279
+ is_python_test_file "$f" || continue
280
+ # Deleted-by-the-diff files are still listed by `git diff --name-only`.
281
+ [[ -f "$WT/$f" ]] || continue
282
+ POPULATED_TESTS="${POPULATED_TESTS:+$POPULATED_TESTS }$f"
283
+ POPULATED_COUNT=$((POPULATED_COUNT + 1))
284
+ done <<<"$CHANGED"
285
+ [[ "$POPULATED_COUNT" -gt 0 ]] && POPULATED_ARM=1
286
+ [[ "$POPULATED_ARM" -eq 0 ]] && \
287
+ POPULATED_SKIP_REASON="the diff touches no python test files under tests/ (outside the sealed tests/acceptance/)"
288
+ fi
289
+ elif [[ "$ROUTE_MODE" == "coordinator" ]]; then
290
+ POPULATED_SKIP_REASON="the python arm is not routed for this diff"
291
+ else
292
+ POPULATED_SKIP_REASON="the populated-\$HOME arm is this repo's python arm only"
293
+ fi
294
+
295
+ if [[ "$ROUTE_MODE" == "coordinator" ]]; then
296
+ if [[ "$POPULATED_ARM" -eq 1 ]]; then
297
+ log "routing: populated-\$HOME arm (#2269) will re-run $POPULATED_COUNT diff-scoped test file(s): $POPULATED_TESTS"
298
+ else
299
+ log "routing: populated-\$HOME arm (#2269) SKIPPED — $POPULATED_SKIP_REASON"
300
+ fi
301
+ fi
302
+
218
303
  if [[ "$PRINT_ROUTING" -eq 1 ]]; then
219
304
  case "$ROUTE_MODE" in
220
- coordinator) printf 'ROUTING mode=coordinator pytest=%s cargo=%s\n' "$RUN_PY" "$RUN_RS" ;;
305
+ coordinator) printf 'ROUTING mode=coordinator pytest=%s cargo=%s populated-home=%s\n' \
306
+ "$RUN_PY" "$RUN_RS" "$POPULATED_ARM" ;;
221
307
  fallback) printf 'ROUTING mode=fallback run=%s\n' "$RUN_FALLBACK" ;;
222
308
  unknown) printf 'ROUTING mode=unknown\n' ;;
223
309
  esac
@@ -245,6 +331,8 @@ EXIT_INFRA=3
245
331
  # baseline is red, so this is not a verdict on the branch either (#2170).
246
332
  BASELINE_RED_SUITES=()
247
333
  EXIT_BASELINE_RED=4
334
+ # See the note at the dispatch site below.
335
+ PY_FAIL_SUITE="python"
248
336
 
249
337
  # ── baseline comparison (#2170) ──────────────────────────────────────────────
250
338
  #
@@ -570,6 +658,98 @@ run_python_acceptance_ci() {
570
658
  return 1
571
659
  }
572
660
 
661
+ # ── the populated-$HOME arm (#2269) ─────────────────────────────────────────
662
+ #
663
+ # Re-run the diff's own python test files in the environment of a REAL FLEET
664
+ # MACHINE instead of this machine's, using the SAME harness CI's
665
+ # `populated-home` job uses (scripts/run_tests_in_populated_home.sh, from the
666
+ # BRANCH's tree — so a branch that changes the harness is tested against its own
667
+ # version, exactly like CI). See item 7 in the header for why this is not
668
+ # optional: without it, catching this failure class is a property of which
669
+ # machine the Test stage was routed to.
670
+ #
671
+ # THIS ARM ONLY EVER FAILS. It is the mirror image of #2170's baseline check,
672
+ # which only ever downgrades and is therefore deliberately hard to trigger. This
673
+ # one is the STRICT direction, so every ambiguity resolves the other way:
674
+ #
675
+ # * The harness's own `exit 2` — "a knob failed to take effect", i.e. the
676
+ # environment it claims to synthesize was not synthesized — is a FAIL with a
677
+ # warning, NOT a skip. A guard that cannot guard reporting green is the exact
678
+ # failure mode #2170 exists to prevent, and a Test gate that silently
679
+ # tolerates it is back to routing luck.
680
+ # * Any other non-zero exit is a FAIL naming this arm.
681
+ #
682
+ # There is no flake filter here on purpose: these same files went green in the
683
+ # ordinary arm moments ago, so a failure here is by construction environmental,
684
+ # and re-running would only launder it.
685
+ #
686
+ # The two SKIPs it can report (no python test files in the diff; the harness
687
+ # absent from this branch's tree) are announced in the verdict stream and by
688
+ # `--print-routing`, never silent.
689
+ run_python_populated_home() {
690
+ local venv="$1"
691
+ local rel="scripts/run_tests_in_populated_home.sh"
692
+ local script="$WT/$rel"
693
+
694
+ if [[ "$POPULATED_ARM" -eq 0 ]]; then
695
+ say "SKIP(python-populated-home): not run — $POPULATED_SKIP_REASON (#2269)"
696
+ return 0
697
+ fi
698
+ if [[ ! -f "$script" ]]; then
699
+ # A branch (or a checkout) predating the harness. Skipping is the only
700
+ # option that does not redden every such branch, but it is stated out
701
+ # loud rather than inferred from silence.
702
+ warn "populated-home: $rel is not present in this worktree — the arm cannot run"
703
+ say "SKIP(python-populated-home): not run — the harness $rel is absent from this branch's tree (#2269)"
704
+ return 0
705
+ fi
706
+
707
+ local out="$WT/.pytest-populated-home.out"
708
+ local started=$SECONDS
709
+ local rc=0
710
+ log "running: $rel over $POPULATED_COUNT diff-scoped test file(s): $POPULATED_TESTS"
711
+ # shellcheck disable=SC2086 # the file list is intentionally word-split
712
+ (cd "$WT" && bash "$script" "$venv/bin/python" -m pytest -q --tb=short $POPULATED_TESTS) \
713
+ >"$out" 2>&1 || rc=$?
714
+ local elapsed=$((SECONDS - started))
715
+
716
+ if [[ "$rc" -eq 0 ]]; then
717
+ say "PASS(python-populated-home): $POPULATED_COUNT diff-scoped test file(s) green in a synthesized fleet \$HOME (+${elapsed}s)"
718
+ return 0
719
+ fi
720
+
721
+ # The harness's own guard failures. `run_tests_in_populated_home.sh`
722
+ # reserves exit 2 for exactly this case, so check `rc` directly first —
723
+ # it can't drift out of sync with itself. The message grep is a second,
724
+ # belt-and-braces signal for a harness that fails this way but exits with
725
+ # some other code (or an older/forked copy of the script); if the exact
726
+ # wording ever changes, `rc -eq 2` alone still catches the exit-2 case.
727
+ # Distinguished from a test failure because the two need different fixes
728
+ # — but BOTH are a FAIL, so mis-classifying one as the other can only
729
+ # ever mis-word a red verdict, never hide one.
730
+ if [[ "$rc" -eq 2 ]] || grep -qE "the guard itself is broken|the guard is too broad|is not thin-client shaped" "$out"; then
731
+ say "FAIL(python-populated-home): the harness $rel exited $rc because A KNOB FAILED TO TAKE EFFECT — the environment it claims to synthesize (thin-client ~/.coord, no sqlite3, \$TMPDIR under an ancestor pytest config) was not the environment the tests ran in, so a green here would have meant nothing. This is reported as a FAILURE, not a skip, on purpose (#2269)."
732
+ tail -n 20 "$out" | sed 's/^/ /'
733
+ return 1
734
+ fi
735
+
736
+ say "FAIL(python-populated-home): $POPULATED_COUNT diff-scoped test file(s) PASS in this machine's ambient environment but FAIL in a synthesized fleet \$HOME (thin-client ~/.coord with no coordinator.yml, no sqlite3 on PATH, \$TMPDIR under an ancestor pytest config) — this is CI's populated-home job's failure class, caught here instead of at the merge gate (#2269). Reproduce with: $rel python -m pytest $POPULATED_TESTS"
737
+ printf '%s\n' "$POPULATED_TESTS" | tr ' ' '\n' | sed 's/^/ /'
738
+ tail -n 40 "$out" | sed 's/^/ /'
739
+ return 1
740
+ }
741
+
742
+ # The arms that run AFTER the ordinary pytest suite has gone green (or been
743
+ # judged a tolerated flake), in cost order. Short-circuiting on the first
744
+ # failure is deliberate: the verdict is already attributable to a named arm, and
745
+ # there is nothing to learn from paying for the next one.
746
+ run_python_post_arms() {
747
+ local venv="$1"
748
+ run_python_acceptance_ci "$venv" || return 1
749
+ run_python_populated_home "$venv" || { PY_FAIL_SUITE="python-populated-home"; return 1; }
750
+ return 0
751
+ }
752
+
573
753
  run_python() {
574
754
  local venv="$WT/.venv"
575
755
  if [[ ! -x "$venv/bin/python" ]]; then
@@ -618,7 +798,7 @@ run_python() {
618
798
  # `set -u` on older bash.
619
799
  if (cd "$WT" && "$venv/bin/python" -m pytest -q --tb=short --ignore=tests/acceptance ${par[@]+"${par[@]}"}) >"$out" 2>&1; then
620
800
  log "ordinary suite: $(grep -oE '[0-9]+ passed[^)]*' "$out" | tail -1)"
621
- run_python_acceptance_ci "$venv"
801
+ run_python_post_arms "$venv"
622
802
  return $?
623
803
  fi
624
804
 
@@ -645,7 +825,7 @@ run_python() {
645
825
  say "FLAKE(python): $count test(s) failed in the full run but PASS in isolation"
646
826
  printf '%s\n' "$failed" | sed 's/^/ /'
647
827
  FLAKES+=("python:$count")
648
- run_python_acceptance_ci "$venv"
828
+ run_python_post_arms "$venv"
649
829
  return $?
650
830
  fi
651
831
 
@@ -854,8 +1034,13 @@ mark_failed() {
854
1034
  FAILED_SUITES+=("$suite")
855
1035
  }
856
1036
 
1037
+ # Which name a failing python arm books itself under. "python" for every arm
1038
+ # that existed before #2269; the populated-$HOME arm overwrites it with its own
1039
+ # name so `RESULT: FAIL (python-populated-home)` says which environment went
1040
+ # red, not merely that pytest did (#2269's "a red result is attributable"
1041
+ # requirement). It is only ever read after `run_python` returns non-zero.
857
1042
  if [[ "$RUN_PY" -eq 1 ]]; then
858
- run_python || mark_failed python
1043
+ run_python || mark_failed "$PY_FAIL_SUITE"
859
1044
  fi
860
1045
  if [[ "$RUN_RS" -eq 1 ]]; then
861
1046
  run_rust || mark_failed rust