code-coordinator 0.5.59__tar.gz → 0.5.61__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 (816) hide show
  1. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/CLAUDE.md +10 -0
  2. {code_coordinator-0.5.59/code_coordinator.egg-info → code_coordinator-0.5.61}/PKG-INFO +1 -1
  3. {code_coordinator-0.5.59 → code_coordinator-0.5.61/code_coordinator.egg-info}/PKG-INFO +1 -1
  4. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/code_coordinator.egg-info/SOURCES.txt +1 -0
  5. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/code_coordinator.egg-info/scm_file_list.json +1 -0
  6. code_coordinator-0.5.61/code_coordinator.egg-info/scm_version.json +8 -0
  7. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/agent.py +37 -6
  8. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/release.py +137 -26
  9. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/providers/claude.py +4 -1
  10. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/providers/claude_pty.py +5 -1
  11. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/release_window.py +14 -1
  12. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_release_window.py +264 -3
  13. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_providers_pty.py +22 -0
  14. code_coordinator-0.5.61/tests/test_worker_test_scoping.py +162 -0
  15. code_coordinator-0.5.59/code_coordinator.egg-info/scm_version.json +0 -8
  16. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/.claude/commands/board.md +0 -0
  17. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/.claude/commands/complete-session.md +0 -0
  18. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/.claude/commands/coordinator.md +0 -0
  19. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/.githooks/_lib.sh +0 -0
  20. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/.githooks/post-checkout +0 -0
  21. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/.githooks/post-commit +0 -0
  22. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/.githooks/post-merge +0 -0
  23. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  24. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/.github/workflows/auto-release.yml +0 -0
  25. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/.github/workflows/cargo-test.yml +0 -0
  26. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/.github/workflows/publish.yml +0 -0
  27. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/.github/workflows/release-tui.yml +0 -0
  28. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/.github/workflows/test.yml +0 -0
  29. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/.gitignore +0 -0
  30. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/GOAL.md +0 -0
  31. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/LICENSE +0 -0
  32. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/MANIFEST.in +0 -0
  33. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/README.md +0 -0
  34. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/code_coordinator.egg-info/dependency_links.txt +0 -0
  35. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/code_coordinator.egg-info/entry_points.txt +0 -0
  36. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/code_coordinator.egg-info/requires.txt +0 -0
  37. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/code_coordinator.egg-info/top_level.txt +0 -0
  38. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/__init__.py +0 -0
  39. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/_board_mapping.py +0 -0
  40. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/acceptance.py +0 -0
  41. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/acceptance_drivers.py +0 -0
  42. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/agent_app.py +0 -0
  43. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/agent_update.py +0 -0
  44. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/agents/opencode/.gitignore +0 -0
  45. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/agents/opencode/agents/work.md +0 -0
  46. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/agents/opencode/routing.jsonc +0 -0
  47. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/audit.py +0 -0
  48. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/auto_loop.py +0 -0
  49. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/board_bool_guard.py +0 -0
  50. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/board_service.py +0 -0
  51. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/board_wire.py +0 -0
  52. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/brain.py +0 -0
  53. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/branch_model.py +0 -0
  54. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/bug_intake.py +0 -0
  55. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/cargo_cache.py +0 -0
  56. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/ci_github.py +0 -0
  57. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/ci_store.py +0 -0
  58. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/claim.py +0 -0
  59. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/cli.py +0 -0
  60. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/client.py +0 -0
  61. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/__init__.py +0 -0
  62. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/_common.py +0 -0
  63. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/acceptance.py +0 -0
  64. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/agent_ops.py +0 -0
  65. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/audit.py +0 -0
  66. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/chat.py +0 -0
  67. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/dispatch.py +0 -0
  68. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/dispatch_workers.py +0 -0
  69. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/drive.py +0 -0
  70. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/drive_queue.py +0 -0
  71. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/gate_a.py +0 -0
  72. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/gates.py +0 -0
  73. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/issues.py +0 -0
  74. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/lifecycle.py +0 -0
  75. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/merge.py +0 -0
  76. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/milestone.py +0 -0
  77. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/plan_followup.py +0 -0
  78. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/plans.py +0 -0
  79. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/portal.py +0 -0
  80. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/report.py +0 -0
  81. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/review.py +0 -0
  82. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/scorecard.py +0 -0
  83. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/sessions.py +0 -0
  84. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/setup.py +0 -0
  85. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/status.py +0 -0
  86. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/terminal.py +0 -0
  87. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/test_gate.py +0 -0
  88. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/commands/tui.py +0 -0
  89. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/comments.py +0 -0
  90. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/config.py +0 -0
  91. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/conflict_fix.py +0 -0
  92. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dao.py +0 -0
  93. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/__init__.py +0 -0
  94. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/fixture.py +0 -0
  95. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/index.html +0 -0
  96. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/server.py +0 -0
  97. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/terminal.py +0 -0
  98. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/.gitignore +0 -0
  99. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/components.json +0 -0
  100. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/dist/assets/Gallery-da3qNiIw.js +0 -0
  101. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  102. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/dist/assets/Terminal-skVFCxPU.js +0 -0
  103. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/dist/assets/index-DltfZR5f.js +0 -0
  104. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  105. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  106. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  107. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  108. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  109. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/dist/index.html +0 -0
  110. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  111. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/dist/sw.js +0 -0
  112. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  113. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  114. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  115. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  116. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  117. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  118. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  119. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  120. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  121. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  122. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/eslint.config.js +0 -0
  123. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/index.html +0 -0
  124. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  125. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/package-lock.json +0 -0
  126. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/package.json +0 -0
  127. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  128. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/playwright.config.ts +0 -0
  129. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/postcss.config.js +0 -0
  130. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  131. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  132. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  133. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/App.tsx +0 -0
  134. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/api/client.ts +0 -0
  135. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  136. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  137. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  138. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  139. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  140. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  141. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  142. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  143. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  144. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  145. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  146. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  147. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  148. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  149. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  150. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  151. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  152. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  153. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  154. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  155. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  156. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  157. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  158. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  159. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  160. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  161. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  162. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  163. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  164. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  165. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  166. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  167. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  168. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  169. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  170. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/index.css +0 -0
  171. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  172. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  173. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/main.tsx +0 -0
  174. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  175. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  176. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  177. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  178. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  179. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  180. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  181. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  182. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  183. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  184. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  185. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  186. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  187. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  188. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  189. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  190. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  191. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  192. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  193. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  194. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  195. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  196. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  197. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/tailwind.config.js +0 -0
  198. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/tsconfig.json +0 -0
  199. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  200. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dashboard/webapp/vite.config.ts +0 -0
  201. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/db.py +0 -0
  202. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dead_end.py +0 -0
  203. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/README.md +0 -0
  204. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-agent.service +0 -0
  205. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-db-backup.service +0 -0
  206. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-db-backup.sh +0 -0
  207. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-db-backup.timer +0 -0
  208. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-drive-queue.service +0 -0
  209. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-drive-queue.timer +0 -0
  210. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-notify.service +0 -0
  211. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-notify.timer +0 -0
  212. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-release-propagate.service +0 -0
  213. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-release-propagate.timer +0 -0
  214. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-release-window.service +0 -0
  215. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-release-window.timer +0 -0
  216. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-serve.service +0 -0
  217. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-web-dist-build.service +0 -0
  218. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-web-dist-build.timer +0 -0
  219. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy/coord-web.service +0 -0
  220. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy_manifest.py +0 -0
  221. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deploy_units.py +0 -0
  222. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/deps.py +0 -0
  223. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/diagnose.py +0 -0
  224. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dispatch.py +0 -0
  225. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/dist_name.py +0 -0
  226. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/drive.py +0 -0
  227. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/drive_queue.py +0 -0
  228. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/drive_state.py +0 -0
  229. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/events.py +0 -0
  230. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/failure_class.py +0 -0
  231. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/filelock.py +0 -0
  232. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/fleet_config_health.py +0 -0
  233. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/freshness.py +0 -0
  234. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/gate_a.py +0 -0
  235. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/gate_b.py +0 -0
  236. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/gate_snapshot.py +0 -0
  237. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/gates.py +0 -0
  238. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/github_ops.py +0 -0
  239. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/goal.py +0 -0
  240. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/graph_health.py +0 -0
  241. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/__init__.py +0 -0
  242. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/aggregate.py +0 -0
  243. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/__init__.py +0 -0
  244. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/agent_install.py +0 -0
  245. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/cargo_targets.py +0 -0
  246. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/claude_binary.py +0 -0
  247. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/deploy_lane_facts.py +0 -0
  248. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/disk.py +0 -0
  249. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/fleet_board.py +0 -0
  250. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  251. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/fleet_phantom.py +0 -0
  252. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/fleet_unit_drift.py +0 -0
  253. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/graph.py +0 -0
  254. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/plan_usage.py +0 -0
  255. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/repo_state.py +0 -0
  256. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/spawned_coord.py +0 -0
  257. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/timer_active.py +0 -0
  258. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/toolchain.py +0 -0
  259. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/unit_drift.py +0 -0
  260. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/unit_enablement.py +0 -0
  261. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/checks/worktrees.py +0 -0
  262. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/cli.py +0 -0
  263. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/context.py +0 -0
  264. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/fleet_snapshot.py +0 -0
  265. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/models.py +0 -0
  266. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/pypi.py +0 -0
  267. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/registry.py +0 -0
  268. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/render.py +0 -0
  269. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/health/units.py +0 -0
  270. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/hooks.py +0 -0
  271. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/housekeeping.py +0 -0
  272. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/interactive.py +0 -0
  273. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/issue_store.py +0 -0
  274. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/liveness_auditor.py +0 -0
  275. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/machine_pause.py +0 -0
  276. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/merge_queue.py +0 -0
  277. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/milestone_chat.py +0 -0
  278. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/milestone_dispatch.py +0 -0
  279. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/milestone_gate.py +0 -0
  280. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/milestone_order.py +0 -0
  281. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/mock_author.py +0 -0
  282. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/models.py +0 -0
  283. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/network.py +0 -0
  284. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/new_issue_chat.py +0 -0
  285. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/notifier/__init__.py +0 -0
  286. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/notifier/baseline.py +0 -0
  287. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/notifier/cli.py +0 -0
  288. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/notifier/collect.py +0 -0
  289. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/notifier/digest.py +0 -0
  290. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/notifier/models.py +0 -0
  291. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/notifier/predicate.py +0 -0
  292. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/notifier/service.py +0 -0
  293. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/notifier/store.py +0 -0
  294. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/notifier/transport.py +0 -0
  295. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/notify.py +0 -0
  296. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/openapi.py +0 -0
  297. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/overlap_fence.py +0 -0
  298. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/parentage.py +0 -0
  299. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/parentage_github.py +0 -0
  300. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/pipeline.py +0 -0
  301. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/plan_parser.py +0 -0
  302. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/plans.py +0 -0
  303. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/platform_paths.py +0 -0
  304. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/portal_bridge.py +0 -0
  305. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/pr_body_lint.py +0 -0
  306. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/prereqs.py +0 -0
  307. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/progress.py +0 -0
  308. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/providers/__init__.py +0 -0
  309. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/providers/base.py +0 -0
  310. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/providers/opencode.py +0 -0
  311. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/reconcile.py +0 -0
  312. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/refine_chat.py +0 -0
  313. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/release_cordon.py +0 -0
  314. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/release_propagate.py +0 -0
  315. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/release_verify.py +0 -0
  316. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/reports.py +0 -0
  317. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/revalidate.py +0 -0
  318. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/review.py +0 -0
  319. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/scorecard.py +0 -0
  320. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/serve_app.py +0 -0
  321. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/skills/update-issue/SKILL.md +0 -0
  322. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/smoke.py +0 -0
  323. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/spend_ceiling.py +0 -0
  324. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/split_work.py +0 -0
  325. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/stage_projection.py +0 -0
  326. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/state.py +0 -0
  327. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/test_author.py +0 -0
  328. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/test_chat.py +0 -0
  329. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/test_orchestrator.py +0 -0
  330. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/test_report.py +0 -0
  331. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/tui_release.py +0 -0
  332. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/usage.py +0 -0
  333. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/usage_limits.py +0 -0
  334. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/usage_rollup.py +0 -0
  335. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coord/worker_events.py +0 -0
  336. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/coordinator.example.yml +0 -0
  337. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-agent.service +0 -0
  338. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-db-backup.service +0 -0
  339. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-db-backup.sh +0 -0
  340. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-db-backup.timer +0 -0
  341. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-drive-queue.service +0 -0
  342. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-drive-queue.timer +0 -0
  343. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-notify.service +0 -0
  344. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-notify.timer +0 -0
  345. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-release-propagate.service +0 -0
  346. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-release-propagate.timer +0 -0
  347. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-release-window.service +0 -0
  348. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-release-window.timer +0 -0
  349. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-serve.service +0 -0
  350. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-web-dist-build.service +0 -0
  351. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-web-dist-build.sh +0 -0
  352. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-web-dist-build.timer +0 -0
  353. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-web-rollback.sh +0 -0
  354. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/coord-web.service +0 -0
  355. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/deploy/node-shim.sh +0 -0
  356. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/AGENT_OPERATIONS.md +0 -0
  357. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/ARCHITECTURE.md +0 -0
  358. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/ARCH_SECURITY_GATES.md +0 -0
  359. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/COCKPIT.md +0 -0
  360. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/CONTROL_CENTER.md +0 -0
  361. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/CROSS_PLATFORM.md +0 -0
  362. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/CUSTOMER_PORTAL.md +0 -0
  363. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/DRIVE_QUEUE.md +0 -0
  364. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/EPHEMERAL_WORKERS.md +0 -0
  365. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/FORGE_MIGRATION.md +0 -0
  366. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/GRAPHIFY_SETUP.md +0 -0
  367. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/ISSUE_GUIDANCE.md +0 -0
  368. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/MAC_MINI.md +0 -0
  369. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  370. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/NOTIFIER.md +0 -0
  371. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/OPENCODE_VERIFICATION.md +0 -0
  372. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/OPERATING_GOTCHAS.md +0 -0
  373. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/ORACLE_LOOP.md +0 -0
  374. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/PHONE_WEBAPP.md +0 -0
  375. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/PIPELINE_V2.md +0 -0
  376. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/PLATFORM_EVOLUTION.md +0 -0
  377. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/SECOND_BACKEND.md +0 -0
  378. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/STORE_SERVICE.md +0 -0
  379. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  380. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/WEB_CONTROL_CENTER.md +0 -0
  381. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/mocks/web/README.md +0 -0
  382. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/mocks/web/_tokens.css +0 -0
  383. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/mocks/web/issue-detail.html +0 -0
  384. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/mocks/web/pipeline-narrow.html +0 -0
  385. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/docs/mocks/web/pipeline-wide.html +0 -0
  386. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/graphify-out/.gitignore +0 -0
  387. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/install-agent.sh +0 -0
  388. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/pyproject.toml +0 -0
  389. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/audit_review_verdict_overrides.py +0 -0
  390. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  391. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/azure-workers/build-worker-image.sh +0 -0
  392. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/azure-workers/coordinator-machine.py +0 -0
  393. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/azure-workers/epic-down.sh +0 -0
  394. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/azure-workers/epic-up.sh +0 -0
  395. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/azure-workers/preflight.sh +0 -0
  396. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/azure-workers/provision-worker.sh +0 -0
  397. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  398. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  399. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/azure-workers/verify-github-token.sh +0 -0
  400. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/codegen.py +0 -0
  401. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/coord-test-runner.sh +0 -0
  402. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/drive-batch.sh +0 -0
  403. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/gen_board_fixture.py +0 -0
  404. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/next_release_tag.py +0 -0
  405. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/run_tests_in_populated_home.sh +0 -0
  406. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/run_tests_without_gh.sh +0 -0
  407. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/smoke_437_interactive.py +0 -0
  408. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/verify_878_review_capture.py +0 -0
  409. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/verify_release_published.py +0 -0
  410. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/scripts/verify_release_wheel.py +0 -0
  411. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/setup.cfg +0 -0
  412. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/SMOKE_SET.md +0 -0
  413. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/__init__.py +0 -0
  414. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  415. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-33/contract.md +0 -0
  416. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-33/manifest.yml +0 -0
  417. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  418. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  419. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  420. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  421. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-37/conftest.py +0 -0
  422. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-37/contract.md +0 -0
  423. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-37/manifest.yml +0 -0
  424. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  425. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  426. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-38/contract.md +0 -0
  427. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-38/manifest.yml +0 -0
  428. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  429. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  430. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  431. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  432. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  433. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  434. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  435. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  436. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  437. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  438. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-51/contract.md +0 -0
  439. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  440. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  441. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-51/manifest.yml +0 -0
  442. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  443. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-51/tsconfig.json +0 -0
  444. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  445. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/conftest.py +0 -0
  446. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/board-pipeline-basic.json +0 -0
  447. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  448. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  449. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  450. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/playwright/all_pass.json +0 -0
  451. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  452. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/playwright/mixed_fail.json +0 -0
  453. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  454. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  455. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/playwright/skip.json +0 -0
  456. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/playwright/truncated.json +0 -0
  457. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  458. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  459. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  460. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  461. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  462. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  463. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  464. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  465. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_acceptance.py +0 -0
  466. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_acceptance_drivers.py +0 -0
  467. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent.py +0 -0
  468. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_api_error.py +0 -0
  469. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_app.py +0 -0
  470. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_branch_base.py +0 -0
  471. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_branch_capture.py +0 -0
  472. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_config_free_1712.py +0 -0
  473. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_deploy_units_endpoint.py +0 -0
  474. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_dirty_worktree.py +0 -0
  475. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_graph_self_heal.py +0 -0
  476. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_health_h3.py +0 -0
  477. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_idle_restart.py +0 -0
  478. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_push_failure.py +0 -0
  479. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_reap.py +0 -0
  480. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_repos_and_pull.py +0 -0
  481. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_restart_services_endpoint.py +0 -0
  482. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_startup_diagnostics.py +0 -0
  483. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_update.py +0 -0
  484. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_update_bluegreen.py +0 -0
  485. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_usage_limit.py +0 -0
  486. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_agent_zero_commit.py +0 -0
  487. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_ambient_home_isolation.py +0 -0
  488. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_approve_reject_plan.py +0 -0
  489. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_approve_usage_gate.py +0 -0
  490. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_assignment_already_recorded_daemon.py +0 -0
  491. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_audit_log.py +0 -0
  492. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_audit_outcome.py +0 -0
  493. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_audit_query.py +0 -0
  494. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_auto_loop.py +0 -0
  495. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_auto_release_publish_2035.py +0 -0
  496. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_base_checkout_restore.py +0 -0
  497. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_board_cap_762.py +0 -0
  498. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_board_fixture.py +0 -0
  499. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_board_read_path.py +0 -0
  500. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_board_service.py +0 -0
  501. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_board_state.py +0 -0
  502. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_board_wire.py +0 -0
  503. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_brain.py +0 -0
  504. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_branch_model.py +0 -0
  505. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_bug_intake.py +0 -0
  506. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_build_worker_image_env_update.py +0 -0
  507. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cargo_cache.py +0 -0
  508. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_ci_acceptance_gate_1950.py +0 -0
  509. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_ci_store.py +0 -0
  510. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_claim.py +0 -0
  511. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_acceptance.py +0 -0
  512. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_assign.py +0 -0
  513. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  514. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_assign_interactive_remote.py +0 -0
  515. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_assign_provider.py +0 -0
  516. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_audit.py +0 -0
  517. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_chat_continue.py +0 -0
  518. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_diagnose_config_provenance.py +0 -0
  519. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_diagnose_graph.py +0 -0
  520. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_doctor.py +0 -0
  521. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_doctor_config_free_1801.py +0 -0
  522. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  523. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_drive.py +0 -0
  524. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_drive_queue.py +0 -0
  525. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_escalate.py +0 -0
  526. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_fix_headless_review.py +0 -0
  527. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_gate_a.py +0 -0
  528. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_install_drift.py +0 -0
  529. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_install_skills.py +0 -0
  530. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_issue_create_label.py +0 -0
  531. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_issue_reopen.py +0 -0
  532. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_merge.py +0 -0
  533. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_milestone_assign.py +0 -0
  534. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_milestone_capture.py +0 -0
  535. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_milestone_chat_add_child.py +0 -0
  536. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_milestone_dispatch.py +0 -0
  537. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_milestone_gate_b.py +0 -0
  538. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_milestone_gate_c.py +0 -0
  539. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_milestone_order.py +0 -0
  540. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  541. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_milestone_ship.py +0 -0
  542. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_network.py +0 -0
  543. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_new_issue_chat.py +0 -0
  544. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_plans.py +0 -0
  545. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_portal.py +0 -0
  546. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_pull_artifact.py +0 -0
  547. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_queue.py +0 -0
  548. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_reattach_sessions.py +0 -0
  549. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_refine_board.py +0 -0
  550. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_release_preflight.py +0 -0
  551. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_release_propagate.py +0 -0
  552. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_scorecard.py +0 -0
  553. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_set_review_findings.py +0 -0
  554. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_status_advisory_terminal.py +0 -0
  555. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_status_merge_queue.py +0 -0
  556. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_status_provider.py +0 -0
  557. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_status_review_finalizing.py +0 -0
  558. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_status_test_failed_tag.py +0 -0
  559. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_status_usage_limit.py +0 -0
  560. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_sync_comments_873.py +0 -0
  561. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_test_plan.py +0 -0
  562. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_track.py +0 -0
  563. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_tui_update.py +0 -0
  564. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cli_wait.py +0 -0
  565. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_client_base_install.py +0 -0
  566. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_comments.py +0 -0
  567. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_completion_summary.py +0 -0
  568. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_config.py +0 -0
  569. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_config_acceptance.py +0 -0
  570. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_config_audit.py +0 -0
  571. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_config_pricing.py +0 -0
  572. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_config_usage_gate.py +0 -0
  573. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_conflict_fix.py +0 -0
  574. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_conflict_fix_semantic.py +0 -0
  575. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_coord_test.py +0 -0
  576. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_coord_test_runner_baseline.py +0 -0
  577. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_coord_test_runner_routing.py +0 -0
  578. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_coord_test_runner_toolchain.py +0 -0
  579. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_coord_web_sse_restart_live.py +0 -0
  580. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_coordinator_machine.py +0 -0
  581. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_cross_platform_imports.py +0 -0
  582. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_dashboard.py +0 -0
  583. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_dashboard_fixture.py +0 -0
  584. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_dashboard_terminal.py +0 -0
  585. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_dashboard_terminal_live.py +0 -0
  586. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_db.py +0 -0
  587. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_dead_end.py +0 -0
  588. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_deploy_coord_db_backup.py +0 -0
  589. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_deploy_coord_web_dist.py +0 -0
  590. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_deploy_coord_web_rollback.py +0 -0
  591. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_deploy_drive_queue_unit.py +0 -0
  592. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_deploy_manifest.py +0 -0
  593. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_deploy_units_lane.py +0 -0
  594. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_deploy_web_unit.py +0 -0
  595. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_deps.py +0 -0
  596. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_diagnose.py +0 -0
  597. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_dispatch.py +0 -0
  598. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_dispatch_target_validation.py +0 -0
  599. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_dist_name.py +0 -0
  600. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_done_housekeeping.py +0 -0
  601. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_drive.py +0 -0
  602. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_drive_queue.py +0 -0
  603. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_drive_state.py +0 -0
  604. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_drive_tmux.py +0 -0
  605. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_epic_up_capability_detection.py +0 -0
  606. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  607. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_epic_up_image_provenance.py +0 -0
  608. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_errors.py +0 -0
  609. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_events.py +0 -0
  610. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_failure_class.py +0 -0
  611. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_filelock.py +0 -0
  612. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  613. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_fix_of_force_override.py +0 -0
  614. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_fleet_config_health.py +0 -0
  615. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_fleet_health_probes.py +0 -0
  616. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_fleet_health_snapshot.py +0 -0
  617. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_freshness.py +0 -0
  618. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_gate_a.py +0 -0
  619. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_gate_b.py +0 -0
  620. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_gate_snapshot_staleness.py +0 -0
  621. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_gates.py +0 -0
  622. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_generated_types_fixture.py +0 -0
  623. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_github_ops.py +0 -0
  624. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_goal.py +0 -0
  625. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_graph_health.py +0 -0
  626. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_handoff.py +0 -0
  627. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_health_checks.py +0 -0
  628. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_health_cli.py +0 -0
  629. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_health_cli_graph.py +0 -0
  630. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_health_config.py +0 -0
  631. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_health_context.py +0 -0
  632. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_health_deploy_lane_facts.py +0 -0
  633. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_health_incident_regression.py +0 -0
  634. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_health_pypi.py +0 -0
  635. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_health_registry.py +0 -0
  636. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_health_timer_active.py +0 -0
  637. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_health_toolchain.py +0 -0
  638. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_health_unit_drift.py +0 -0
  639. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_health_unit_enablement.py +0 -0
  640. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_hooks.py +0 -0
  641. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_human_attended_437.py +0 -0
  642. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_init.py +0 -0
  643. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_integration.py +0 -0
  644. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_interactive_briefing_echo.py +0 -0
  645. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_interactive_prefill_state.py +0 -0
  646. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_interactive_session_relaunch.py +0 -0
  647. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_interactive_test_verdict_backstop.py +0 -0
  648. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_interactive_token_attribution.py +0 -0
  649. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_interactive_worktree.py +0 -0
  650. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_issue_store_seam.py +0 -0
  651. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_liveness_auditor.py +0 -0
  652. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_liveness_notify.py +0 -0
  653. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_machine_pause.py +0 -0
  654. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_merge_queue.py +0 -0
  655. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_merge_verify.py +0 -0
  656. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_milestone_chat.py +0 -0
  657. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_milestone_dispatch.py +0 -0
  658. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_milestone_gate.py +0 -0
  659. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_milestone_order.py +0 -0
  660. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_milestone_seam.py +0 -0
  661. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_mock_author.py +0 -0
  662. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_model_tiering.py +0 -0
  663. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_models.py +0 -0
  664. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_models_config_labels.py +0 -0
  665. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_needs_attention.py +0 -0
  666. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_network.py +0 -0
  667. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_new_issue_chat.py +0 -0
  668. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_next_release_tag.py +0 -0
  669. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_no_direct_gh_calls.py +0 -0
  670. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_node_shim.py +0 -0
  671. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_notifier_baseline.py +0 -0
  672. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_notifier_cli.py +0 -0
  673. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_notifier_collect.py +0 -0
  674. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_notifier_config.py +0 -0
  675. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_notifier_drive_seam.py +0 -0
  676. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_notifier_isolation.py +0 -0
  677. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_notifier_predicate.py +0 -0
  678. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_notifier_quiet_hours.py +0 -0
  679. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_notifier_service.py +0 -0
  680. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_notify.py +0 -0
  681. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_notify_drain.py +0 -0
  682. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_openapi.py +0 -0
  683. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_operational_defaults.py +0 -0
  684. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_overlap_fence.py +0 -0
  685. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_packaged_deploy_units.py +0 -0
  686. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_parentage.py +0 -0
  687. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_paste_landed.py +0 -0
  688. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_pipeline.py +0 -0
  689. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_plan_followup_approve_plan_command.py +0 -0
  690. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_plan_followup_pr_command.py +0 -0
  691. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_plan_followup_review_command.py +0 -0
  692. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_plan_only.py +0 -0
  693. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_plan_parser.py +0 -0
  694. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_platform_paths.py +0 -0
  695. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_portal_bridge.py +0 -0
  696. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_portal_config.py +0 -0
  697. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_pr_body_lint.py +0 -0
  698. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_prereqs.py +0 -0
  699. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_production_db_guard.py +0 -0
  700. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_progress.py +0 -0
  701. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_provider_seam.py +0 -0
  702. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_providers.py +0 -0
  703. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_providers_config_labels.py +0 -0
  704. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_quiet_hours.py +0 -0
  705. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_quiet_hours_store_2146.py +0 -0
  706. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_reap_merged_sessions.py +0 -0
  707. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_reap_stale_interactive_tick.py +0 -0
  708. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_reconcile_branch.py +0 -0
  709. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_reconcile_completions.py +0 -0
  710. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_reconcile_merges.py +0 -0
  711. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_reconcile_usage_limit_done.py +0 -0
  712. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_refine_chat.py +0 -0
  713. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_release_cordon_2101.py +0 -0
  714. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_release_propagate.py +0 -0
  715. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_release_unified_1242.py +0 -0
  716. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_release_verify.py +0 -0
  717. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_release_window.py +0 -0
  718. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_remote_auto_prune.py +0 -0
  719. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_remote_interactive_reaper.py +0 -0
  720. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_report_result_push.py +0 -0
  721. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_reports.py +0 -0
  722. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_retry.py +0 -0
  723. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_retry_advisory_1606.py +0 -0
  724. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_retry_type_1636.py +0 -0
  725. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_revalidate.py +0 -0
  726. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_review.py +0 -0
  727. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_review_end_review_without_verdict.py +0 -0
  728. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_review_parse_failure_diagnostic.py +0 -0
  729. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_review_reaffirm.py +0 -0
  730. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_review_state.py +0 -0
  731. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_review_verdict_backstop.py +0 -0
  732. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_review_verdict_override_audit.py +0 -0
  733. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_review_verdict_relay.py +0 -0
  734. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_review_zero_commits.py +0 -0
  735. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_scoped_review_wiring.py +0 -0
  736. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_scorecard.py +0 -0
  737. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_serve.py +0 -0
  738. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_serve_app_board_trim.py +0 -0
  739. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_session.py +0 -0
  740. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_slice_issue_attribution.py +0 -0
  741. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_smoke.py +0 -0
  742. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_smoke_live_checkout_restore.py +0 -0
  743. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_smoke_workflow.py +0 -0
  744. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_spend_ceiling.py +0 -0
  745. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_spend_ceiling_coordinator.py +0 -0
  746. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_split.py +0 -0
  747. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_split_work.py +0 -0
  748. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_stage_projection.py +0 -0
  749. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_stalled_pipeline.py +0 -0
  750. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_state.py +0 -0
  751. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_state_review_findings_daemon.py +0 -0
  752. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_status_fleet_footer.py +0 -0
  753. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_stop_1567.py +0 -0
  754. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_stuck.py +0 -0
  755. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_terminal_command.py +0 -0
  756. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_test_author.py +0 -0
  757. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_test_chat.py +0 -0
  758. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_test_orchestrator.py +0 -0
  759. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_test_report.py +0 -0
  760. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_test_verdict_parsing.py +0 -0
  761. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_test_verdict_transcript_floor.py +0 -0
  762. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_thin_client_board_audit.py +0 -0
  763. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_thin_client_config_load_1080.py +0 -0
  764. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_thin_client_daemon_routing_906.py +0 -0
  765. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_tmux_host.py +0 -0
  766. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_tmux_session.py +0 -0
  767. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_transcript_floor.py +0 -0
  768. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_usage.py +0 -0
  769. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_usage_limits.py +0 -0
  770. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_usage_rollup.py +0 -0
  771. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_venv_live_install_2121.py +0 -0
  772. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_version_single_source.py +0 -0
  773. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_watch.py +0 -0
  774. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_worker_events.py +0 -0
  775. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_worker_image_pin_sync.py +0 -0
  776. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_worker_safety.py +0 -0
  777. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_worktree.py +0 -0
  778. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  779. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/Cargo.lock +0 -0
  780. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/Cargo.toml +0 -0
  781. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/cargo-config-local-quadraui.toml.example +0 -0
  782. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/audit.rs +0 -0
  783. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/chat.rs +0 -0
  784. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/data.rs +0 -0
  785. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/dialogs.rs +0 -0
  786. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/drive.rs +0 -0
  787. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/drive_queue.rs +0 -0
  788. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/escalation.rs +0 -0
  789. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/events.rs +0 -0
  790. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/fixtures.rs +0 -0
  791. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/fleet_health.rs +0 -0
  792. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/fleet_sessions.rs +0 -0
  793. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/fleet_terminals.rs +0 -0
  794. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/format.rs +0 -0
  795. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/milestone_dag.rs +0 -0
  796. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/mod.rs +0 -0
  797. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/msv.rs +0 -0
  798. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/pipeline.rs +0 -0
  799. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/plans.rs +0 -0
  800. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/render.rs +0 -0
  801. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/reports.rs +0 -0
  802. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/sessions.rs +0 -0
  803. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/settings_ui.rs +0 -0
  804. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/sidebar.rs +0 -0
  805. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/terminal.rs +0 -0
  806. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/tests.rs +0 -0
  807. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/types.rs +0 -0
  808. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/app/workspace.rs +0 -0
  809. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/bin/gtk.rs +0 -0
  810. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/commands.rs +0 -0
  811. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/lib.rs +0 -0
  812. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/main.rs +0 -0
  813. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/src/settings.rs +0 -0
  814. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/tests/acceptance.rs +0 -0
  815. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/tests/cli.rs +0 -0
  816. {code_coordinator-0.5.59 → code_coordinator-0.5.61}/tui/tests/fixtures/board_sample.json +0 -0
@@ -100,6 +100,16 @@ coord approve --dry-run 1,2
100
100
  coord assign --dry-run precision claude-coordinator 42
101
101
  ```
102
102
 
103
+ **Workers: scope your test run to your diff, never `pytest` bare (#2169).**
104
+ The full suite exceeds Claude Code's 600s Bash ceiling on this repo and
105
+ duplicates the Test stage + CI, which both run it against your pushed SHA
106
+ regardless. Run just the file(s) that mirror what you changed — `pytest
107
+ tests/test_<module>.py` for a `coord/<module>.py` change, `cargo test` from
108
+ `tui/` scoped with a test-name filter for a `tui/**` change. To see what
109
+ the Test stage itself would run for your diff (and confirm you're not
110
+ missing a suite), `scripts/coord-test-runner.sh <worktree> --print-routing`
111
+ computes the routing without actually building or testing anything.
112
+
103
113
  ## Key Design Decisions
104
114
 
105
115
  - **No API key needed.** Everything uses `claude -p` which runs on Max/Pro subscription via OAuth.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.59
3
+ Version: 0.5.61
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.59
3
+ Version: 0.5.61
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
@@ -720,6 +720,7 @@ tests/test_watch.py
720
720
  tests/test_worker_events.py
721
721
  tests/test_worker_image_pin_sync.py
722
722
  tests/test_worker_safety.py
723
+ tests/test_worker_test_scoping.py
723
724
  tests/test_worktree.py
724
725
  tests/test_worktree_rmtree_chokepoint.py
725
726
  tests/acceptance/ms-33/audit_1039.rs
@@ -750,6 +750,7 @@
750
750
  "tests/test_worker_events.py",
751
751
  "tests/test_worker_image_pin_sync.py",
752
752
  "tests/test_worker_safety.py",
753
+ "tests/test_worker_test_scoping.py",
753
754
  "tests/test_worktree.py",
754
755
  "tests/test_worktree_rmtree_chokepoint.py",
755
756
  "tui/Cargo.lock",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.5.61",
3
+ "distance": 0,
4
+ "node": "g74884c7dae4507e48a87e147dbfae31765822fd5",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-08-14"
8
+ }
@@ -2845,9 +2845,17 @@ This session is ONE-SHOT and non-interactive (#1394):
2845
2845
  completion notifications will NEVER reach you — nothing wakes you up.
2846
2846
  - NEVER start a long-running command in the background and then end your \
2847
2847
  turn waiting for it (no `run_in_background`, no `&`, no "I'll wait for the \
2848
- test run to finish"). Run it in the FOREGROUND and block until it returns, \
2849
- or raise the timeout, or skip it and say so. If you end your turn waiting, \
2850
- the session is over and your work is thrown away.
2848
+ test run to finish") there is no next turn for a notification to land \
2849
+ in, so ending your turn that way throws the work away. Prefer running it \
2850
+ in the FOREGROUND and blocking until it returns. If it genuinely cannot \
2851
+ finish inside one Bash call, you may background it and poll it yourself, \
2852
+ in bounded steps, from THIS SAME still-running session — `Monitor`, or \
2853
+ repeated `TaskOutput` calls with a bounded `timeout`, never a foreground \
2854
+ loop that blocks past the ceiling (`until ! pgrep ...; do sleep ...; done` \
2855
+ hits the identical 600s wall) and never a final message that leaves it \
2856
+ running unattended and relies on being woken back up. Otherwise, raise the \
2857
+ timeout or skip it and say so. If you end your turn waiting, the session \
2858
+ is over and your work is thrown away.
2851
2859
  - ALWAYS `git add`, `git commit`, and `git push origin HEAD` BEFORE your \
2852
2860
  final message — even if the build is broken, the tests are failing, or you \
2853
2861
  ran out of time. Uncommitted changes are destroyed when the session ends. \
@@ -2883,8 +2891,25 @@ intentional `#[allow]` with reason, a deferred refactor flagged \
2883
2891
  elsewhere), explicitly call it out in your final message with the \
2884
2892
  reason. Don't silently ship warnings.
2885
2893
  - Re-run the build after fixes to confirm clean output.
2886
- - Run the project's test command (`cargo test`, `pytest`, etc.) and \
2887
- confirm it passes before declaring done.
2894
+ - Run only the tests that cover your diff never the project's whole \
2895
+ test suite. A full suite routinely exceeds this tool's 600-second Bash \
2896
+ ceiling, and a worker that tries to shepherd it past that wall (splitting \
2897
+ it into chunks, backgrounding it and blocking on a poll loop, ...) burns \
2898
+ most of a session on that instead of the fix, for no net-new signal: the \
2899
+ Test stage and CI both re-run the FULL suite against your pushed SHA right \
2900
+ after you, on a clean checkout, which is strictly better evidence than a \
2901
+ worker's own partial run (#2169). Find the test file(s)/module(s) whose \
2902
+ name or path mirrors what you changed (e.g. `tests/test_<module>.py` for \
2903
+ `coord/<module>.py`, the crate-local `#[cfg(test)]` block for a Rust file) \
2904
+ and run just those — confirm they pass before declaring done.
2905
+ - Exception: if this assignment IS an oracle-loop acceptance round (you \
2906
+ were told to run `coord acceptance run --issue N`), keep running that \
2907
+ sealed slice as many times as it takes to go green. It is the loop's \
2908
+ convergence signal, not duplicated effort, and the scoping rule above does \
2909
+ not apply to it.
2910
+ - If even the scoped run genuinely cannot finish in time, follow the \
2911
+ background-and-poll pattern in the ONE-SHOT section above — do not invent \
2912
+ a chunk-and-loop workaround.
2888
2913
 
2889
2914
  #252: before exiting, emit a SMOKE_TESTS block telling the human what to \
2890
2915
  manually verify. You changed the code; you know what's worth poking.
@@ -3668,7 +3693,13 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
3668
3693
  else:
3669
3694
  system_prompt = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
3670
3695
  system_prompt += build_deny_prompt(spec.deny_commands)
3671
- allowed_tools = "Read,Edit,Write,Bash"
3696
+ # #2169: `Monitor` is the sanctioned way to poll a backgrounded
3697
+ # long-running command in bounded steps (see the ONE-SHOT section of
3698
+ # WORKER_SYSTEM_PROMPT) instead of a foreground loop that blocks
3699
+ # past the 600s Bash ceiling. `TaskOutput`/`TaskStop` were already
3700
+ # reachable without being in this list; `Monitor` was the one
3701
+ # observed denied.
3702
+ allowed_tools = "Read,Edit,Write,Bash,Monitor"
3672
3703
 
3673
3704
  # NOTE: briefing is NOT passed as a positional arg — it is written to
3674
3705
  # stdin as the first stream-json user message by ``_spawn``.
@@ -1877,9 +1877,82 @@ def _drain(
1877
1877
  sleep_fn(max(0.0, min(poll_interval, deadline - elapsed)))
1878
1878
 
1879
1879
 
1880
+ def _parse_trailing_json(stdout: str) -> dict | None:
1881
+ """The last top-level JSON object printed to *stdout*, or ``None``.
1882
+
1883
+ #2187: this used to look only at the LAST LINE of stdout and try to
1884
+ parse THAT LINE alone as JSON. `coord release propagate --json` (like
1885
+ every ``--json`` command in this codebase) prints its record via
1886
+ ``json.dumps(..., indent=2, ...)`` — pretty-printed, for a human running
1887
+ it by hand — which means the payload spans many lines and its own last
1888
+ line is just ``}``, never a complete object on its own. The old check
1889
+ therefore never found the record for ANY propagate run, successful or
1890
+ not, and every call fell back to the ``f"exit {code}"`` placeholder in
1891
+ `_run_propagate` below — which is exactly the false "propagate-failed
1892
+ (status=exit 0, exit=0)" #2187 reports for a verified, exit-0 roll.
1893
+
1894
+ This instead finds the LAST line that is the object's own unindented
1895
+ ``{`` (json.dumps never indents the outermost brace) and parses
1896
+ everything from there to the end of stdout as one document. A single
1897
+ compact line (no ``indent=``) still works too, tried second.
1898
+ """
1899
+ import json as _json # noqa: PLC0415
1900
+
1901
+ text = stdout.strip()
1902
+ if not text:
1903
+ return None
1904
+ lines = text.splitlines()
1905
+ for idx in range(len(lines) - 1, -1, -1):
1906
+ if lines[idx].strip() != "{":
1907
+ continue
1908
+ try:
1909
+ payload = _json.loads("\n".join(lines[idx:]))
1910
+ except ValueError:
1911
+ continue
1912
+ if isinstance(payload, dict):
1913
+ return payload
1914
+ for line in reversed(lines):
1915
+ line = line.strip()
1916
+ if not line.startswith("{"):
1917
+ continue
1918
+ try:
1919
+ payload = _json.loads(line)
1920
+ except ValueError:
1921
+ continue
1922
+ if isinstance(payload, dict):
1923
+ return payload
1924
+ return None
1925
+
1926
+
1927
+ def _latest_propagate_record_since(state_dir: Path, since: float) -> dict | None:
1928
+ """The propagation journal's own record for the run started at/after
1929
+ *since*, if any — the ground truth `coord release history` itself reads.
1930
+
1931
+ #2187 proposal 1: "read `coord release history` for the run it just
1932
+ launched rather than inferring from a side-channel [stdout]." The
1933
+ journal has no request id to join on, so this uses ``started_at``: the
1934
+ subprocess `_run_propagate` shells out to is synchronous, so by the
1935
+ time it has returned, a successful run has already appended its record
1936
+ with a ``started_at`` at or after the moment this function's caller
1937
+ launched it. Picks the OLDEST such record — the first thing written
1938
+ after launch — in case some unrelated `coord release propagate` run
1939
+ elsewhere raced it onto the same shared journal.
1940
+ """
1941
+ from coord import release_propagate as rp # noqa: PLC0415
1942
+
1943
+ candidates = [
1944
+ rec for rec in rp.read_records(state_dir)
1945
+ if isinstance(rec.get("started_at"), (int, float)) and rec["started_at"] >= since
1946
+ ]
1947
+ if not candidates:
1948
+ return None
1949
+ return min(candidates, key=lambda rec: rec["started_at"])
1950
+
1951
+
1880
1952
  def _run_propagate(
1881
- *, daemon_host: str, target_version: str, config_path: Path, runner=None,
1882
- ) -> tuple[str, int, str]:
1953
+ *, daemon_host: str, target_version: str, config_path: Path, state_dir: Path,
1954
+ runner=None, now_fn=None,
1955
+ ) -> tuple[str, int, str, float | None]:
1883
1956
  """``coord release propagate --daemon-host ... --target ... --json``.
1884
1957
 
1885
1958
  A real subprocess of THIS interpreter (matches `_roll_tui`/
@@ -1890,15 +1963,26 @@ def _run_propagate(
1890
1963
  run decided was needed is the version that actually rolls, even if a new
1891
1964
  release lands on PyPI mid-drain.
1892
1965
 
1893
- Returns ``(status, exit_code, combined_output)``. ``status`` is parsed
1894
- from the last JSON line of stdout (propagate's own record); parsing
1895
- failures fall back to ``f"exit {code}"`` rather than raising — a window
1896
- run must never crash because propagate's output was unexpected.
1966
+ Returns ``(status, exit_code, combined_output, propagate_started_at)``.
1967
+ ``status`` is read from the propagation journal entry that run itself
1968
+ wrote (:func:`_latest_propagate_record_since`) the same ground truth
1969
+ `coord release history` reads not reparsed from stdout (#2187:
1970
+ reparsing stdout was the false-negative bug). ``propagate_started_at``
1971
+ is that record's own ``started_at``, stamped onto the window's own
1972
+ record so `window-history` can be joined to `history` (#2187 proposal
1973
+ 2) instead of the two stores re-deciding the same outcome separately.
1974
+ Only when no journal entry can be found — the subprocess died before
1975
+ writing one, or the journal write itself failed — does this fall back
1976
+ to `_parse_trailing_json` on stdout, and then to ``f"exit {code}"``;
1977
+ either fallback returns ``None`` for ``propagate_started_at`` since
1978
+ there is then nothing to join to.
1897
1979
  """
1898
- import json as _json # noqa: PLC0415
1899
1980
  import subprocess # noqa: PLC0415
1981
+ import time # noqa: PLC0415
1900
1982
 
1901
1983
  run = runner or subprocess.run
1984
+ clock = now_fn or time.time
1985
+ launched_at = clock()
1902
1986
  argv = [
1903
1987
  sys.executable, "-m", "coord.cli", "release", "propagate",
1904
1988
  "--daemon-host", daemon_host, "--target", target_version,
@@ -1908,23 +1992,22 @@ def _run_propagate(
1908
1992
  proc = run(argv, capture_output=True, text=True, timeout=1800)
1909
1993
  except Exception as exc: # noqa: BLE001
1910
1994
  detail = f"{type(exc).__name__}: {exc}"
1911
- return f"error: {detail}", 1, detail
1995
+ return f"error: {detail}", 1, detail, None
1912
1996
  code = getattr(proc, "returncode", 1)
1913
1997
  stdout = getattr(proc, "stdout", "") or ""
1914
1998
  stderr = getattr(proc, "stderr", "") or ""
1915
- status = f"exit {code}"
1916
- for line in reversed(stdout.strip().splitlines()):
1917
- line = line.strip()
1918
- if not line.startswith("{"):
1919
- continue
1920
- try:
1921
- payload = _json.loads(line)
1922
- except ValueError:
1923
- continue
1924
- if isinstance(payload, dict) and payload.get("status"):
1925
- status = str(payload["status"])
1926
- break
1927
- return status, code, (stdout + ("\n" + stderr if stderr else "")).strip()
1999
+ output = (stdout + ("\n" + stderr if stderr else "")).strip()
2000
+
2001
+ record = _latest_propagate_record_since(state_dir, launched_at)
2002
+ if record is not None:
2003
+ status = str(record.get("status") or f"exit {code}")
2004
+ return status, code, output, record.get("started_at")
2005
+
2006
+ payload = _parse_trailing_json(stdout)
2007
+ status = (
2008
+ str(payload["status"]) if payload and payload.get("status") else f"exit {code}"
2009
+ )
2010
+ return status, code, output, None
1928
2011
 
1929
2012
 
1930
2013
  #: Where a skipped/failed nightly window (trap 3) is recorded — same
@@ -2161,13 +2244,14 @@ def release_nightly_window( # noqa: PLR0912, PLR0915 — a pipeline; see module
2161
2244
  status = rw.STATUS_DRAIN_TIMEOUT
2162
2245
  else:
2163
2246
  # ── 5. roll — the daemon host is now provably free ─────────
2164
- prop_status, prop_exit, prop_output = _run_propagate(
2247
+ prop_status, prop_exit, prop_output, prop_started_at = _run_propagate(
2165
2248
  daemon_host=daemon_name, target_version=record.target_version,
2166
- config_path=config_path,
2249
+ config_path=config_path, state_dir=state_dir,
2167
2250
  )
2168
2251
  record.propagate_status = prop_status
2169
2252
  record.propagate_exit_code = prop_exit
2170
2253
  record.propagate_output = prop_output
2254
+ record.propagate_started_at = prop_started_at
2171
2255
  if prop_output:
2172
2256
  click.echo(prop_output)
2173
2257
 
@@ -2193,11 +2277,38 @@ def release_nightly_window( # noqa: PLR0912, PLR0915 — a pipeline; see module
2193
2277
  click.echo(f"error: {record.error}", err=True)
2194
2278
  _escalate_window(record, reason=record.error)
2195
2279
  status = rw.STATUS_PROPAGATE_DEFERRED
2280
+ elif prop_status.startswith("exit ") or prop_status.startswith("error:"):
2281
+ # #2187 proposal 3: this arm is reached only when NEITHER
2282
+ # ground truth was available — no matching entry in
2283
+ # `coord release history` (see
2284
+ # `_latest_propagate_record_since`) AND no parseable
2285
+ # `--json` payload on stdout (`_parse_trailing_json`).
2286
+ # `prop_status` here is one of those two functions'
2287
+ # placeholder fallbacks, never a real outcome — so the
2288
+ # message must say exactly what evidence is missing
2289
+ # instead of quoting the placeholder as if it were one
2290
+ # (the old text, "status=exit 0, exit=0", read as a
2291
+ # verification failure when exit 0 is what a VERIFIED
2292
+ # roll also produces).
2293
+ record.error = (
2294
+ f"coord release propagate exited {prop_exit}, but its "
2295
+ "outcome could not be confirmed: no matching entry "
2296
+ "was found in `coord release history` for this run, "
2297
+ "and its --json stdout had no parseable status "
2298
+ "either — see propagate_output"
2299
+ )
2300
+ click.echo(f"error: {record.error}", err=True)
2301
+ _escalate_window(record, reason=record.error)
2302
+ status = rw.STATUS_PROPAGATE_FAILED
2303
+ exit_code = prop_exit or 1
2196
2304
  else:
2305
+ # A real, ground-truth status from `coord release
2306
+ # history` — just not a verified roll (e.g. `failed` or
2307
+ # `rolled-back`).
2197
2308
  record.error = (
2198
- f"coord release propagate did not verify a roll "
2199
- f"(status={prop_status}, exit={prop_exit}) despite a "
2200
- f"drained daemon host"
2309
+ f"coord release propagate did not verify a roll "
2310
+ f"`coord release history` recorded status="
2311
+ f"{prop_status!r} (exit {prop_exit}) for this run"
2201
2312
  )
2202
2313
  click.echo(f"error: {record.error}", err=True)
2203
2314
  _escalate_window(record, reason=record.error)
@@ -173,7 +173,10 @@ class ClaudeProvider(Provider):
173
173
  else:
174
174
  _sp = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
175
175
  _sp += build_deny_prompt(spec.deny_commands)
176
- _at = "Read,Edit,Write,Bash"
176
+ # #2169: keep in sync with default_worker_command's identical
177
+ # branch — Monitor is the sanctioned bounded-poll tool for a
178
+ # backgrounded long-running command.
179
+ _at = "Read,Edit,Write,Bash,Monitor"
177
180
 
178
181
  if system_prompt is None:
179
182
  system_prompt = _sp
@@ -488,7 +488,11 @@ class ClaudePtyProvider(Provider):
488
488
  else:
489
489
  _sp = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
490
490
  _sp += build_deny_prompt(spec.deny_commands)
491
- _at = "Read,Edit,Write,Bash"
491
+ # #2169: keep in sync with default_worker_command's and
492
+ # ClaudeProvider.build_command's identical branch — Monitor
493
+ # is the sanctioned bounded-poll tool for a backgrounded
494
+ # long-running command.
495
+ _at = "Read,Edit,Write,Bash,Monitor"
492
496
 
493
497
  if system_prompt is None:
494
498
  system_prompt = _sp
@@ -190,6 +190,14 @@ class WindowRecord:
190
190
  propagate_status: str | None = None
191
191
  propagate_exit_code: int | None = None
192
192
  propagate_output: str = ""
193
+ #: The propagation journal record's OWN ``started_at`` — the join key
194
+ #: (#2187 proposal 2) that lets `window-history` be correlated to
195
+ #: `coord release history` for the SAME run, instead of each store
196
+ #: independently re-deciding what happened. ``None`` when no matching
197
+ #: journal record could be found (see
198
+ #: `coord.commands.release._latest_propagate_record_since`) — there is
199
+ #: then nothing to join to.
200
+ propagate_started_at: float | None = None
193
201
  finished_at: float | None = None
194
202
  error: str | None = None
195
203
  dry_run: bool = False
@@ -327,9 +335,14 @@ def render_record(record: WindowRecord | Mapping[str, Any]) -> list[str]:
327
335
  if data.get("drain_detail"):
328
336
  lines.append(f" {data['drain_detail']}")
329
337
  if data.get("propagate_status"):
338
+ joined = (
339
+ f" [history @ {_stamp(data['propagate_started_at'])}]"
340
+ if data.get("propagate_started_at")
341
+ else ""
342
+ )
330
343
  lines.append(
331
344
  f" propagate: {data['propagate_status']} "
332
- f"(exit {data.get('propagate_exit_code')})"
345
+ f"(exit {data.get('propagate_exit_code')}){joined}"
333
346
  )
334
347
  if data.get("queue_restarted") is not None:
335
348
  lines.append(