code-coordinator 0.5.154__tar.gz → 0.5.158__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 (878) hide show
  1. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/CLAUDE.md +8 -24
  2. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/PKG-INFO +1 -1
  3. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/PKG-INFO +1 -1
  4. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/SOURCES.txt +9 -0
  5. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/scm_file_list.json +9 -0
  6. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/scm_version.json +2 -2
  7. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/agent.py +92 -0
  8. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/issues.py +3 -0
  9. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/setup.py +69 -41
  10. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/drive_queue.py +74 -1
  11. code_coordinator-0.5.158/coord/skills/coord-dispatch-verbs/SKILL.md +76 -0
  12. code_coordinator-0.5.158/coord/skills/drive-queue-preflight/SKILL.md +90 -0
  13. code_coordinator-0.5.158/coord/skills/fleet-restart-safety/SKILL.md +98 -0
  14. code_coordinator-0.5.158/coord/skills/merge-stuck-triage/SKILL.md +73 -0
  15. code_coordinator-0.5.158/coord/skills/pipeline-limbo-triage/SKILL.md +52 -0
  16. code_coordinator-0.5.158/coord/skills/review-verdict-recovery/SKILL.md +70 -0
  17. code_coordinator-0.5.158/coord/skills/tui-quadraui-workflow/SKILL.md +64 -0
  18. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/AGENT_OPERATIONS.md +25 -3
  19. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/ARCHITECTURE.md +4 -0
  20. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/DRIVE_QUEUE.md +2 -0
  21. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/OPERATING_GOTCHAS.md +4 -0
  22. code_coordinator-0.5.158/tests/acceptance/ms-65/detail_substate_2285.rs +725 -0
  23. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/manifest.yml +124 -0
  24. code_coordinator-0.5.158/tests/test_agent_skills_self_heal.py +123 -0
  25. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_drive_queue.py +182 -0
  26. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/events.rs +50 -0
  27. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/fixtures.rs +1 -0
  28. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/mod.rs +54 -54
  29. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/render.rs +147 -26
  30. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/tests.rs +371 -0
  31. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/tests/acceptance.rs +1 -0
  32. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.claude/commands/board.md +0 -0
  33. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.claude/commands/complete-session.md +0 -0
  34. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.claude/commands/coordinator.md +0 -0
  35. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.githooks/_lib.sh +0 -0
  36. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.githooks/post-checkout +0 -0
  37. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.githooks/post-commit +0 -0
  38. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.githooks/post-merge +0 -0
  39. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  40. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/coord-ci-acceptance.yml +0 -0
  41. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/workflows/acceptance-web.yml +0 -0
  42. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/workflows/auto-release.yml +0 -0
  43. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/workflows/cargo-test.yml +0 -0
  44. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/workflows/publish.yml +0 -0
  45. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/workflows/release-tui.yml +0 -0
  46. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.github/workflows/test.yml +0 -0
  47. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/.gitignore +0 -0
  48. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/GOAL.md +0 -0
  49. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/LICENSE +0 -0
  50. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/MANIFEST.in +0 -0
  51. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/README.md +0 -0
  52. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/dependency_links.txt +0 -0
  53. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/entry_points.txt +0 -0
  54. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/requires.txt +0 -0
  55. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/code_coordinator.egg-info/top_level.txt +0 -0
  56. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/__init__.py +0 -0
  57. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/_board_mapping.py +0 -0
  58. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/acceptance.py +0 -0
  59. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/acceptance_drivers.py +0 -0
  60. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/agent_app.py +0 -0
  61. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/agent_update.py +0 -0
  62. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/agents/opencode/.gitignore +0 -0
  63. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/agents/opencode/agents/work.md +0 -0
  64. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/agents/opencode/routing.jsonc +0 -0
  65. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/audit.py +0 -0
  66. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/auto_loop.py +0 -0
  67. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/block_log.py +0 -0
  68. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/board_bool_guard.py +0 -0
  69. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/board_service.py +0 -0
  70. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/board_wire.py +0 -0
  71. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/brain.py +0 -0
  72. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/branch_model.py +0 -0
  73. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/bug_intake.py +0 -0
  74. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/cargo_cache.py +0 -0
  75. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/ci_github.py +0 -0
  76. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/ci_store.py +0 -0
  77. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/claim.py +0 -0
  78. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/cli.py +0 -0
  79. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/client.py +0 -0
  80. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/__init__.py +0 -0
  81. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/_common.py +0 -0
  82. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/acceptance.py +0 -0
  83. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/agent_ops.py +0 -0
  84. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/audit.py +0 -0
  85. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/chat.py +0 -0
  86. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/dispatch.py +0 -0
  87. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/dispatch_workers.py +0 -0
  88. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/drive.py +0 -0
  89. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/drive_queue.py +0 -0
  90. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/gate_a.py +0 -0
  91. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/gates.py +0 -0
  92. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/lifecycle.py +0 -0
  93. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/merge.py +0 -0
  94. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/milestone.py +0 -0
  95. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/plan_followup.py +0 -0
  96. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/plans.py +0 -0
  97. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/portal.py +0 -0
  98. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/release.py +0 -0
  99. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/repo.py +0 -0
  100. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/report.py +0 -0
  101. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/review.py +0 -0
  102. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/scorecard.py +0 -0
  103. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/sessions.py +0 -0
  104. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/status.py +0 -0
  105. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/terminal.py +0 -0
  106. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/test_gate.py +0 -0
  107. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/commands/tui.py +0 -0
  108. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/comments.py +0 -0
  109. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/config.py +0 -0
  110. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/config_reload.py +0 -0
  111. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/conflict_fix.py +0 -0
  112. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dao.py +0 -0
  113. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/__init__.py +0 -0
  114. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/fixture.py +0 -0
  115. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/index.html +0 -0
  116. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/server.py +0 -0
  117. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/terminal.py +0 -0
  118. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/.gitignore +0 -0
  119. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/components.json +0 -0
  120. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
  121. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  122. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
  123. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
  124. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  125. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  126. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  127. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  128. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  129. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/index.html +0 -0
  130. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  131. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/sw.js +0 -0
  132. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  133. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  134. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  135. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  136. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  137. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  138. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  139. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  140. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  141. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  142. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/eslint.config.js +0 -0
  143. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/index.html +0 -0
  144. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  145. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/package-lock.json +0 -0
  146. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/package.json +0 -0
  147. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  148. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/playwright.config.ts +0 -0
  149. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/postcss.config.js +0 -0
  150. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  151. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  152. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  153. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/App.tsx +0 -0
  154. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/api/client.ts +0 -0
  155. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  156. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  157. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  158. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  159. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  160. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  161. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  162. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  163. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  164. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  165. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  166. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  167. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  168. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  169. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  170. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  171. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  172. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  173. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  174. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  175. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  176. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  177. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  178. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  179. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  180. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  181. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  182. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  183. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  184. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  185. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  186. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  187. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  188. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  189. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  190. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/index.css +0 -0
  191. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  192. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  193. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/main.tsx +0 -0
  194. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  195. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  196. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  197. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  198. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  199. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  200. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  201. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  202. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  203. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  204. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  205. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  206. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  207. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  208. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  209. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  210. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  211. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  212. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  213. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  214. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  215. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  216. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  217. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/tailwind.config.js +0 -0
  218. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/tsconfig.json +0 -0
  219. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  220. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dashboard/webapp/vite.config.ts +0 -0
  221. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/db.py +0 -0
  222. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dead_end.py +0 -0
  223. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/README.md +0 -0
  224. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-agent.service +0 -0
  225. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-db-backup.service +0 -0
  226. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-db-backup.sh +0 -0
  227. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-db-backup.timer +0 -0
  228. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-drive-queue.service +0 -0
  229. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-drive-queue.timer +0 -0
  230. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-notify.service +0 -0
  231. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-notify.timer +0 -0
  232. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-release-propagate.service +0 -0
  233. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-release-propagate.timer +0 -0
  234. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-release-window.service +0 -0
  235. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-release-window.timer +0 -0
  236. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-serve.service +0 -0
  237. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-web-dist-build.service +0 -0
  238. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-web-dist-build.timer +0 -0
  239. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy/coord-web.service +0 -0
  240. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy_manifest.py +0 -0
  241. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deploy_units.py +0 -0
  242. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/deps.py +0 -0
  243. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/diagnose.py +0 -0
  244. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dispatch.py +0 -0
  245. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/dist_name.py +0 -0
  246. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/drive.py +0 -0
  247. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/drive_state.py +0 -0
  248. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/events.py +0 -0
  249. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/failure_class.py +0 -0
  250. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/filelock.py +0 -0
  251. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/fleet_config_health.py +0 -0
  252. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/freshness.py +0 -0
  253. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/gate_a.py +0 -0
  254. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/gate_b.py +0 -0
  255. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/gate_snapshot.py +0 -0
  256. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/gates.py +0 -0
  257. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/github_ops.py +0 -0
  258. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/goal.py +0 -0
  259. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/graph_health.py +0 -0
  260. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/__init__.py +0 -0
  261. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/aggregate.py +0 -0
  262. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/__init__.py +0 -0
  263. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/agent_install.py +0 -0
  264. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/cargo_targets.py +0 -0
  265. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/claude_binary.py +0 -0
  266. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/deploy_lane_facts.py +0 -0
  267. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/disk.py +0 -0
  268. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/fleet_board.py +0 -0
  269. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  270. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/fleet_phantom.py +0 -0
  271. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/fleet_unit_drift.py +0 -0
  272. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/graph.py +0 -0
  273. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/graphify_cli.py +0 -0
  274. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/index_lock.py +0 -0
  275. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/plan_usage.py +0 -0
  276. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/repo_state.py +0 -0
  277. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/spawned_coord.py +0 -0
  278. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/timer_active.py +0 -0
  279. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/toolchain.py +0 -0
  280. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/unit_drift.py +0 -0
  281. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/unit_enablement.py +0 -0
  282. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/checks/worktrees.py +0 -0
  283. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/cli.py +0 -0
  284. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/context.py +0 -0
  285. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/fleet_snapshot.py +0 -0
  286. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/models.py +0 -0
  287. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/pypi.py +0 -0
  288. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/registry.py +0 -0
  289. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/render.py +0 -0
  290. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/health/units.py +0 -0
  291. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/hooks.py +0 -0
  292. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/housekeeping.py +0 -0
  293. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/interactive.py +0 -0
  294. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/issue_store.py +0 -0
  295. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/liveness_auditor.py +0 -0
  296. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/machine_pause.py +0 -0
  297. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/merge_queue.py +0 -0
  298. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/milestone_chat.py +0 -0
  299. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/milestone_dispatch.py +0 -0
  300. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/milestone_gate.py +0 -0
  301. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/milestone_order.py +0 -0
  302. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/mock_author.py +0 -0
  303. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/models.py +0 -0
  304. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/network.py +0 -0
  305. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/new_issue_chat.py +0 -0
  306. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/__init__.py +0 -0
  307. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/baseline.py +0 -0
  308. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/cli.py +0 -0
  309. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/collect.py +0 -0
  310. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/digest.py +0 -0
  311. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/models.py +0 -0
  312. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/predicate.py +0 -0
  313. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/service.py +0 -0
  314. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/store.py +0 -0
  315. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notifier/transport.py +0 -0
  316. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/notify.py +0 -0
  317. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/openapi.py +0 -0
  318. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/overlap_fence.py +0 -0
  319. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/overlap_predict.py +0 -0
  320. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/parentage.py +0 -0
  321. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/parentage_github.py +0 -0
  322. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/pipeline.py +0 -0
  323. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/plan_parser.py +0 -0
  324. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/plans.py +0 -0
  325. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/platform_paths.py +0 -0
  326. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/portal_bridge.py +0 -0
  327. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/portal_store.py +0 -0
  328. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/portal_sync.py +0 -0
  329. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/pr_body_lint.py +0 -0
  330. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/prereqs.py +0 -0
  331. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/progress.py +0 -0
  332. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/providers/__init__.py +0 -0
  333. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/providers/base.py +0 -0
  334. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/providers/claude.py +0 -0
  335. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/providers/claude_pty.py +0 -0
  336. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/providers/opencode.py +0 -0
  337. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/queue_diagnose.py +0 -0
  338. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/reconcile.py +0 -0
  339. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/reconcile_tick.py +0 -0
  340. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/refine_chat.py +0 -0
  341. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/release_cordon.py +0 -0
  342. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/release_propagate.py +0 -0
  343. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/release_verify.py +0 -0
  344. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/release_window.py +0 -0
  345. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/repo_edit.py +0 -0
  346. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/repo_onboard.py +0 -0
  347. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/reports.py +0 -0
  348. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/revalidate.py +0 -0
  349. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/review.py +0 -0
  350. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/scorecard.py +0 -0
  351. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/serve_app.py +0 -0
  352. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/skills/portal-followup/SKILL.md +0 -0
  353. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/skills/update-issue/SKILL.md +0 -0
  354. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/smoke.py +0 -0
  355. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/spend_ceiling.py +0 -0
  356. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/split_work.py +0 -0
  357. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/stage_projection.py +0 -0
  358. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/state.py +0 -0
  359. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/test_author.py +0 -0
  360. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/test_chat.py +0 -0
  361. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/test_orchestrator.py +0 -0
  362. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/test_report.py +0 -0
  363. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/tui_release.py +0 -0
  364. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/usage.py +0 -0
  365. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/usage_limits.py +0 -0
  366. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/usage_rollup.py +0 -0
  367. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coord/worker_events.py +0 -0
  368. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/coordinator.example.yml +0 -0
  369. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-agent.service +0 -0
  370. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-db-backup.service +0 -0
  371. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-db-backup.sh +0 -0
  372. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-db-backup.timer +0 -0
  373. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-drive-queue.service +0 -0
  374. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-drive-queue.timer +0 -0
  375. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-notify.service +0 -0
  376. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-notify.timer +0 -0
  377. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-release-propagate.service +0 -0
  378. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-release-propagate.timer +0 -0
  379. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-release-window.service +0 -0
  380. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-release-window.timer +0 -0
  381. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-serve.service +0 -0
  382. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-web-dist-build.service +0 -0
  383. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-web-dist-build.sh +0 -0
  384. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-web-dist-build.timer +0 -0
  385. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-web-rollback.sh +0 -0
  386. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/coord-web.service +0 -0
  387. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/deploy/node-shim.sh +0 -0
  388. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/ADR_COORD_WEB_DIST.md +0 -0
  389. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/ARCH_SECURITY_GATES.md +0 -0
  390. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/COCKPIT.md +0 -0
  391. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/CONTROL_CENTER.md +0 -0
  392. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/COST_DISCIPLINE.md +0 -0
  393. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/CROSS_PLATFORM.md +0 -0
  394. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/CUSTOMER_PORTAL.md +0 -0
  395. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/EPHEMERAL_WORKERS.md +0 -0
  396. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/FORGE_MIGRATION.md +0 -0
  397. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/GRAPHIFY_SETUP.md +0 -0
  398. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/ISSUE_GUIDANCE.md +0 -0
  399. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/MAC_MINI.md +0 -0
  400. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  401. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/NOTIFIER.md +0 -0
  402. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/OPENCODE_VERIFICATION.md +0 -0
  403. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/ORACLE_LOOP.md +0 -0
  404. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/PHONE_WEBAPP.md +0 -0
  405. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/PIPELINE_V2.md +0 -0
  406. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/PLATFORM_EVOLUTION.md +0 -0
  407. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/SECOND_BACKEND.md +0 -0
  408. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/STORE_SERVICE.md +0 -0
  409. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  410. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/WEB_CONTROL_CENTER.md +0 -0
  411. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/WSL_WINDOWS_WORKER.md +0 -0
  412. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/mocks/web/README.md +0 -0
  413. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/mocks/web/_tokens.css +0 -0
  414. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/mocks/web/issue-detail.html +0 -0
  415. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/mocks/web/pipeline-narrow.html +0 -0
  416. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/docs/mocks/web/pipeline-wide.html +0 -0
  417. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/graphify-out/.gitignore +0 -0
  418. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/install-agent.sh +0 -0
  419. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/pyproject.toml +0 -0
  420. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/audit_review_verdict_overrides.py +0 -0
  421. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  422. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/build-worker-image.sh +0 -0
  423. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/coordinator-machine.py +0 -0
  424. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/epic-down.sh +0 -0
  425. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/epic-up.sh +0 -0
  426. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/preflight.sh +0 -0
  427. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/provision-worker.sh +0 -0
  428. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  429. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  430. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/azure-workers/verify-github-token.sh +0 -0
  431. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/codegen.py +0 -0
  432. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/coord-test-runner.sh +0 -0
  433. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/drive-batch.sh +0 -0
  434. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/gen_board_fixture.py +0 -0
  435. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/next_release_tag.py +0 -0
  436. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/run_tests_in_populated_home.sh +0 -0
  437. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/run_tests_without_gh.sh +0 -0
  438. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/smoke_437_interactive.py +0 -0
  439. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/verify_878_review_capture.py +0 -0
  440. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/verify_release_published.py +0 -0
  441. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/scripts/verify_release_wheel.py +0 -0
  442. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/setup.cfg +0 -0
  443. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/SMOKE_SET.md +0 -0
  444. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/__init__.py +0 -0
  445. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  446. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-33/contract.md +0 -0
  447. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-33/manifest.yml +0 -0
  448. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  449. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  450. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  451. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  452. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-37/conftest.py +0 -0
  453. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-37/contract.md +0 -0
  454. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-37/manifest.yml +0 -0
  455. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  456. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  457. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/contract.md +0 -0
  458. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/manifest.yml +0 -0
  459. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  460. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  461. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  462. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  463. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  464. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  465. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  466. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  467. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  468. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  469. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-51/contract.md +0 -0
  470. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  471. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  472. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-51/manifest.yml +0 -0
  473. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  474. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-51/tsconfig.json +0 -0
  475. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  476. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  477. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/contract.md +0 -0
  478. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  479. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  480. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  481. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  482. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  483. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  484. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  485. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  486. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  487. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  488. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/conftest.py +0 -0
  489. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/board-pipeline-basic.json +0 -0
  490. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  491. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  492. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  493. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  494. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/playwright/all_pass.json +0 -0
  495. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  496. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/playwright/mixed_fail.json +0 -0
  497. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  498. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  499. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/playwright/skip.json +0 -0
  500. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/playwright/truncated.json +0 -0
  501. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  502. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  503. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  504. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  505. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  506. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  507. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  508. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  509. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_acceptance.py +0 -0
  510. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_acceptance_drivers.py +0 -0
  511. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent.py +0 -0
  512. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_api_error.py +0 -0
  513. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_app.py +0 -0
  514. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_branch_base.py +0 -0
  515. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_branch_capture.py +0 -0
  516. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_config_free_1712.py +0 -0
  517. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_deploy_units_endpoint.py +0 -0
  518. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_dirty_worktree.py +0 -0
  519. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  520. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_graph_self_heal.py +0 -0
  521. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_health_h3.py +0 -0
  522. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_idle_restart.py +0 -0
  523. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_push_failure.py +0 -0
  524. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_reap.py +0 -0
  525. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_repos_and_pull.py +0 -0
  526. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_restart_services_endpoint.py +0 -0
  527. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_startup_diagnostics.py +0 -0
  528. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_update.py +0 -0
  529. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_update_bluegreen.py +0 -0
  530. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_usage_limit.py +0 -0
  531. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_agent_zero_commit.py +0 -0
  532. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_ambient_home_isolation.py +0 -0
  533. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_approve_reject_plan.py +0 -0
  534. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_approve_usage_gate.py +0 -0
  535. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_assignment_already_recorded_daemon.py +0 -0
  536. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_audit_log.py +0 -0
  537. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_audit_outcome.py +0 -0
  538. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_audit_query.py +0 -0
  539. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_auto_loop.py +0 -0
  540. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_auto_release_publish_2035.py +0 -0
  541. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_base_checkout_restore.py +0 -0
  542. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_block_log.py +0 -0
  543. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_board_cap_762.py +0 -0
  544. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_board_fixture.py +0 -0
  545. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_board_read_path.py +0 -0
  546. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_board_service.py +0 -0
  547. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_board_state.py +0 -0
  548. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_board_wire.py +0 -0
  549. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_brain.py +0 -0
  550. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_branch_model.py +0 -0
  551. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_bug_intake.py +0 -0
  552. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_build_worker_image_env_update.py +0 -0
  553. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cargo_cache.py +0 -0
  554. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_ci_acceptance_gate_1950.py +0 -0
  555. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_ci_parity_2091.py +0 -0
  556. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_ci_store.py +0 -0
  557. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_claim.py +0 -0
  558. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_acceptance.py +0 -0
  559. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_assign.py +0 -0
  560. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  561. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_assign_interactive_remote.py +0 -0
  562. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_assign_provider.py +0 -0
  563. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  564. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_audit.py +0 -0
  565. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_chat_continue.py +0 -0
  566. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_decide.py +0 -0
  567. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_diagnose_config_provenance.py +0 -0
  568. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_diagnose_graph.py +0 -0
  569. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_doctor.py +0 -0
  570. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_doctor_config_free_1801.py +0 -0
  571. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  572. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_drive.py +0 -0
  573. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_drive_queue.py +0 -0
  574. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_escalate.py +0 -0
  575. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_fix_headless_review.py +0 -0
  576. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_gate_a.py +0 -0
  577. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_install_drift.py +0 -0
  578. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_install_skills.py +0 -0
  579. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_issue_create_label.py +0 -0
  580. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_issue_reopen.py +0 -0
  581. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_merge.py +0 -0
  582. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_assign.py +0 -0
  583. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_capture.py +0 -0
  584. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_chat_add_child.py +0 -0
  585. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_dispatch.py +0 -0
  586. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_gate_b.py +0 -0
  587. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_gate_c.py +0 -0
  588. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_order.py +0 -0
  589. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  590. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_milestone_ship.py +0 -0
  591. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_network.py +0 -0
  592. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_new_issue_chat.py +0 -0
  593. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_plans.py +0 -0
  594. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_portal.py +0 -0
  595. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_pull_artifact.py +0 -0
  596. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_queue.py +0 -0
  597. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_reattach_sessions.py +0 -0
  598. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_refine_board.py +0 -0
  599. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_release_preflight.py +0 -0
  600. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_release_propagate.py +0 -0
  601. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_release_window.py +0 -0
  602. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_repo_2220.py +0 -0
  603. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_scorecard.py +0 -0
  604. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_set_review_findings.py +0 -0
  605. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_status_advisory_terminal.py +0 -0
  606. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_status_merge_queue.py +0 -0
  607. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_status_provider.py +0 -0
  608. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_status_review_finalizing.py +0 -0
  609. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_status_test_failed_tag.py +0 -0
  610. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_status_usage_limit.py +0 -0
  611. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_sync_comments_873.py +0 -0
  612. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_test_plan.py +0 -0
  613. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_track.py +0 -0
  614. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_tui_update.py +0 -0
  615. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cli_wait.py +0 -0
  616. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_client_base_install.py +0 -0
  617. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_comments.py +0 -0
  618. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_completion_summary.py +0 -0
  619. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_config.py +0 -0
  620. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_config_acceptance.py +0 -0
  621. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_config_audit.py +0 -0
  622. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_config_pricing.py +0 -0
  623. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  624. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_config_usage_gate.py +0 -0
  625. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_conflict_fix.py +0 -0
  626. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_conflict_fix_semantic.py +0 -0
  627. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_coord_test.py +0 -0
  628. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_coord_test_runner_baseline.py +0 -0
  629. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_coord_test_runner_populated_home.py +0 -0
  630. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_coord_test_runner_routing.py +0 -0
  631. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_coord_test_runner_toolchain.py +0 -0
  632. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_coord_web_sse_restart_live.py +0 -0
  633. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_coordinator_machine.py +0 -0
  634. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_cross_platform_imports.py +0 -0
  635. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dashboard.py +0 -0
  636. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dashboard_fixture.py +0 -0
  637. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dashboard_terminal.py +0 -0
  638. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dashboard_terminal_live.py +0 -0
  639. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_db.py +0 -0
  640. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dead_end.py +0 -0
  641. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deploy_coord_db_backup.py +0 -0
  642. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deploy_coord_web_dist.py +0 -0
  643. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deploy_coord_web_rollback.py +0 -0
  644. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deploy_drive_queue_unit.py +0 -0
  645. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deploy_manifest.py +0 -0
  646. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deploy_units_lane.py +0 -0
  647. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deploy_web_unit.py +0 -0
  648. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_deps.py +0 -0
  649. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_diagnose.py +0 -0
  650. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dispatch.py +0 -0
  651. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dispatch_target_validation.py +0 -0
  652. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_dist_name.py +0 -0
  653. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_done_housekeeping.py +0 -0
  654. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_drive.py +0 -0
  655. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_drive_state.py +0 -0
  656. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_drive_tmux.py +0 -0
  657. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_epic_up_capability_detection.py +0 -0
  658. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  659. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_epic_up_image_provenance.py +0 -0
  660. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_errors.py +0 -0
  661. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_events.py +0 -0
  662. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_failure_class.py +0 -0
  663. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_filelock.py +0 -0
  664. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  665. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_fix_of_force_override.py +0 -0
  666. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_fleet_config_health.py +0 -0
  667. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_fleet_health_probes.py +0 -0
  668. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_fleet_health_snapshot.py +0 -0
  669. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_freshness.py +0 -0
  670. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_gate_a.py +0 -0
  671. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_gate_b.py +0 -0
  672. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_gate_snapshot_staleness.py +0 -0
  673. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_gates.py +0 -0
  674. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  675. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_generated_types_fixture.py +0 -0
  676. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_github_ops.py +0 -0
  677. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_goal.py +0 -0
  678. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_graph_health.py +0 -0
  679. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_graph_selfheal_absent_2237.py +0 -0
  680. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_handoff.py +0 -0
  681. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_checks.py +0 -0
  682. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_cli.py +0 -0
  683. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_cli_graph.py +0 -0
  684. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_config.py +0 -0
  685. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_context.py +0 -0
  686. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_deploy_lane_facts.py +0 -0
  687. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_incident_regression.py +0 -0
  688. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_pypi.py +0 -0
  689. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_registry.py +0 -0
  690. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_timer_active.py +0 -0
  691. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_toolchain.py +0 -0
  692. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_unit_drift.py +0 -0
  693. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_health_unit_enablement.py +0 -0
  694. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_hooks.py +0 -0
  695. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_human_attended_437.py +0 -0
  696. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_init.py +0 -0
  697. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_integration.py +0 -0
  698. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_interactive_briefing_echo.py +0 -0
  699. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_interactive_prefill_state.py +0 -0
  700. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_interactive_session_relaunch.py +0 -0
  701. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_interactive_test_verdict_backstop.py +0 -0
  702. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_interactive_token_attribution.py +0 -0
  703. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_interactive_worktree.py +0 -0
  704. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_issue_store_seam.py +0 -0
  705. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_liveness_auditor.py +0 -0
  706. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_liveness_notify.py +0 -0
  707. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_machine_pause.py +0 -0
  708. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_merge_queue.py +0 -0
  709. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_merge_verify.py +0 -0
  710. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_milestone_chat.py +0 -0
  711. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_milestone_dispatch.py +0 -0
  712. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_milestone_gate.py +0 -0
  713. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_milestone_order.py +0 -0
  714. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_milestone_seam.py +0 -0
  715. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_mock_author.py +0 -0
  716. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_model_tiering.py +0 -0
  717. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_models.py +0 -0
  718. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_models_config_labels.py +0 -0
  719. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_needs_attention.py +0 -0
  720. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_network.py +0 -0
  721. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_new_issue_chat.py +0 -0
  722. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_next_release_tag.py +0 -0
  723. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_no_direct_gh_calls.py +0 -0
  724. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_node_shim.py +0 -0
  725. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_baseline.py +0 -0
  726. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_cli.py +0 -0
  727. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_collect.py +0 -0
  728. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_config.py +0 -0
  729. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_drive_seam.py +0 -0
  730. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_isolation.py +0 -0
  731. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_predicate.py +0 -0
  732. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_quiet_hours.py +0 -0
  733. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notifier_service.py +0 -0
  734. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notify.py +0 -0
  735. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_notify_drain.py +0 -0
  736. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_openapi.py +0 -0
  737. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_operational_defaults.py +0 -0
  738. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_overlap_fence.py +0 -0
  739. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_overlap_predict.py +0 -0
  740. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_packaged_deploy_units.py +0 -0
  741. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_parentage.py +0 -0
  742. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_paste_landed.py +0 -0
  743. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_pipeline.py +0 -0
  744. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_plan_followup_approve_plan_command.py +0 -0
  745. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_plan_followup_pr_command.py +0 -0
  746. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_plan_followup_review_command.py +0 -0
  747. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_plan_only.py +0 -0
  748. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_plan_parser.py +0 -0
  749. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_platform_paths.py +0 -0
  750. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_portal_bridge.py +0 -0
  751. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_portal_config.py +0 -0
  752. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_portal_sync.py +0 -0
  753. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_pr_body_lint.py +0 -0
  754. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_prereqs.py +0 -0
  755. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_production_db_guard.py +0 -0
  756. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_progress.py +0 -0
  757. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_provider_seam.py +0 -0
  758. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_providers.py +0 -0
  759. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_providers_config_labels.py +0 -0
  760. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_providers_pty.py +0 -0
  761. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_quiet_hours.py +0 -0
  762. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_quiet_hours_store_2146.py +0 -0
  763. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reap_merged_sessions.py +0 -0
  764. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reap_stale_interactive_tick.py +0 -0
  765. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reconcile.py +0 -0
  766. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reconcile_branch.py +0 -0
  767. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reconcile_completions.py +0 -0
  768. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reconcile_merges.py +0 -0
  769. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reconcile_no_agent_record.py +0 -0
  770. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reconcile_tick.py +0 -0
  771. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reconcile_usage_limit_done.py +0 -0
  772. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_refine_chat.py +0 -0
  773. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_release_cordon_2101.py +0 -0
  774. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  775. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_release_cordon_deadlock_2240.py +0 -0
  776. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_release_propagate.py +0 -0
  777. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_release_unified_1242.py +0 -0
  778. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_release_verify.py +0 -0
  779. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_release_window.py +0 -0
  780. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_remote_auto_prune.py +0 -0
  781. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_remote_interactive_reaper.py +0 -0
  782. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_repo_edit_2220.py +0 -0
  783. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_repo_graph_fleet_2237.py +0 -0
  784. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_repo_onboard_2220.py +0 -0
  785. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_report_result_push.py +0 -0
  786. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_reports.py +0 -0
  787. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_retry.py +0 -0
  788. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_retry_advisory_1606.py +0 -0
  789. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_retry_type_1636.py +0 -0
  790. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_revalidate.py +0 -0
  791. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review.py +0 -0
  792. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_end_review_without_verdict.py +0 -0
  793. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_parse_failure_diagnostic.py +0 -0
  794. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_reaffirm.py +0 -0
  795. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_state.py +0 -0
  796. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_verdict_backstop.py +0 -0
  797. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_verdict_override_audit.py +0 -0
  798. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_verdict_relay.py +0 -0
  799. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_review_zero_commits.py +0 -0
  800. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_scoped_review_wiring.py +0 -0
  801. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_scorecard.py +0 -0
  802. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_serve.py +0 -0
  803. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_serve_app_board_trim.py +0 -0
  804. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_session.py +0 -0
  805. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_slice_issue_attribution.py +0 -0
  806. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_smoke.py +0 -0
  807. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_smoke_live_checkout_restore.py +0 -0
  808. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_smoke_workflow.py +0 -0
  809. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_spend_ceiling.py +0 -0
  810. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_spend_ceiling_coordinator.py +0 -0
  811. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_split.py +0 -0
  812. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_split_work.py +0 -0
  813. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_stage_projection.py +0 -0
  814. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_stalled_pipeline.py +0 -0
  815. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_state.py +0 -0
  816. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_state_review_findings_daemon.py +0 -0
  817. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_status_fleet_footer.py +0 -0
  818. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_stop_1567.py +0 -0
  819. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_stuck.py +0 -0
  820. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_terminal_command.py +0 -0
  821. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_test_author.py +0 -0
  822. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_test_chat.py +0 -0
  823. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_test_orchestrator.py +0 -0
  824. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_test_report.py +0 -0
  825. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_test_verdict_parsing.py +0 -0
  826. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_test_verdict_transcript_floor.py +0 -0
  827. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_thin_client_board_audit.py +0 -0
  828. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_thin_client_config_load_1080.py +0 -0
  829. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_thin_client_daemon_routing_906.py +0 -0
  830. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_tmux_host.py +0 -0
  831. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_tmux_session.py +0 -0
  832. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_transcript_floor.py +0 -0
  833. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_usage.py +0 -0
  834. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_usage_limits.py +0 -0
  835. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_usage_rollup.py +0 -0
  836. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_venv_live_install_2121.py +0 -0
  837. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_version_single_source.py +0 -0
  838. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_watch.py +0 -0
  839. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  840. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_worker_events.py +0 -0
  841. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_worker_image_pin_sync.py +0 -0
  842. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_worker_safety.py +0 -0
  843. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_worker_test_scoping.py +0 -0
  844. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_worktree.py +0 -0
  845. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  846. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/Cargo.lock +0 -0
  847. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/Cargo.toml +0 -0
  848. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/cargo-config-local-quadraui.toml.example +0 -0
  849. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/audit.rs +0 -0
  850. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/chat.rs +0 -0
  851. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/data.rs +0 -0
  852. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/dialogs.rs +0 -0
  853. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/doc_tabs.rs +0 -0
  854. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/drive.rs +0 -0
  855. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/drive_queue.rs +0 -0
  856. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/escalation.rs +0 -0
  857. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/fleet_health.rs +0 -0
  858. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/fleet_sessions.rs +0 -0
  859. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/fleet_terminals.rs +0 -0
  860. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/format.rs +0 -0
  861. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/milestone_dag.rs +0 -0
  862. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/msv.rs +0 -0
  863. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/pipeline.rs +0 -0
  864. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/plans.rs +0 -0
  865. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/reports.rs +0 -0
  866. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/sessions.rs +0 -0
  867. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/settings_ui.rs +0 -0
  868. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/sidebar.rs +0 -0
  869. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/terminal.rs +0 -0
  870. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/types.rs +0 -0
  871. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/app/workspace.rs +0 -0
  872. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/bin/gtk.rs +0 -0
  873. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/commands.rs +0 -0
  874. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/lib.rs +0 -0
  875. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/main.rs +0 -0
  876. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/src/settings.rs +0 -0
  877. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/tests/cli.rs +0 -0
  878. {code_coordinator-0.5.154 → code_coordinator-0.5.158}/tui/tests/fixtures/board_sample.json +0 -0
@@ -135,30 +135,14 @@ computes the routing without actually building or testing anything.
135
135
  ## Working on `tui/` — the `quadraui` pin
136
136
 
137
137
  **`coord-tui` pins `quadraui` to a git rev in `tui/Cargo.toml`**
138
- (`quadraui = { git = "https://github.com/JDonaghy/quadraui", rev = "<sha>" }`, #1973). This
139
- replaced the old relative-path dependency (`../../quadraui/quadraui`), which built against
140
- whatever branch happened to be checked out in `~/src/quadraui` a quadraui merge could break
141
- coord-tui's build/merge with **zero coord-tui commits and no warning** (it already happened
142
- once). `cargo build`/`cargo test` from `tui/` now fetch quadraui straight from GitHub at the
143
- pinned rev and never touch `~/src/quadraui`, so the local checkout's branch is irrelevant.
144
-
145
- - **Bumping the pin** (deliberate, reviewable, its own coord-tui commit): pick the target
146
- quadraui rev — normally the tip of `origin/develop` (quadraui's default/integration branch,
147
- per quadraui's CLAUDE.md) — edit the `rev = "..."` in `tui/Cargo.toml`, then run
148
- `cargo build && cargo test` from `tui/` and confirm EXIT=0 before committing.
149
- `cargo update -p quadraui` alone will **not** move a `rev`-pinned git dependency; the
150
- `Cargo.toml` edit is the actual bump.
151
- - **Co-developing against an unmerged quadraui branch/PR:** if a `tui/` task consumes a
152
- not-yet-merged quadraui feature, the briefing **must** name the quadraui PR/branch. The
153
- worker builds against a local `~/src/quadraui` checkout **without editing
154
- `tui/Cargo.toml`**, via cargo's local-paths override:
155
- `cp tui/cargo-config-local-quadraui.toml.example tui/.cargo/config.toml` (git-ignored — see
156
- the example file's header) after checking out the target branch in `~/src/quadraui`. Delete
157
- `tui/.cargo/config.toml` (or don't create it) to build against the pinned rev again — this
158
- is the default and what CI/other workers use. **Verify build EXIT=0 from `tui/` both with
159
- the override active (proves the feature works) and, before finishing, confirm the committed
160
- `tui/Cargo.toml` still points at the pinned rev** (the override file itself is never
161
- committed).
138
+ (`quadraui = { git = "https://github.com/JDonaghy/quadraui", rev = "<sha>" }`, #1973)
139
+ never edit that `rev` as a shortcut for co-development, and never build `tui/` against
140
+ whatever happens to be checked out in `~/src/quadraui`; a quadraui merge broke coord-tui's
141
+ build with zero coord-tui commits and no warning once already, which is exactly what the pin
142
+ prevents. Bumping the pin deliberately, and building against an unmerged quadraui branch/PR
143
+ without touching the pin, are both procedures see the `tui-quadraui-workflow` skill
144
+ (`coord/skills/tui-quadraui-workflow/SKILL.md`) for the steps; install it with `coord
145
+ install-skills` if it isn't already on this machine.
162
146
 
163
147
  ## Key Design Decisions
164
148
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.154
3
+ Version: 0.5.158
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.154
3
+ Version: 0.5.158
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
@@ -344,7 +344,14 @@ coord/providers/base.py
344
344
  coord/providers/claude.py
345
345
  coord/providers/claude_pty.py
346
346
  coord/providers/opencode.py
347
+ coord/skills/coord-dispatch-verbs/SKILL.md
348
+ coord/skills/drive-queue-preflight/SKILL.md
349
+ coord/skills/fleet-restart-safety/SKILL.md
350
+ coord/skills/merge-stuck-triage/SKILL.md
351
+ coord/skills/pipeline-limbo-triage/SKILL.md
347
352
  coord/skills/portal-followup/SKILL.md
353
+ coord/skills/review-verdict-recovery/SKILL.md
354
+ coord/skills/tui-quadraui-workflow/SKILL.md
348
355
  coord/skills/update-issue/SKILL.md
349
356
  deploy/coord-agent.service
350
357
  deploy/coord-db-backup.service
@@ -442,6 +449,7 @@ tests/test_agent_push_failure.py
442
449
  tests/test_agent_reap.py
443
450
  tests/test_agent_repos_and_pull.py
444
451
  tests/test_agent_restart_services_endpoint.py
452
+ tests/test_agent_skills_self_heal.py
445
453
  tests/test_agent_startup_diagnostics.py
446
454
  tests/test_agent_update.py
447
455
  tests/test_agent_update_bluegreen.py
@@ -795,6 +803,7 @@ tests/acceptance/ms-51/mocks/home-active.html
795
803
  tests/acceptance/ms-65/board_tabs_2282.rs
796
804
  tests/acceptance/ms-65/board_tabs_close_2283.rs
797
805
  tests/acceptance/ms-65/contract.md
806
+ tests/acceptance/ms-65/detail_substate_2285.rs
798
807
  tests/acceptance/ms-65/manifest.yml
799
808
  tests/acceptance/ms-65/pipeline_tabs_2284.rs
800
809
  tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen
@@ -307,7 +307,14 @@
307
307
  "coord/review.py",
308
308
  "coord/scorecard.py",
309
309
  "coord/serve_app.py",
310
+ "coord/skills/coord-dispatch-verbs/SKILL.md",
311
+ "coord/skills/drive-queue-preflight/SKILL.md",
312
+ "coord/skills/fleet-restart-safety/SKILL.md",
313
+ "coord/skills/merge-stuck-triage/SKILL.md",
314
+ "coord/skills/pipeline-limbo-triage/SKILL.md",
310
315
  "coord/skills/portal-followup/SKILL.md",
316
+ "coord/skills/review-verdict-recovery/SKILL.md",
317
+ "coord/skills/tui-quadraui-workflow/SKILL.md",
311
318
  "coord/skills/update-issue/SKILL.md",
312
319
  "coord/smoke.py",
313
320
  "coord/spend_ceiling.py",
@@ -436,6 +443,7 @@
436
443
  "tests/acceptance/ms-65/board_tabs_2282.rs",
437
444
  "tests/acceptance/ms-65/board_tabs_close_2283.rs",
438
445
  "tests/acceptance/ms-65/contract.md",
446
+ "tests/acceptance/ms-65/detail_substate_2285.rs",
439
447
  "tests/acceptance/ms-65/manifest.yml",
440
448
  "tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen",
441
449
  "tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen",
@@ -486,6 +494,7 @@
486
494
  "tests/test_agent_reap.py",
487
495
  "tests/test_agent_repos_and_pull.py",
488
496
  "tests/test_agent_restart_services_endpoint.py",
497
+ "tests/test_agent_skills_self_heal.py",
489
498
  "tests/test_agent_startup_diagnostics.py",
490
499
  "tests/test_agent_update.py",
491
500
  "tests/test_agent_update_bluegreen.py",
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.154",
2
+ "tag": "0.5.158",
3
3
  "distance": 0,
4
- "node": "g318d3f718e0a8945e4363a00807cd76278153173",
4
+ "node": "g4e440181f25b4e02cfc8fc64b76c584c7e63a197",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-19"
@@ -4504,6 +4504,24 @@ class AgentServer:
4504
4504
  self._graph_heal_last_skip_at: float | None = None
4505
4505
  self._graph_heal_passes: int = 0
4506
4506
 
4507
+ # Skills self-heal (#319 follow-up): `coord install-skills` was a
4508
+ # real fix (coord/skills/*/SKILL.md) for a real problem, but was a
4509
+ # 100%-manual step nothing in provisioning ever ran — so a skill
4510
+ # added or updated in a coordinator release could sit uninstalled on
4511
+ # a worker machine indefinitely, unnoticed, the same "silent gap"
4512
+ # shape already known from the graphify hooks and the browser
4513
+ # capability probe. Rides the same cached health-check tick as the
4514
+ # graph self-heal above rather than adding a new timer — syncing a
4515
+ # handful of small text files is cheap enough to need none of that
4516
+ # pass's guards (no idle-gate, no in-flight dedup, no retry budget).
4517
+ # In-memory only, resets on agent restart, same rationale as
4518
+ # `_graph_heal_passes` above: it exists to answer "is this machine's
4519
+ # skill set current", not to be a durable metric.
4520
+ self._skills_heal_passes: int = 0
4521
+ self._skills_heal_last_run_at: float | None = None
4522
+ self._skills_heal_last_synced: list[dict[str, str]] = []
4523
+ self._skills_heal_last_error: str | None = None
4524
+
4507
4525
  self.state_dir.mkdir(parents=True, exist_ok=True)
4508
4526
  self.log_dir.mkdir(parents=True, exist_ok=True)
4509
4527
  self._load_state()
@@ -4888,6 +4906,21 @@ class AgentServer:
4888
4906
  "skipped_active": self._graph_heal_skipped_active,
4889
4907
  "last_skip_at": self._graph_heal_last_skip_at,
4890
4908
  },
4909
+ # Same idea as `graph_self_heal` above, for the bundled
4910
+ # `coord/skills/*/SKILL.md` sync: `coord install-skills` existed
4911
+ # as a real fix but was a 100%-manual step nothing in
4912
+ # provisioning ever ran, so a skill added in a coordinator
4913
+ # release could sit uninstalled on a worker machine
4914
+ # indefinitely, unnoticed. `last_synced` names whichever skills
4915
+ # actually changed on the most recent pass (empty on the common
4916
+ # "already current" tick) so `coord doctor` can show something
4917
+ # more useful than a bare pass count.
4918
+ "skills_self_heal": {
4919
+ "passes": self._skills_heal_passes,
4920
+ "last_run_at": self._skills_heal_last_run_at,
4921
+ "last_synced": self._skills_heal_last_synced,
4922
+ "last_error": self._skills_heal_last_error,
4923
+ },
4891
4924
  # #2299: is this agent actually watching a coordinator.yml, and
4892
4925
  # has it picked anything up? `watching` is None for a
4893
4926
  # config-free/thin-client agent (nothing local to re-read), which
@@ -4953,6 +4986,12 @@ class AgentServer:
4953
4986
  self._self_heal_stale_graphs(ctx, report)
4954
4987
  except Exception as exc: # noqa: BLE001 — self-heal is best-effort
4955
4988
  _log.warning("graph self-heal pass failed: %s", exc)
4989
+ try:
4990
+ # Same isolation as the graph pass above: a skills-sync bug
4991
+ # must never blind this whole health block.
4992
+ self._self_heal_missing_skills()
4993
+ except Exception as exc: # noqa: BLE001 — self-heal is best-effort
4994
+ _log.warning("skills self-heal pass failed: %s", exc)
4956
4995
  report_dict = report.to_dict()
4957
4996
  payload = {
4958
4997
  "schema": report_dict["schema"],
@@ -5169,6 +5208,59 @@ class AgentServer:
5169
5208
  if replacement is not None:
5170
5209
  report.results[i] = replacement
5171
5210
 
5211
+ def _self_heal_missing_skills(self) -> None:
5212
+ """Sync bundled `coord/skills/*/SKILL.md` into ``~/.claude/skills/``
5213
+ on this machine, riding the same cached health-check tick as
5214
+ `_self_heal_stale_graphs` above.
5215
+
5216
+ `coord install-skills` (#319) was a real fix for a real problem, but
5217
+ it was a 100%-manual step — nothing in agent provisioning or this
5218
+ health tick ever ran it, so a skill added or updated in a
5219
+ coordinator release could sit uninstalled on a worker machine
5220
+ indefinitely, unnoticed. That is the same "silent gap" shape as the
5221
+ graphify hooks and the browser-capability probe this codebase
5222
+ already knows about.
5223
+
5224
+ Unlike the graph rebuild, this needs none of that pass's four
5225
+ guards: syncing a handful of small text files is cheap file I/O, not
5226
+ a CPU-heavy subprocess, so there is no idle-gate, no in-flight
5227
+ dedup, and no retry budget — `sync_bundled_skills` is already
5228
+ idempotent (content-identical files are left untouched, so a
5229
+ no-op tick costs a handful of reads, nothing more).
5230
+ """
5231
+ from coord.commands.setup import ( # noqa: PLC0415
5232
+ list_bundled_skill_dirs,
5233
+ sync_bundled_skills,
5234
+ )
5235
+
5236
+ target_root = Path.home() / ".claude" / "skills"
5237
+ try:
5238
+ skill_dirs = list_bundled_skill_dirs()
5239
+ except Exception as exc: # noqa: BLE001 — recorded, never raised further
5240
+ self._skills_heal_last_error = f"{type(exc).__name__}: {exc}"
5241
+ return
5242
+
5243
+ self._skills_heal_passes += 1
5244
+ self._skills_heal_last_run_at = time.time()
5245
+ self._skills_heal_last_error = None
5246
+ if not skill_dirs:
5247
+ self._skills_heal_last_synced = []
5248
+ return
5249
+
5250
+ target_root.mkdir(parents=True, exist_ok=True)
5251
+ results = sync_bundled_skills(target_root, skill_dirs)
5252
+ changed = [
5253
+ {"skill": name, "action": action}
5254
+ for name, action in results
5255
+ if action != "unchanged"
5256
+ ]
5257
+ self._skills_heal_last_synced = changed
5258
+ if changed:
5259
+ _log.info(
5260
+ "skills self-heal: %s",
5261
+ ", ".join(f"{c['skill']} {c['action']}" for c in changed),
5262
+ )
5263
+
5172
5264
  @staticmethod
5173
5265
  def _graph_failure_result(result: Any, values: dict, detail: str) -> Any:
5174
5266
  """Guard 4's WARN replacement, shared by the attempt and the
@@ -683,6 +683,9 @@ def backlog(repo: str, issue: int, config_path: Path) -> None:
683
683
  "Stage a Pipeline issue as \"next up\" by tagging it with "
684
684
  "`status:queued` — moves a Pipeline:New card into "
685
685
  "In-progress:`ready` with no dispatch (display + intent only).\n\n"
686
+ "NOT the driver queue: this command never dispatches anything. To "
687
+ "actually get an issue worked end-to-end, use `coord drive-queue "
688
+ "add <repo> <issue>` instead — see the coord-dispatch-verbs skill.\n\n"
686
689
  "Deliberately a separate label from `status:ready`: that one is "
687
690
  "already applied automatically by `coord track` / the refinement "
688
691
  "finalize step for every issue sent to the Pipeline, so it carries "
@@ -482,6 +482,60 @@ def _build_init_yaml(
482
482
  return "\n".join(lines) + "\n"
483
483
 
484
484
 
485
+ def list_bundled_skill_dirs() -> list[tuple[str, object]]:
486
+ """Enumerate bundled `coord/skills/*/SKILL.md` directories (#319).
487
+
488
+ Returns ``(skill_name, entry)`` pairs, sorted by name, for every
489
+ sub-directory of the installed `coord.skills` package that contains a
490
+ readable ``SKILL.md``. Raises ``ModuleNotFoundError``/``TypeError`` if
491
+ the package itself can't be located, or ``FileNotFoundError``/
492
+ ``NotADirectoryError`` if its directory listing can't be read — callers
493
+ decide how to surface that (``install_skills`` below exits 1; the
494
+ agent-side self-heal in `agent.py` logs and moves on, since a skills
495
+ hiccup must never block `/health`).
496
+ """
497
+ import importlib.resources as _ilr # noqa: PLC0415
498
+
499
+ skills_ref = _ilr.files("coord").joinpath("skills")
500
+ skill_dirs: list[tuple[str, object]] = []
501
+ for entry in skills_ref.iterdir():
502
+ skill_name = entry.name # type: ignore[attr-defined]
503
+ skill_file = entry.joinpath("SKILL.md")
504
+ try:
505
+ skill_file.read_text(encoding="utf-8")
506
+ skill_dirs.append((skill_name, entry))
507
+ except (FileNotFoundError, IsADirectoryError, TypeError):
508
+ pass
509
+ return sorted(skill_dirs)
510
+
511
+
512
+ def sync_bundled_skills(
513
+ target_root: Path, skill_dirs: list[tuple[str, object]]
514
+ ) -> list[tuple[str, str]]:
515
+ """Write each ``(skill_name, entry)`` from *skill_dirs* into
516
+ *target_root* (normally ``~/.claude/skills/``) if missing or changed
517
+ (#319 / agent self-heal).
518
+
519
+ Returns ``(skill_name, action)`` pairs, ``action`` one of ``"installed"``,
520
+ ``"updated"``, or ``"unchanged"`` — content-identical skills are left
521
+ untouched (no rewrite, no mtime bump) so a periodic caller can run this
522
+ every tick without churn. Does not create *target_root* itself; callers
523
+ create it first once they know there is something to write.
524
+ """
525
+ results: list[tuple[str, str]] = []
526
+ for skill_name, skill_dir_ref in skill_dirs:
527
+ skill_file_dest = target_root / skill_name / "SKILL.md"
528
+ src_text = skill_dir_ref.joinpath("SKILL.md").read_text(encoding="utf-8") # type: ignore[attr-defined]
529
+ if skill_file_dest.exists() and skill_file_dest.read_text(encoding="utf-8") == src_text:
530
+ results.append((skill_name, "unchanged"))
531
+ continue
532
+ action = "updated" if skill_file_dest.exists() else "installed"
533
+ skill_file_dest.parent.mkdir(parents=True, exist_ok=True)
534
+ skill_file_dest.write_text(src_text, encoding="utf-8")
535
+ results.append((skill_name, action))
536
+ return results
537
+
538
+
485
539
  @click.command(
486
540
  "install-skills",
487
541
  help=(
@@ -490,8 +544,6 @@ def _build_init_yaml(
490
544
  "No repo clone required — reads from the installed PyPI package."
491
545
  ),
492
546
  )
493
-
494
-
495
547
  @click.option(
496
548
  "--list",
497
549
  "do_list",
@@ -499,43 +551,24 @@ def _build_init_yaml(
499
551
  default=False,
500
552
  help="Show bundled skills and their installed status without copying.",
501
553
  )
502
-
503
-
504
554
  @click.option(
505
555
  "--dry-run",
506
556
  is_flag=True,
507
557
  default=False,
508
558
  help="Print what would be installed without writing any files.",
509
559
  )
510
-
511
-
512
560
  def install_skills(do_list: bool, dry_run: bool) -> None: # noqa: FBT001
513
561
  """Install bundled coordinator skills to ~/.claude/skills/ (#319)."""
514
- import importlib.resources as _ilr # noqa: PLC0415
515
-
516
562
  if do_list and dry_run:
517
563
  click.echo("warning: --dry-run has no effect when --list is used", err=True)
518
564
 
519
565
  target_root = Path.home() / ".claude" / "skills"
520
566
 
521
- # Locate the skills directory inside the installed package.
522
567
  try:
523
- skills_ref = _ilr.files("coord").joinpath("skills")
568
+ skill_dirs = list_bundled_skill_dirs()
524
569
  except (TypeError, ModuleNotFoundError) as e:
525
570
  click.echo(f"error: cannot locate bundled skills: {e}", err=True)
526
571
  sys.exit(1)
527
-
528
- # Enumerate skill directories (each sub-directory that contains SKILL.md).
529
- skill_dirs: list[tuple[str, object]] = []
530
- try:
531
- for entry in skills_ref.iterdir():
532
- skill_name = entry.name # type: ignore[attr-defined]
533
- skill_file = entry.joinpath("SKILL.md")
534
- try:
535
- skill_file.read_text(encoding="utf-8")
536
- skill_dirs.append((skill_name, entry))
537
- except (FileNotFoundError, IsADirectoryError, TypeError):
538
- pass
539
572
  except (FileNotFoundError, NotADirectoryError) as e:
540
573
  click.echo(f"error: bundled skills directory not readable: {e}", err=True)
541
574
  sys.exit(1)
@@ -546,31 +579,26 @@ def install_skills(do_list: bool, dry_run: bool) -> None: # noqa: FBT001
546
579
 
547
580
  if do_list:
548
581
  click.echo("Bundled skills:")
549
- for skill_name, _ in sorted(skill_dirs):
582
+ for skill_name, _ in skill_dirs:
550
583
  installed_path = target_root / skill_name / "SKILL.md"
551
584
  status = "installed" if installed_path.exists() else "not installed"
552
585
  click.echo(f" {skill_name:30s} {status}")
553
586
  return
554
587
 
555
- # Install / update each skill.
556
- if not dry_run:
557
- target_root.mkdir(parents=True, exist_ok=True)
558
- for skill_name, skill_dir_ref in sorted(skill_dirs):
559
- skill_dest = target_root / skill_name
560
- skill_file_dest = skill_dest / "SKILL.md"
561
- if dry_run:
588
+ if dry_run:
589
+ for skill_name, _ in skill_dirs:
590
+ skill_file_dest = target_root / skill_name / "SKILL.md"
562
591
  action = "update" if skill_file_dest.exists() else "install"
563
592
  click.echo(f" would {action}: {skill_file_dest}")
564
- continue
593
+ return
565
594
 
566
- skill_dest.mkdir(parents=True, exist_ok=True)
567
- src_text = skill_dir_ref.joinpath("SKILL.md").read_text(encoding="utf-8")
568
- action = "updated" if skill_file_dest.exists() else "installed"
569
- skill_file_dest.write_text(src_text, encoding="utf-8")
570
- click.echo(f" {action}: {skill_file_dest}")
595
+ target_root.mkdir(parents=True, exist_ok=True)
596
+ for skill_name, action in sync_bundled_skills(target_root, skill_dirs):
597
+ if action == "unchanged":
598
+ continue
599
+ click.echo(f" {action}: {target_root / skill_name / 'SKILL.md'}")
571
600
 
572
- if not dry_run:
573
- installed_names = sorted(name for name, _ in skill_dirs)
574
- cmd_list = " ".join(f"/{n}" for n in installed_names)
575
- click.echo(f"\nDone. Available skills: {cmd_list}")
576
- click.echo("Type a skill name inside a Claude Code session to use it.")
601
+ installed_names = sorted(name for name, _ in skill_dirs)
602
+ cmd_list = " ".join(f"/{n}" for n in installed_names)
603
+ click.echo(f"\nDone. Available skills: {cmd_list}")
604
+ click.echo("Type a skill name inside a Claude Code session to use it.")
@@ -1920,6 +1920,51 @@ def _retry_backoff_reason(
1920
1920
  )
1921
1921
 
1922
1922
 
1923
+ def _augment_backoff_reason(previous_reason: str, backoff_text: str) -> str:
1924
+ """#2411: fold the real death cause into the mechanical backoff text.
1925
+
1926
+ Before this, `plan_tick`'s waiting walk persisted `_retry_backoff_reason`'s
1927
+ return value as the entry's WHOLE `last_reason` on every tick it spent
1928
+ backing off — the purely mechanical "next attempt permitted in Ns"
1929
+ sentence, deliberately recomputed fresh each tick (see that function's
1930
+ docstring). That overwrote the rich `own_reason` (plus the #2273
1931
+ dispatch note and #2363 empty-branch note) `_reconcile_running`'s
1932
+ `retry` branch had just recorded at the moment of death — visible for
1933
+ exactly one tick, then gone. An operator reading `coord drive-queue
1934
+ list` — or anything else that reads `last_reason`, like `coord
1935
+ drive-queue diagnose` — saw only the spacing text and had no live way to
1936
+ tell WHY the entry kept dying, only that it would try again later.
1937
+
1938
+ Fix: keep the FIRST LINE of whatever reason is already on record — the
1939
+ real cause, written once at death — and put the fresh backoff sentence
1940
+ on a second line under it. `last_reason` was already documented as
1941
+ "possibly multi-line" (see `_ROW_CAUSE_MAX_CHARS`'s comment in
1942
+ `coord.commands.drive_queue`) precisely so a summary render can show
1943
+ line one on the row and the full text on the `last:` continuation line
1944
+ — this reuses that convention rather than inventing a new field or
1945
+ column.
1946
+
1947
+ Using only the first line (not the full previous text) keeps this
1948
+ idempotent across ticks: called again next tick against ITS OWN
1949
+ two-line output, the first line is still the original cause, never
1950
+ last tick's backoff sentence, so the stored text never grows past two
1951
+ lines no matter how many ticks the entry spends backing off.
1952
+
1953
+ Falls back to *backoff_text* alone when there is nothing to keep — a
1954
+ row with no prior `last_reason` (a fresh entry, or one hand-built in a
1955
+ test) — which is exactly today's pre-#2411 text for that case.
1956
+ """
1957
+ stripped = previous_reason.strip()
1958
+ if not stripped:
1959
+ return backoff_text
1960
+ base = stripped.splitlines()[0]
1961
+ # 3-space continuation indent — the same convention `coord/drive.py`'s
1962
+ # own multi-line exit reasons already use for their "inspect: coord log
1963
+ # ..." follow-up lines, so a combined reason reads as one paragraph
1964
+ # rather than a mismatched second line flush against the left margin.
1965
+ return f"{base}\n {backoff_text}"
1966
+
1967
+
1923
1968
  def _reconcile_running(
1924
1969
  entry: QueueEntry,
1925
1970
  board: BoardView,
@@ -3054,6 +3099,15 @@ def plan_tick(
3054
3099
  # this falls back to (the post-review #2273 "moving target" fix).
3055
3100
  effective_attempts: dict[str, int] = {e.key: e.attempts for e in ordered}
3056
3101
  retry_backoff_at_map: dict[str, float] = {}
3102
+ # #2411: same "prefer this tick's fresh write" rule, this time for the
3103
+ # real death cause `_backoff_reason` below folds into its combined
3104
+ # `last_reason` — see `_augment_backoff_reason`. Without this, an entry
3105
+ # that dies and hits the backoff check in the SAME tick (step 1 above,
3106
+ # then step 4 below) would combine against its STALE pre-tick
3107
+ # `entry.last_reason` — one tick behind the death this walk just
3108
+ # recorded — instead of the `own_reason`-based text `reconcile.reason`
3109
+ # carries fresh, right below.
3110
+ effective_last_reason: dict[str, str] = {e.key: e.last_reason for e in ordered}
3057
3111
 
3058
3112
  reconciles: list[Reconcile] = []
3059
3113
  blocked: list[Blocked] = []
@@ -3112,6 +3166,14 @@ def plan_tick(
3112
3166
  # for a backoff check reached later in this SAME tick, not the
3113
3167
  # entry's stale pre-tick `retry_backoff_at`.
3114
3168
  retry_backoff_at_map[entry.key] = now
3169
+ if reconcile.outcome == "retry":
3170
+ # #2411: `reconcile.reason` IS `reconcile.updates["last_reason"]`
3171
+ # (the retry branch of `_reconcile_running` builds both from the
3172
+ # same local `reason`) — the real death cause, `own_reason` plus
3173
+ # its #2273 dispatch-note/#2363 empty-branch-note. Recorded here
3174
+ # so a backoff check reached later in THIS tick combines against
3175
+ # it instead of the pre-tick `entry.last_reason`.
3176
+ effective_last_reason[entry.key] = reconcile.reason
3115
3177
  if block is not None:
3116
3178
  blocked.append(block)
3117
3179
  states[entry.key] = STATE_BLOCKED
@@ -3535,14 +3597,25 @@ def plan_tick(
3535
3597
  see that function's docstring for why neither can be read straight
3536
3598
  off `candidate`, and why the fallback is `candidate.retry_backoff_at`
3537
3599
  rather than `candidate.reason_at`.
3600
+
3601
+ #2411: the mechanical spacing text that comes back is never returned
3602
+ bare — :func:`_augment_backoff_reason` folds in the real death cause
3603
+ (resolved the same "prefer this tick's fresh write" way, off
3604
+ `effective_last_reason`) so both call sites below — the report-only
3605
+ dry-run pass and the persisted `last_reason` write — get the combined
3606
+ text for free, with no change needed at either site.
3538
3607
  """
3539
- return _retry_backoff_reason(
3608
+ backoff = _retry_backoff_reason(
3540
3609
  candidate,
3541
3610
  board.facts(candidate.key),
3542
3611
  now,
3543
3612
  effective_attempts.get(candidate.key, candidate.attempts),
3544
3613
  retry_backoff_at_map.get(candidate.key, candidate.retry_backoff_at),
3545
3614
  )
3615
+ if not backoff:
3616
+ return ""
3617
+ previous = effective_last_reason.get(candidate.key, candidate.last_reason)
3618
+ return _augment_backoff_reason(previous, backoff)
3546
3619
 
3547
3620
  # #1972's projection of per-repo occupancy AS THE WALK SEES IT: the board
3548
3621
  # reading above, plus this tick's own launch once one is chosen. Kept
@@ -0,0 +1,76 @@
1
+ # coord-dispatch-verbs skill
2
+
3
+ **Trigger:** About to run a `coord` command to enqueue, dispatch, stage, or
4
+ otherwise move a GitHub issue forward through the coordinator — from any repo,
5
+ including agents working *inside* a coordinator-managed repo, not just the
6
+ operator's own coordinator session — especially when unsure of the exact
7
+ subcommand name, or when a command exited 0 / printed a success message but
8
+ the expected effect (an entry in the queue, an assignment, a dispatch) didn't
9
+ show up.
10
+
11
+ **Purpose:** `coord`'s CLI has roughly 70 top-level commands, and several have
12
+ names that sound interchangeable but do very different things — picking the
13
+ wrong one usually does **not** error, it silently does something else. This is
14
+ the disambiguation table for the pairs that have actually cost real time,
15
+ plus the one rule that would catch a wrong guess before it's mistaken for
16
+ success.
17
+
18
+ ---
19
+
20
+ ## The incident this skill exists for
21
+
22
+ An agent working in coord-portal wanted to queue issue #119 for the
23
+ coordinator to pick up. It ran:
24
+
25
+ ```
26
+ coord queue coord-portal 119
27
+ ```
28
+
29
+ This command **exists**, exited 0, and printed a success-looking message — so
30
+ nothing signaled a mistake. But `coord queue` is **not** the driver queue. It
31
+ only tags the issue with a `status:queued` **label** — "next up" staging,
32
+ display + intent only, no dispatch (#1500; it's what the TUI's right-click
33
+ "Mark ready" fires). The issue never entered `coord drive-queue`'s actual
34
+ `waiting` list, so nothing ever picked it up.
35
+
36
+ **The command that was needed:** `coord drive-queue add coord-portal 119` —
37
+ the durable, board-backed driver queue (#1750) that a periodic tick actually
38
+ walks and dispatches from. See `docs/DRIVE_QUEUE.md` and the
39
+ `drive-queue-preflight` skill.
40
+
41
+ ## Disambiguation table — commands whose names collide but whose effects don't
42
+
43
+ | If you want to... | Use | NOT | Why the wrong one is dangerous |
44
+ |---|---|---|---|
45
+ | Actually get an issue worked, end-to-end, unattended | `coord drive-queue add <repo> <issue>` | `coord queue <repo> <issue>` | `queue` only applies a label — no dispatch, ever. A silent no-op relative to what you wanted. |
46
+ | Dispatch one issue's Work stage right now, interactively | `coord assign <machine> <repo> <issue>` | `coord drive <repo> <issue> --tmux` outside the queue, while the queue timer is active | `--tmux` drives correctly but is invisible to the queue panel and can race a live `coord-drive-queue.timer` tick — see `docs/OPERATING_GOTCHAS.md` #9. |
47
+ | Un-stage an issue you `coord queue`'d by mistake | `coord unqueue <repo> <issue>` | `coord drive-queue remove <repo> <issue>` | These touch two different systems (a label vs. a queue row) — running the wrong one leaves the other system's state untouched and the symptom persists. |
48
+ | Retry a failed **queue entry** | remove + re-add (`coord drive-queue remove` then `add`) | `coord retry <assignment_id>` | `retry` operates on a board *assignment*, not a drive-queue row — there is deliberately no `coord drive-queue reset` (see `drive-queue-preflight` / `docs/DRIVE_QUEUE.md` §4). |
49
+ | Check whether an issue is actually queued | `coord drive-queue list` / `coord drive-queue status` | trusting the exit code of whatever command you just ran | `coord queue`, `coord assign`, and `coord drive-queue add` all print a success line on their own happy path — only `coord drive-queue list` proves the entry exists as `waiting`. |
50
+
51
+ ## The one rule
52
+
53
+ **A `coord` command exiting 0 is proof it did what *that command* does — not
54
+ proof it did what you intended.** Before reporting a dispatch/queue/staging
55
+ action as done, confirm the effect directly:
56
+
57
+ ```bash
58
+ coord drive-queue list # is my issue actually a waiting/running row?
59
+ coord status # does an assignment exist for it?
60
+ coord gates <repo> <issue> # what stage does the board think it's in?
61
+ ```
62
+
63
+ If unsure which of two similarly-named commands does what you want, run
64
+ `coord <command> --help` first — every command's help text states its exact
65
+ effect (`coord queue --help` says so explicitly: "no dispatch, display +
66
+ intent only"). Guessing from the name alone is how this incident happened.
67
+
68
+ ## Rules
69
+
70
+ - Never assume `coord queue` enqueues work for dispatch — it only labels. The
71
+ only real dispatch queue is `coord drive-queue`.
72
+ - After any dispatch/queue command, verify with `coord drive-queue list` or
73
+ `coord status` before reporting the action as done — don't trust a clean
74
+ exit code alone.
75
+ - When unsure between two `coord` subcommands with similar names, run
76
+ `--help` on the one you're about to use before running it.