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

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