code-coordinator 0.5.114__tar.gz → 0.5.115__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 (845) hide show
  1. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/dispatch.py +27 -10
  5. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/diagnose.py +6 -0
  6. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/github_ops.py +69 -1
  7. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_diagnose.py +37 -0
  8. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_github_ops.py +187 -0
  9. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_retry_advisory_1606.py +9 -0
  10. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/.claude/commands/board.md +0 -0
  11. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/.claude/commands/complete-session.md +0 -0
  12. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/.claude/commands/coordinator.md +0 -0
  13. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/.githooks/_lib.sh +0 -0
  14. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/.githooks/post-checkout +0 -0
  15. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/.githooks/post-commit +0 -0
  16. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/.githooks/post-merge +0 -0
  17. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  18. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/.github/coord-ci-acceptance.yml +0 -0
  19. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/.github/workflows/auto-release.yml +0 -0
  20. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/.github/workflows/cargo-test.yml +0 -0
  21. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/.github/workflows/publish.yml +0 -0
  22. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/.github/workflows/release-tui.yml +0 -0
  23. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/.github/workflows/test.yml +0 -0
  24. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/.gitignore +0 -0
  25. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/CLAUDE.md +0 -0
  26. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/GOAL.md +0 -0
  27. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/LICENSE +0 -0
  28. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/MANIFEST.in +0 -0
  29. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/README.md +0 -0
  30. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/code_coordinator.egg-info/SOURCES.txt +0 -0
  31. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/code_coordinator.egg-info/dependency_links.txt +0 -0
  32. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/code_coordinator.egg-info/entry_points.txt +0 -0
  33. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/code_coordinator.egg-info/requires.txt +0 -0
  34. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/code_coordinator.egg-info/scm_file_list.json +0 -0
  35. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/code_coordinator.egg-info/top_level.txt +0 -0
  36. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/__init__.py +0 -0
  37. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/_board_mapping.py +0 -0
  38. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/acceptance.py +0 -0
  39. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/acceptance_drivers.py +0 -0
  40. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/agent.py +0 -0
  41. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/agent_app.py +0 -0
  42. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/agent_update.py +0 -0
  43. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/agents/opencode/.gitignore +0 -0
  44. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/agents/opencode/agents/work.md +0 -0
  45. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/agents/opencode/routing.jsonc +0 -0
  46. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/audit.py +0 -0
  47. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/auto_loop.py +0 -0
  48. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/block_log.py +0 -0
  49. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/board_bool_guard.py +0 -0
  50. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/board_service.py +0 -0
  51. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/board_wire.py +0 -0
  52. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/brain.py +0 -0
  53. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/branch_model.py +0 -0
  54. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/bug_intake.py +0 -0
  55. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/cargo_cache.py +0 -0
  56. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/ci_github.py +0 -0
  57. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/ci_store.py +0 -0
  58. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/claim.py +0 -0
  59. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/cli.py +0 -0
  60. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/client.py +0 -0
  61. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/__init__.py +0 -0
  62. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/_common.py +0 -0
  63. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/acceptance.py +0 -0
  64. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/agent_ops.py +0 -0
  65. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/audit.py +0 -0
  66. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/chat.py +0 -0
  67. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/dispatch_workers.py +0 -0
  68. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/drive.py +0 -0
  69. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/drive_queue.py +0 -0
  70. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/gate_a.py +0 -0
  71. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/gates.py +0 -0
  72. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/issues.py +0 -0
  73. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/lifecycle.py +0 -0
  74. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/merge.py +0 -0
  75. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/milestone.py +0 -0
  76. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/plan_followup.py +0 -0
  77. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/plans.py +0 -0
  78. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/portal.py +0 -0
  79. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/release.py +0 -0
  80. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/repo.py +0 -0
  81. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/report.py +0 -0
  82. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/review.py +0 -0
  83. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/scorecard.py +0 -0
  84. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/sessions.py +0 -0
  85. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/setup.py +0 -0
  86. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/status.py +0 -0
  87. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/terminal.py +0 -0
  88. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/test_gate.py +0 -0
  89. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/commands/tui.py +0 -0
  90. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/comments.py +0 -0
  91. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/config.py +0 -0
  92. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/config_reload.py +0 -0
  93. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/conflict_fix.py +0 -0
  94. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dao.py +0 -0
  95. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/__init__.py +0 -0
  96. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/fixture.py +0 -0
  97. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/index.html +0 -0
  98. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/server.py +0 -0
  99. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/terminal.py +0 -0
  100. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/.gitignore +0 -0
  101. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/components.json +0 -0
  102. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/dist/assets/Gallery-BoKs3mpY.js +0 -0
  103. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/dist/assets/Terminal-9CEnUXvW.css +0 -0
  104. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/dist/assets/Terminal-CEsP08iX.js +0 -0
  105. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/dist/assets/index-CDHPlB6k.js +0 -0
  106. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/dist/assets/index-Dq4kwTdw.css +0 -0
  107. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/dist/assets/workbox-window.prod.es5-BqEJf4Xk.js +0 -0
  108. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/dist/icons/icon-192.png +0 -0
  109. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/dist/icons/icon-512.png +0 -0
  110. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/dist/icons/icon.svg +0 -0
  111. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/dist/index.html +0 -0
  112. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/dist/manifest.webmanifest +0 -0
  113. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/dist/sw.js +0 -0
  114. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/dist/workbox-e4022e15.js +0 -0
  115. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/e2e/available-gates-terminal.spec.ts +0 -0
  116. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/e2e/deep-link.spec.ts +0 -0
  117. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/e2e/fixtureServer.ts +0 -0
  118. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/e2e/live-update-fixture.spec.ts +0 -0
  119. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/e2e/realtime.spec.ts +0 -0
  120. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/e2e/shell.spec.ts +0 -0
  121. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/e2e/smoke.spec.ts +0 -0
  122. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/e2e/terminal.spec.ts +0 -0
  123. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/e2e/theme.spec.ts +0 -0
  124. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/eslint.config.js +0 -0
  125. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/index.html +0 -0
  126. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/node_modules/flatted/python/flatted.py +0 -0
  127. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/package-lock.json +0 -0
  128. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/package.json +0 -0
  129. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/playwright.acceptance.config.ts +0 -0
  130. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/playwright.config.ts +0 -0
  131. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/postcss.config.js +0 -0
  132. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/public/icons/icon-192.png +0 -0
  133. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/public/icons/icon-512.png +0 -0
  134. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/public/icons/icon.svg +0 -0
  135. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/App.tsx +0 -0
  136. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/api/client.ts +0 -0
  137. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/api/generated.ts +0 -0
  138. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ConnectionBadge.tsx +0 -0
  139. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/Detail.tsx +0 -0
  140. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/Gallery.tsx +0 -0
  141. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/Home.tsx +0 -0
  142. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/MobileKeyBar.tsx +0 -0
  143. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/PanelHeader.tsx +0 -0
  144. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/PipelineCard.tsx +0 -0
  145. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/SessionCard.tsx +0 -0
  146. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/SessionDetail.tsx +0 -0
  147. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/SessionsList.tsx +0 -0
  148. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/Terminal.tsx +0 -0
  149. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/__tests__/ConnectionBadge.test.tsx +0 -0
  150. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/__tests__/Detail.test.tsx +0 -0
  151. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/__tests__/Gallery.test.tsx +0 -0
  152. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/__tests__/Home.test.tsx +0 -0
  153. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/__tests__/MobileKeyBar.test.tsx +0 -0
  154. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/__tests__/PipelineCard.test.tsx +0 -0
  155. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/__tests__/SessionCard.test.tsx +0 -0
  156. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/__tests__/Terminal.test.tsx +0 -0
  157. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ui/badge.tsx +0 -0
  158. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ui/button.tsx +0 -0
  159. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ui/card.tsx +0 -0
  160. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ui/dialog.tsx +0 -0
  161. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ui/dropdown-menu.tsx +0 -0
  162. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ui/empty-state.tsx +0 -0
  163. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ui/sheet.tsx +0 -0
  164. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ui/skeleton.tsx +0 -0
  165. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ui/tabs.tsx +0 -0
  166. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ui/theme-provider.tsx +0 -0
  167. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ui/theme-toggle.tsx +0 -0
  168. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ui/toast.tsx +0 -0
  169. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ui/toaster.tsx +0 -0
  170. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ui/tooltip.tsx +0 -0
  171. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/components/ui/use-toast.ts +0 -0
  172. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/index.css +0 -0
  173. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/lib/pipeline.ts +0 -0
  174. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/lib/utils.ts +0 -0
  175. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/main.tsx +0 -0
  176. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/realtime/RealtimeProvider.tsx +0 -0
  177. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/realtime/__tests__/RealtimeProvider.test.tsx +0 -0
  178. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/realtime/__tests__/connection.test.ts +0 -0
  179. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/realtime/connection.ts +0 -0
  180. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/realtime/events.ts +0 -0
  181. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/routes/__tests__/paths.test.ts +0 -0
  182. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/routes/paths.ts +0 -0
  183. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/shell/ActivityRail.tsx +0 -0
  184. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/shell/AppShell.tsx +0 -0
  185. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/shell/ComingSoon.tsx +0 -0
  186. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/shell/EmptyDetail.tsx +0 -0
  187. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/shell/RouteNotFound.tsx +0 -0
  188. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/shell/ShellLayout.tsx +0 -0
  189. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/shell/StatusBar.tsx +0 -0
  190. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/shell/__tests__/ShellLayout.test.tsx +0 -0
  191. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/shell/__tests__/shellState.test.ts +0 -0
  192. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/shell/__tests__/stubViewport.ts +0 -0
  193. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/shell/breakpoints.ts +0 -0
  194. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/shell/railItems.ts +0 -0
  195. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/shell/shellState.ts +0 -0
  196. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/shell/useRegionFocus.ts +0 -0
  197. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/test-setup.ts +0 -0
  198. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/src/vite-env.d.ts +0 -0
  199. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/tailwind.config.js +0 -0
  200. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/tsconfig.json +0 -0
  201. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/tsconfig.node.json +0 -0
  202. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dashboard/webapp/vite.config.ts +0 -0
  203. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/db.py +0 -0
  204. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dead_end.py +0 -0
  205. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/README.md +0 -0
  206. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-agent.service +0 -0
  207. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-db-backup.service +0 -0
  208. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-db-backup.sh +0 -0
  209. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-db-backup.timer +0 -0
  210. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-drive-queue.service +0 -0
  211. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-drive-queue.timer +0 -0
  212. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-notify.service +0 -0
  213. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-notify.timer +0 -0
  214. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-release-propagate.service +0 -0
  215. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-release-propagate.timer +0 -0
  216. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-release-window.service +0 -0
  217. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-release-window.timer +0 -0
  218. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-serve.service +0 -0
  219. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-web-dist-build.service +0 -0
  220. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-web-dist-build.timer +0 -0
  221. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy/coord-web.service +0 -0
  222. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy_manifest.py +0 -0
  223. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deploy_units.py +0 -0
  224. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/deps.py +0 -0
  225. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dispatch.py +0 -0
  226. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/dist_name.py +0 -0
  227. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/drive.py +0 -0
  228. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/drive_queue.py +0 -0
  229. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/drive_state.py +0 -0
  230. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/events.py +0 -0
  231. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/failure_class.py +0 -0
  232. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/filelock.py +0 -0
  233. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/fleet_config_health.py +0 -0
  234. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/freshness.py +0 -0
  235. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/gate_a.py +0 -0
  236. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/gate_b.py +0 -0
  237. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/gate_snapshot.py +0 -0
  238. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/gates.py +0 -0
  239. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/goal.py +0 -0
  240. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/graph_health.py +0 -0
  241. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/__init__.py +0 -0
  242. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/aggregate.py +0 -0
  243. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/__init__.py +0 -0
  244. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/agent_install.py +0 -0
  245. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/cargo_targets.py +0 -0
  246. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/claude_binary.py +0 -0
  247. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/deploy_lane_facts.py +0 -0
  248. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/disk.py +0 -0
  249. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/fleet_board.py +0 -0
  250. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  251. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/fleet_phantom.py +0 -0
  252. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/fleet_unit_drift.py +0 -0
  253. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/graph.py +0 -0
  254. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/graphify_cli.py +0 -0
  255. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/index_lock.py +0 -0
  256. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/plan_usage.py +0 -0
  257. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/repo_state.py +0 -0
  258. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/spawned_coord.py +0 -0
  259. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/timer_active.py +0 -0
  260. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/toolchain.py +0 -0
  261. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/unit_drift.py +0 -0
  262. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/unit_enablement.py +0 -0
  263. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/checks/worktrees.py +0 -0
  264. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/cli.py +0 -0
  265. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/context.py +0 -0
  266. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/fleet_snapshot.py +0 -0
  267. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/models.py +0 -0
  268. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/pypi.py +0 -0
  269. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/registry.py +0 -0
  270. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/render.py +0 -0
  271. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/health/units.py +0 -0
  272. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/hooks.py +0 -0
  273. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/housekeeping.py +0 -0
  274. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/interactive.py +0 -0
  275. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/issue_store.py +0 -0
  276. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/liveness_auditor.py +0 -0
  277. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/machine_pause.py +0 -0
  278. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/merge_queue.py +0 -0
  279. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/milestone_chat.py +0 -0
  280. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/milestone_dispatch.py +0 -0
  281. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/milestone_gate.py +0 -0
  282. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/milestone_order.py +0 -0
  283. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/mock_author.py +0 -0
  284. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/models.py +0 -0
  285. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/network.py +0 -0
  286. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/new_issue_chat.py +0 -0
  287. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/notifier/__init__.py +0 -0
  288. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/notifier/baseline.py +0 -0
  289. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/notifier/cli.py +0 -0
  290. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/notifier/collect.py +0 -0
  291. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/notifier/digest.py +0 -0
  292. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/notifier/models.py +0 -0
  293. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/notifier/predicate.py +0 -0
  294. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/notifier/service.py +0 -0
  295. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/notifier/store.py +0 -0
  296. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/notifier/transport.py +0 -0
  297. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/notify.py +0 -0
  298. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/openapi.py +0 -0
  299. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/overlap_fence.py +0 -0
  300. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/overlap_predict.py +0 -0
  301. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/parentage.py +0 -0
  302. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/parentage_github.py +0 -0
  303. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/pipeline.py +0 -0
  304. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/plan_parser.py +0 -0
  305. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/plans.py +0 -0
  306. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/platform_paths.py +0 -0
  307. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/portal_bridge.py +0 -0
  308. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/portal_store.py +0 -0
  309. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/portal_sync.py +0 -0
  310. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/pr_body_lint.py +0 -0
  311. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/prereqs.py +0 -0
  312. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/progress.py +0 -0
  313. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/providers/__init__.py +0 -0
  314. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/providers/base.py +0 -0
  315. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/providers/claude.py +0 -0
  316. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/providers/claude_pty.py +0 -0
  317. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/providers/opencode.py +0 -0
  318. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/queue_diagnose.py +0 -0
  319. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/reconcile.py +0 -0
  320. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/refine_chat.py +0 -0
  321. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/release_cordon.py +0 -0
  322. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/release_propagate.py +0 -0
  323. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/release_verify.py +0 -0
  324. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/release_window.py +0 -0
  325. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/repo_edit.py +0 -0
  326. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/repo_onboard.py +0 -0
  327. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/reports.py +0 -0
  328. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/revalidate.py +0 -0
  329. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/review.py +0 -0
  330. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/scorecard.py +0 -0
  331. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/serve_app.py +0 -0
  332. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/skills/update-issue/SKILL.md +0 -0
  333. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/smoke.py +0 -0
  334. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/spend_ceiling.py +0 -0
  335. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/split_work.py +0 -0
  336. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/stage_projection.py +0 -0
  337. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/state.py +0 -0
  338. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/test_author.py +0 -0
  339. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/test_chat.py +0 -0
  340. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/test_orchestrator.py +0 -0
  341. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/test_report.py +0 -0
  342. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/tui_release.py +0 -0
  343. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/usage.py +0 -0
  344. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/usage_limits.py +0 -0
  345. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/usage_rollup.py +0 -0
  346. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coord/worker_events.py +0 -0
  347. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/coordinator.example.yml +0 -0
  348. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-agent.service +0 -0
  349. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-db-backup.service +0 -0
  350. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-db-backup.sh +0 -0
  351. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-db-backup.timer +0 -0
  352. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-drive-queue.service +0 -0
  353. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-drive-queue.timer +0 -0
  354. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-notify.service +0 -0
  355. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-notify.timer +0 -0
  356. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-release-propagate.service +0 -0
  357. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-release-propagate.timer +0 -0
  358. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-release-window.service +0 -0
  359. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-release-window.timer +0 -0
  360. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-serve.service +0 -0
  361. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-web-dist-build.service +0 -0
  362. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-web-dist-build.sh +0 -0
  363. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-web-dist-build.timer +0 -0
  364. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-web-rollback.sh +0 -0
  365. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/coord-web.service +0 -0
  366. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/deploy/node-shim.sh +0 -0
  367. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/AGENT_OPERATIONS.md +0 -0
  368. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/ARCHITECTURE.md +0 -0
  369. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/ARCH_SECURITY_GATES.md +0 -0
  370. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/COCKPIT.md +0 -0
  371. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/CONTROL_CENTER.md +0 -0
  372. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/COST_DISCIPLINE.md +0 -0
  373. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/CROSS_PLATFORM.md +0 -0
  374. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/CUSTOMER_PORTAL.md +0 -0
  375. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/DRIVE_QUEUE.md +0 -0
  376. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/EPHEMERAL_WORKERS.md +0 -0
  377. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/FORGE_MIGRATION.md +0 -0
  378. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/GRAPHIFY_SETUP.md +0 -0
  379. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/ISSUE_GUIDANCE.md +0 -0
  380. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/MAC_MINI.md +0 -0
  381. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  382. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/NOTIFIER.md +0 -0
  383. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/OPENCODE_VERIFICATION.md +0 -0
  384. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/OPERATING_GOTCHAS.md +0 -0
  385. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/ORACLE_LOOP.md +0 -0
  386. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/PHONE_WEBAPP.md +0 -0
  387. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/PIPELINE_V2.md +0 -0
  388. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/PLATFORM_EVOLUTION.md +0 -0
  389. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/SECOND_BACKEND.md +0 -0
  390. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/STORE_SERVICE.md +0 -0
  391. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  392. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/WEB_CONTROL_CENTER.md +0 -0
  393. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/mocks/web/README.md +0 -0
  394. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/mocks/web/_tokens.css +0 -0
  395. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/mocks/web/issue-detail.html +0 -0
  396. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/mocks/web/pipeline-narrow.html +0 -0
  397. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/docs/mocks/web/pipeline-wide.html +0 -0
  398. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/graphify-out/.gitignore +0 -0
  399. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/install-agent.sh +0 -0
  400. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/pyproject.toml +0 -0
  401. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/audit_review_verdict_overrides.py +0 -0
  402. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  403. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/azure-workers/build-worker-image.sh +0 -0
  404. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/azure-workers/coordinator-machine.py +0 -0
  405. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/azure-workers/epic-down.sh +0 -0
  406. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/azure-workers/epic-up.sh +0 -0
  407. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/azure-workers/preflight.sh +0 -0
  408. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/azure-workers/provision-worker.sh +0 -0
  409. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  410. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  411. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/azure-workers/verify-github-token.sh +0 -0
  412. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/codegen.py +0 -0
  413. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/coord-test-runner.sh +0 -0
  414. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/drive-batch.sh +0 -0
  415. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/gen_board_fixture.py +0 -0
  416. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/next_release_tag.py +0 -0
  417. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/run_tests_in_populated_home.sh +0 -0
  418. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/run_tests_without_gh.sh +0 -0
  419. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/smoke_437_interactive.py +0 -0
  420. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/verify_878_review_capture.py +0 -0
  421. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/verify_release_published.py +0 -0
  422. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/scripts/verify_release_wheel.py +0 -0
  423. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/setup.cfg +0 -0
  424. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/SMOKE_SET.md +0 -0
  425. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/__init__.py +0 -0
  426. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  427. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-33/contract.md +0 -0
  428. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-33/manifest.yml +0 -0
  429. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  430. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  431. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  432. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  433. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-37/conftest.py +0 -0
  434. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-37/contract.md +0 -0
  435. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-37/manifest.yml +0 -0
  436. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  437. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  438. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-38/contract.md +0 -0
  439. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-38/manifest.yml +0 -0
  440. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  441. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  442. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  443. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  444. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  445. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  446. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  447. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  448. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  449. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  450. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-51/contract.md +0 -0
  451. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  452. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  453. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-51/manifest.yml +0 -0
  454. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  455. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-51/tsconfig.json +0 -0
  456. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  457. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/conftest.py +0 -0
  458. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/board-pipeline-basic.json +0 -0
  459. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  460. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  461. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  462. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  463. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/playwright/all_pass.json +0 -0
  464. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  465. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/playwright/mixed_fail.json +0 -0
  466. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  467. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  468. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/playwright/skip.json +0 -0
  469. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/playwright/truncated.json +0 -0
  470. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  471. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  472. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  473. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  474. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  475. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  476. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  477. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  478. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_acceptance.py +0 -0
  479. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_acceptance_drivers.py +0 -0
  480. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent.py +0 -0
  481. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_api_error.py +0 -0
  482. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_app.py +0 -0
  483. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_branch_base.py +0 -0
  484. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_branch_capture.py +0 -0
  485. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_config_free_1712.py +0 -0
  486. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_deploy_units_endpoint.py +0 -0
  487. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_dirty_worktree.py +0 -0
  488. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_graph_self_heal.py +0 -0
  489. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_health_h3.py +0 -0
  490. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_idle_restart.py +0 -0
  491. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_push_failure.py +0 -0
  492. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_reap.py +0 -0
  493. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_repos_and_pull.py +0 -0
  494. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_restart_services_endpoint.py +0 -0
  495. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_startup_diagnostics.py +0 -0
  496. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_update.py +0 -0
  497. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_update_bluegreen.py +0 -0
  498. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_usage_limit.py +0 -0
  499. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_agent_zero_commit.py +0 -0
  500. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_ambient_home_isolation.py +0 -0
  501. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_approve_reject_plan.py +0 -0
  502. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_approve_usage_gate.py +0 -0
  503. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_assignment_already_recorded_daemon.py +0 -0
  504. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_audit_log.py +0 -0
  505. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_audit_outcome.py +0 -0
  506. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_audit_query.py +0 -0
  507. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_auto_loop.py +0 -0
  508. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_auto_release_publish_2035.py +0 -0
  509. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_base_checkout_restore.py +0 -0
  510. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_block_log.py +0 -0
  511. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_board_cap_762.py +0 -0
  512. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_board_fixture.py +0 -0
  513. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_board_read_path.py +0 -0
  514. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_board_service.py +0 -0
  515. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_board_state.py +0 -0
  516. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_board_wire.py +0 -0
  517. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_brain.py +0 -0
  518. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_branch_model.py +0 -0
  519. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_bug_intake.py +0 -0
  520. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_build_worker_image_env_update.py +0 -0
  521. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cargo_cache.py +0 -0
  522. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_ci_acceptance_gate_1950.py +0 -0
  523. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_ci_parity_2091.py +0 -0
  524. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_ci_store.py +0 -0
  525. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_claim.py +0 -0
  526. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_acceptance.py +0 -0
  527. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_assign.py +0 -0
  528. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  529. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_assign_interactive_remote.py +0 -0
  530. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_assign_provider.py +0 -0
  531. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  532. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_audit.py +0 -0
  533. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_chat_continue.py +0 -0
  534. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_diagnose_config_provenance.py +0 -0
  535. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_diagnose_graph.py +0 -0
  536. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_doctor.py +0 -0
  537. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_doctor_config_free_1801.py +0 -0
  538. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  539. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_drive.py +0 -0
  540. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_drive_queue.py +0 -0
  541. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_escalate.py +0 -0
  542. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_fix_headless_review.py +0 -0
  543. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_gate_a.py +0 -0
  544. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_install_drift.py +0 -0
  545. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_install_skills.py +0 -0
  546. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_issue_create_label.py +0 -0
  547. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_issue_reopen.py +0 -0
  548. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_merge.py +0 -0
  549. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_milestone_assign.py +0 -0
  550. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_milestone_capture.py +0 -0
  551. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_milestone_chat_add_child.py +0 -0
  552. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_milestone_dispatch.py +0 -0
  553. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_milestone_gate_b.py +0 -0
  554. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_milestone_gate_c.py +0 -0
  555. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_milestone_order.py +0 -0
  556. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  557. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_milestone_ship.py +0 -0
  558. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_network.py +0 -0
  559. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_new_issue_chat.py +0 -0
  560. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_plans.py +0 -0
  561. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_portal.py +0 -0
  562. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_pull_artifact.py +0 -0
  563. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_queue.py +0 -0
  564. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_reattach_sessions.py +0 -0
  565. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_refine_board.py +0 -0
  566. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_release_preflight.py +0 -0
  567. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_release_propagate.py +0 -0
  568. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_release_window.py +0 -0
  569. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_repo_2220.py +0 -0
  570. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_scorecard.py +0 -0
  571. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_set_review_findings.py +0 -0
  572. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_status_advisory_terminal.py +0 -0
  573. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_status_merge_queue.py +0 -0
  574. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_status_provider.py +0 -0
  575. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_status_review_finalizing.py +0 -0
  576. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_status_test_failed_tag.py +0 -0
  577. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_status_usage_limit.py +0 -0
  578. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_sync_comments_873.py +0 -0
  579. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_test_plan.py +0 -0
  580. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_track.py +0 -0
  581. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_tui_update.py +0 -0
  582. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cli_wait.py +0 -0
  583. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_client_base_install.py +0 -0
  584. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_comments.py +0 -0
  585. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_completion_summary.py +0 -0
  586. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_config.py +0 -0
  587. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_config_acceptance.py +0 -0
  588. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_config_audit.py +0 -0
  589. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_config_pricing.py +0 -0
  590. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  591. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_config_usage_gate.py +0 -0
  592. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_conflict_fix.py +0 -0
  593. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_conflict_fix_semantic.py +0 -0
  594. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_coord_test.py +0 -0
  595. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_coord_test_runner_baseline.py +0 -0
  596. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_coord_test_runner_routing.py +0 -0
  597. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_coord_test_runner_toolchain.py +0 -0
  598. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_coord_web_sse_restart_live.py +0 -0
  599. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_coordinator_machine.py +0 -0
  600. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_cross_platform_imports.py +0 -0
  601. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_dashboard.py +0 -0
  602. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_dashboard_fixture.py +0 -0
  603. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_dashboard_terminal.py +0 -0
  604. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_dashboard_terminal_live.py +0 -0
  605. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_db.py +0 -0
  606. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_dead_end.py +0 -0
  607. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_deploy_coord_db_backup.py +0 -0
  608. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_deploy_coord_web_dist.py +0 -0
  609. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_deploy_coord_web_rollback.py +0 -0
  610. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_deploy_drive_queue_unit.py +0 -0
  611. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_deploy_manifest.py +0 -0
  612. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_deploy_units_lane.py +0 -0
  613. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_deploy_web_unit.py +0 -0
  614. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_deps.py +0 -0
  615. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_dispatch.py +0 -0
  616. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_dispatch_target_validation.py +0 -0
  617. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_dist_name.py +0 -0
  618. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_done_housekeeping.py +0 -0
  619. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_drive.py +0 -0
  620. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_drive_queue.py +0 -0
  621. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_drive_state.py +0 -0
  622. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_drive_tmux.py +0 -0
  623. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_epic_up_capability_detection.py +0 -0
  624. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  625. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_epic_up_image_provenance.py +0 -0
  626. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_errors.py +0 -0
  627. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_events.py +0 -0
  628. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_failure_class.py +0 -0
  629. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_filelock.py +0 -0
  630. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  631. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_fix_of_force_override.py +0 -0
  632. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_fleet_config_health.py +0 -0
  633. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_fleet_health_probes.py +0 -0
  634. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_fleet_health_snapshot.py +0 -0
  635. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_freshness.py +0 -0
  636. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_gate_a.py +0 -0
  637. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_gate_b.py +0 -0
  638. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_gate_snapshot_staleness.py +0 -0
  639. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_gates.py +0 -0
  640. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  641. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_generated_types_fixture.py +0 -0
  642. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_goal.py +0 -0
  643. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_graph_health.py +0 -0
  644. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_graph_selfheal_absent_2237.py +0 -0
  645. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_handoff.py +0 -0
  646. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_health_checks.py +0 -0
  647. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_health_cli.py +0 -0
  648. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_health_cli_graph.py +0 -0
  649. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_health_config.py +0 -0
  650. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_health_context.py +0 -0
  651. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_health_deploy_lane_facts.py +0 -0
  652. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_health_incident_regression.py +0 -0
  653. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_health_pypi.py +0 -0
  654. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_health_registry.py +0 -0
  655. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_health_timer_active.py +0 -0
  656. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_health_toolchain.py +0 -0
  657. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_health_unit_drift.py +0 -0
  658. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_health_unit_enablement.py +0 -0
  659. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_hooks.py +0 -0
  660. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_human_attended_437.py +0 -0
  661. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_init.py +0 -0
  662. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_integration.py +0 -0
  663. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_interactive_briefing_echo.py +0 -0
  664. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_interactive_prefill_state.py +0 -0
  665. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_interactive_session_relaunch.py +0 -0
  666. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_interactive_test_verdict_backstop.py +0 -0
  667. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_interactive_token_attribution.py +0 -0
  668. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_interactive_worktree.py +0 -0
  669. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_issue_store_seam.py +0 -0
  670. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_liveness_auditor.py +0 -0
  671. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_liveness_notify.py +0 -0
  672. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_machine_pause.py +0 -0
  673. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_merge_queue.py +0 -0
  674. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_merge_verify.py +0 -0
  675. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_milestone_chat.py +0 -0
  676. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_milestone_dispatch.py +0 -0
  677. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_milestone_gate.py +0 -0
  678. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_milestone_order.py +0 -0
  679. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_milestone_seam.py +0 -0
  680. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_mock_author.py +0 -0
  681. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_model_tiering.py +0 -0
  682. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_models.py +0 -0
  683. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_models_config_labels.py +0 -0
  684. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_needs_attention.py +0 -0
  685. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_network.py +0 -0
  686. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_new_issue_chat.py +0 -0
  687. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_next_release_tag.py +0 -0
  688. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_no_direct_gh_calls.py +0 -0
  689. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_node_shim.py +0 -0
  690. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_notifier_baseline.py +0 -0
  691. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_notifier_cli.py +0 -0
  692. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_notifier_collect.py +0 -0
  693. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_notifier_config.py +0 -0
  694. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_notifier_drive_seam.py +0 -0
  695. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_notifier_isolation.py +0 -0
  696. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_notifier_predicate.py +0 -0
  697. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_notifier_quiet_hours.py +0 -0
  698. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_notifier_service.py +0 -0
  699. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_notify.py +0 -0
  700. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_notify_drain.py +0 -0
  701. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_openapi.py +0 -0
  702. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_operational_defaults.py +0 -0
  703. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_overlap_fence.py +0 -0
  704. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_overlap_predict.py +0 -0
  705. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_packaged_deploy_units.py +0 -0
  706. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_parentage.py +0 -0
  707. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_paste_landed.py +0 -0
  708. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_pipeline.py +0 -0
  709. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_plan_followup_approve_plan_command.py +0 -0
  710. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_plan_followup_pr_command.py +0 -0
  711. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_plan_followup_review_command.py +0 -0
  712. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_plan_only.py +0 -0
  713. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_plan_parser.py +0 -0
  714. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_platform_paths.py +0 -0
  715. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_portal_bridge.py +0 -0
  716. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_portal_config.py +0 -0
  717. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_portal_sync.py +0 -0
  718. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_pr_body_lint.py +0 -0
  719. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_prereqs.py +0 -0
  720. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_production_db_guard.py +0 -0
  721. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_progress.py +0 -0
  722. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_provider_seam.py +0 -0
  723. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_providers.py +0 -0
  724. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_providers_config_labels.py +0 -0
  725. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_providers_pty.py +0 -0
  726. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_quiet_hours.py +0 -0
  727. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_quiet_hours_store_2146.py +0 -0
  728. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_reap_merged_sessions.py +0 -0
  729. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_reap_stale_interactive_tick.py +0 -0
  730. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_reconcile_branch.py +0 -0
  731. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_reconcile_completions.py +0 -0
  732. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_reconcile_merges.py +0 -0
  733. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_reconcile_no_agent_record.py +0 -0
  734. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_reconcile_usage_limit_done.py +0 -0
  735. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_refine_chat.py +0 -0
  736. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_release_cordon_2101.py +0 -0
  737. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  738. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_release_cordon_deadlock_2240.py +0 -0
  739. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_release_propagate.py +0 -0
  740. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_release_unified_1242.py +0 -0
  741. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_release_verify.py +0 -0
  742. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_release_window.py +0 -0
  743. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_remote_auto_prune.py +0 -0
  744. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_remote_interactive_reaper.py +0 -0
  745. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_repo_edit_2220.py +0 -0
  746. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_repo_graph_fleet_2237.py +0 -0
  747. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_repo_onboard_2220.py +0 -0
  748. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_report_result_push.py +0 -0
  749. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_reports.py +0 -0
  750. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_retry.py +0 -0
  751. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_retry_type_1636.py +0 -0
  752. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_revalidate.py +0 -0
  753. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_review.py +0 -0
  754. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_review_end_review_without_verdict.py +0 -0
  755. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_review_parse_failure_diagnostic.py +0 -0
  756. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_review_reaffirm.py +0 -0
  757. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_review_state.py +0 -0
  758. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_review_verdict_backstop.py +0 -0
  759. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_review_verdict_override_audit.py +0 -0
  760. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_review_verdict_relay.py +0 -0
  761. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_review_zero_commits.py +0 -0
  762. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_scoped_review_wiring.py +0 -0
  763. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_scorecard.py +0 -0
  764. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_serve.py +0 -0
  765. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_serve_app_board_trim.py +0 -0
  766. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_session.py +0 -0
  767. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_slice_issue_attribution.py +0 -0
  768. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_smoke.py +0 -0
  769. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_smoke_live_checkout_restore.py +0 -0
  770. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_smoke_workflow.py +0 -0
  771. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_spend_ceiling.py +0 -0
  772. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_spend_ceiling_coordinator.py +0 -0
  773. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_split.py +0 -0
  774. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_split_work.py +0 -0
  775. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_stage_projection.py +0 -0
  776. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_stalled_pipeline.py +0 -0
  777. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_state.py +0 -0
  778. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_state_review_findings_daemon.py +0 -0
  779. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_status_fleet_footer.py +0 -0
  780. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_stop_1567.py +0 -0
  781. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_stuck.py +0 -0
  782. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_terminal_command.py +0 -0
  783. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_test_author.py +0 -0
  784. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_test_chat.py +0 -0
  785. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_test_orchestrator.py +0 -0
  786. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_test_report.py +0 -0
  787. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_test_verdict_parsing.py +0 -0
  788. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_test_verdict_transcript_floor.py +0 -0
  789. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_thin_client_board_audit.py +0 -0
  790. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_thin_client_config_load_1080.py +0 -0
  791. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_thin_client_daemon_routing_906.py +0 -0
  792. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_tmux_host.py +0 -0
  793. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_tmux_session.py +0 -0
  794. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_transcript_floor.py +0 -0
  795. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_usage.py +0 -0
  796. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_usage_limits.py +0 -0
  797. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_usage_rollup.py +0 -0
  798. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_venv_live_install_2121.py +0 -0
  799. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_version_single_source.py +0 -0
  800. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_watch.py +0 -0
  801. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  802. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_worker_events.py +0 -0
  803. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_worker_image_pin_sync.py +0 -0
  804. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_worker_safety.py +0 -0
  805. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_worker_test_scoping.py +0 -0
  806. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_worktree.py +0 -0
  807. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  808. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/Cargo.lock +0 -0
  809. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/Cargo.toml +0 -0
  810. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/cargo-config-local-quadraui.toml.example +0 -0
  811. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/audit.rs +0 -0
  812. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/chat.rs +0 -0
  813. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/data.rs +0 -0
  814. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/dialogs.rs +0 -0
  815. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/drive.rs +0 -0
  816. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/drive_queue.rs +0 -0
  817. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/escalation.rs +0 -0
  818. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/events.rs +0 -0
  819. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/fixtures.rs +0 -0
  820. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/fleet_health.rs +0 -0
  821. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/fleet_sessions.rs +0 -0
  822. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/fleet_terminals.rs +0 -0
  823. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/format.rs +0 -0
  824. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/milestone_dag.rs +0 -0
  825. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/mod.rs +0 -0
  826. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/msv.rs +0 -0
  827. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/pipeline.rs +0 -0
  828. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/plans.rs +0 -0
  829. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/render.rs +0 -0
  830. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/reports.rs +0 -0
  831. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/sessions.rs +0 -0
  832. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/settings_ui.rs +0 -0
  833. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/sidebar.rs +0 -0
  834. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/terminal.rs +0 -0
  835. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/tests.rs +0 -0
  836. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/types.rs +0 -0
  837. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/app/workspace.rs +0 -0
  838. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/bin/gtk.rs +0 -0
  839. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/commands.rs +0 -0
  840. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/lib.rs +0 -0
  841. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/main.rs +0 -0
  842. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/src/settings.rs +0 -0
  843. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/tests/acceptance.rs +0 -0
  844. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/tests/cli.rs +0 -0
  845. {code_coordinator-0.5.114 → code_coordinator-0.5.115}/tui/tests/fixtures/board_sample.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.114
3
+ Version: 0.5.115
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.114
3
+ Version: 0.5.115
4
4
  Summary: Coordinate Claude Code workers across multiple machines and repos.
5
5
  Author-email: John Donaghy <johnfdonaghy@gmail.com>
6
6
  License-Expression: LicenseRef-FSL-1.1-MIT
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.114",
2
+ "tag": "0.5.115",
3
3
  "distance": 0,
4
- "node": "g3415bd29a5ed645fb1b607710d503c75830b4bfc",
4
+ "node": "g28e36b1a94feb56072af2832c5a0025e5b6ffa90",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-16"
@@ -1873,18 +1873,35 @@ def retry(assignment_id: str, config_path: Path, acknowledge_cost: bool = False)
1873
1873
  # an independent inline copy of the same "branch empty → 0, repo
1874
1874
  # missing → None, else ask GitHub" logic.
1875
1875
  ahead = github_ops.branch_commits_ahead_for_assignment(assignment, cfg)
1876
- if ahead != 0:
1877
- detail = (
1878
- "its commit count could not be confirmed (gh lookup failed)"
1879
- if ahead is None
1880
- else f"{ahead} commit(s) present on its branch"
1876
+ if ahead is None:
1877
+ # #2324: a genuine lookup failure (network error, auth, rate
1878
+ # limit, repo missing) is NOT evidence that commits exist — it's
1879
+ # just an unanswered question. Don't assert the #1357
1880
+ # false-positive shape or point at `--accept-advisory`, which
1881
+ # assumes real commits are sitting on the branch; nothing here
1882
+ # established that. Say the lookup failed and name what to
1883
+ # check instead. (A confirmed 404 on the head branch is handled
1884
+ # above this `is None` check — `branch_commits_ahead_for_assignment`
1885
+ # reads that as 0, not None.)
1886
+ click.echo(
1887
+ f"error: assignment {assignment_id} is 'advisory', and its "
1888
+ "commit count could not be confirmed (gh lookup failed) — "
1889
+ "coord retry only re-dispatches a GENUINE zero-commit "
1890
+ "advisory, and a failed lookup isn't confirmation either "
1891
+ "way. Check `gh api` access and the recorded branch/repo, "
1892
+ "then retry; or inspect by hand: coord log "
1893
+ f"{assignment_id}.",
1894
+ err=True,
1881
1895
  )
1896
+ sys.exit(1)
1897
+ if ahead != 0:
1882
1898
  click.echo(
1883
- f"error: assignment {assignment_id} is 'advisory', and {detail} "
1884
- " coord retry only re-dispatches a GENUINE zero-commit "
1885
- "advisory. This looks like the #1357 false-positive "
1886
- "signature instead; use `coord drive --accept-advisory` to "
1887
- "proceed with the existing commits, or inspect by hand.",
1899
+ f"error: assignment {assignment_id} is 'advisory', and "
1900
+ f"{ahead} commit(s) are present on its branch coord retry "
1901
+ "only re-dispatches a GENUINE zero-commit advisory. This is "
1902
+ "the #1357 false-positive signature instead; use `coord "
1903
+ "drive --accept-advisory` to proceed with the existing "
1904
+ "commits, or inspect by hand.",
1888
1905
  err=True,
1889
1906
  )
1890
1907
  sys.exit(1)
@@ -1069,6 +1069,12 @@ def _work_advisory_commits_ahead(assignment: "Assignment", config: "Config") ->
1069
1069
  zero-commit gate uses) rather than a local git checkout — `coord
1070
1070
  diagnose` runs on the daemon host, which has no guarantee of a local
1071
1071
  clone of every worker's branch.
1072
+
1073
+ #2324: ``None`` here means the lookup genuinely couldn't be confirmed
1074
+ (network/auth/rate-limit/repo-missing) — a head branch GitHub positively
1075
+ 404s, with the base branch still resolving, comes back as ``0`` instead
1076
+ (see :func:`coord.github_ops.branch_commits_ahead`), since a deleted
1077
+ branch is proof nothing was pushed, not an unknown.
1072
1078
  """
1073
1079
  from coord import github_ops # noqa: PLC0415
1074
1080
 
@@ -1775,6 +1775,58 @@ def get_compare_files(repo: str, base: str, head: str) -> list[str] | None:
1775
1775
  return [line for line in (ln.strip() for ln in raw.splitlines()) if line]
1776
1776
 
1777
1777
 
1778
+ def _gh_ref_confirmed_missing(exc: Exception) -> bool:
1779
+ """True when *exc* (raised by ``_gh`` for a ``gh api`` ref/compare call)
1780
+ is GitHub positively saying "no such ref" — a 404 — as opposed to an
1781
+ auth, rate-limit, network, or other transient failure that merely looks
1782
+ like one from the caller's point of view.
1783
+
1784
+ #2324: deliberately narrower than the "http 4" match
1785
+ :func:`branch_exists_on_remote` uses (which folds 401/403/429 in with
1786
+ 404, and fails open elsewhere for that function's own reasons). This is
1787
+ the one call site where conflating "confirmed gone" with "auth/rate-limit
1788
+ blip" would make `coord retry`'s zero-commit gate treat a locked-out
1789
+ ``gh`` as proof a branch was deleted and race ahead re-dispatching real,
1790
+ unconfirmed work — so it checks :func:`_is_transient_error`'s keywords
1791
+ first and only then looks for an explicit "404"/"not found" signal.
1792
+ """
1793
+ if _is_transient_error(exc):
1794
+ return False
1795
+ msg = str(exc).lower()
1796
+ return "404" in msg or "not found" in msg
1797
+
1798
+
1799
+ def _head_branch_confirmed_deleted(repo: str, base: str, branch: str) -> bool:
1800
+ """True when *branch* 404s on *repo* while *base* still resolves.
1801
+
1802
+ #2324: :func:`branch_commits_ahead`'s three-dot compare call 404s
1803
+ identically whether it's the head branch that's gone, the base branch,
1804
+ or something else entirely obscures both — the compare error text alone
1805
+ can't tell them apart. This asks each ref directly (the same
1806
+ ``git/refs/heads`` lookup :func:`branch_exists_on_remote` uses) so a
1807
+ branch that was genuinely deleted — the normal cleanup after a
1808
+ zero-commit worker exit — reads as "confirmed gone" instead of being
1809
+ lumped in with an unrelated failure and reported as unknown.
1810
+
1811
+ Only returns True on the one shape that's actually conclusive: the head
1812
+ ref 404s (via :func:`_gh_ref_confirmed_missing`) *and* the base ref
1813
+ still resolves. Any other combination — head resolves fine, head lookup
1814
+ itself fails inconclusively, or base can't be confirmed either — returns
1815
+ False so the caller keeps its existing fail-closed ``None``.
1816
+ """
1817
+ try:
1818
+ _gh("api", f"repos/{repo}/git/refs/heads/{branch}")
1819
+ return False # head resolves fine; compare failed for some other reason
1820
+ except RuntimeError as exc:
1821
+ if not _gh_ref_confirmed_missing(exc):
1822
+ return False # inconclusive — do not guess
1823
+ try:
1824
+ _gh("api", f"repos/{repo}/git/refs/heads/{base}")
1825
+ except RuntimeError:
1826
+ return False # base itself unconfirmable — don't trust the read
1827
+ return True # head confirmed gone, base confirmed present
1828
+
1829
+
1778
1830
  def branch_commits_ahead(repo: str, base: str, branch: str) -> int | None:
1779
1831
  """Commits *branch* is ahead of *base* on the remote, or ``None``.
1780
1832
 
@@ -1790,6 +1842,16 @@ def branch_commits_ahead(repo: str, base: str, branch: str) -> int | None:
1790
1842
  real reviews. This is the opposite polarity from
1791
1843
  :func:`branch_is_fully_merged`, which returns a plain ``False`` on error
1792
1844
  because *its* fail-safe direction is "keep the PR open".
1845
+
1846
+ #2324 exception: when the compare call fails, a *confirmed* 404 on the
1847
+ head branch while the base branch still resolves
1848
+ (:func:`_head_branch_confirmed_deleted`) returns ``0``, not ``None`` — a
1849
+ head ref that GitHub positively says doesn't exist is the strongest
1850
+ possible evidence nothing was ever pushed to it (a branch carrying
1851
+ commits would still be there). Every other failure shape — the compare
1852
+ call fails for a reason that isn't a confirmed head-branch 404, or the
1853
+ follow-up ref checks themselves are inconclusive — keeps the existing
1854
+ fail-closed ``None``.
1793
1855
  """
1794
1856
  if not branch or not base:
1795
1857
  return None
@@ -1799,6 +1861,8 @@ def branch_commits_ahead(repo: str, base: str, branch: str) -> int | None:
1799
1861
  raw = _gh("api", f"repos/{repo}/compare/{base}...{branch}")
1800
1862
  cmp = json.loads(raw)
1801
1863
  except Exception: # noqa: BLE001 — unknown, not zero
1864
+ if _head_branch_confirmed_deleted(repo, base, branch):
1865
+ return 0
1802
1866
  return None
1803
1867
  if not isinstance(cmp, dict):
1804
1868
  return None
@@ -1832,7 +1896,11 @@ def branch_commits_ahead_for_assignment(assignment: Any, config: Any) -> int | N
1832
1896
  that ``config`` doesn't know about returns ``None`` ("cannot confirm"),
1833
1897
  never a bare 0, matching :func:`branch_commits_ahead`'s own fail-closed
1834
1898
  polarity: an unconfirmable commit count must never be silently read as
1835
- "empty branch, safe to touch".
1899
+ "empty branch, safe to touch" — *except* the one case
1900
+ :func:`branch_commits_ahead` itself carves out (#2324): a recorded
1901
+ branch whose head ref GitHub positively 404s, with the base branch still
1902
+ resolving, comes back as 0 rather than ``None`` — a deleted branch
1903
+ proves nothing was pushed at least as conclusively as a blank one does.
1836
1904
  """
1837
1905
  branch = (getattr(assignment, "branch", None) or "").strip()
1838
1906
  if not branch:
@@ -1651,6 +1651,43 @@ def test_zero_commit_advisory_is_not_reported_healthy(monkeypatch, config) -> No
1651
1651
  assert res.recovered is False
1652
1652
 
1653
1653
 
1654
+ def test_zero_commit_advisory_with_deleted_branch_is_not_reported_healthy(
1655
+ monkeypatch, config
1656
+ ) -> None:
1657
+ """#2324: space-invaders#1's exact shape — a genuine zero-commit
1658
+ advisory whose branch has already been deleted. Unlike the other tests
1659
+ in this section, `_work_advisory_commits_ahead` is deliberately NOT
1660
+ stubbed here — this exercises the real call into
1661
+ `github_ops.branch_commits_ahead_for_assignment`, mocking only `gh`
1662
+ itself, to prove the full chain (not just the diagnose-side branching)
1663
+ reads a confirmed-404 head branch as 0, not None. Before #2324 this
1664
+ reported "could not be confirmed" and steered toward `coord drive
1665
+ --accept-advisory`, which assumes commits exist."""
1666
+ _stub(monkeypatch, session="dead")
1667
+
1668
+ def _gh_dispatch(*args, **kwargs):
1669
+ path = args[1] if len(args) > 1 else ""
1670
+ if path == "repos/acme/api/compare/main...issue-42-deleted":
1671
+ raise RuntimeError("gh: Not Found (HTTP 404)")
1672
+ if path == "repos/acme/api/git/refs/heads/issue-42-deleted":
1673
+ raise RuntimeError("gh: Not Found (HTTP 404)")
1674
+ if path == "repos/acme/api/git/refs/heads/main":
1675
+ return "{}"
1676
+ raise AssertionError(f"unexpected _gh call: {args!r}")
1677
+
1678
+ monkeypatch.setattr("coord.github_ops._gh", _gh_dispatch)
1679
+
1680
+ a = _assign(aid="w-advisory-deleted", status="advisory", branch="issue-42-deleted")
1681
+ board = Board(completed=[a])
1682
+ res = diagnose.diagnose_stage(board, config, "api", 42, "work")
1683
+
1684
+ assert not any("looks healthy" in f for f in res.findings), res.findings
1685
+ assert not any("could not be confirmed" in f for f in res.findings), res.findings
1686
+ assert any("0 commits" in f for f in res.findings), res.findings
1687
+ assert any("coord retry w-advisory-deleted" in f for f in res.findings), res.findings
1688
+ assert res.recovered is False
1689
+
1690
+
1654
1691
  def test_zero_commit_advisory_on_a_plan_row_is_not_reported_healthy(
1655
1692
  monkeypatch, config
1656
1693
  ) -> None:
@@ -1277,6 +1277,167 @@ class TestComputePatchId:
1277
1277
  assert github_ops.compute_patch_id(_unified_diff("hello")) is None
1278
1278
 
1279
1279
 
1280
+ def _gh_ref_dispatch(repo: str, base: str, branch: str, *, head_error=None, base_error=None):
1281
+ """Build a ``_gh`` ``side_effect`` for :func:`branch_commits_ahead`'s
1282
+ #2324 fallback path: the initial ``compare`` call always fails (the
1283
+ caller supplies that via a separate ``side_effect``/``compare_error``),
1284
+ and this answers the two follow-up ``git/refs/heads/<ref>`` lookups —
1285
+ raising *head_error*/*base_error* when given, succeeding otherwise.
1286
+ """
1287
+ head_path = f"repos/{repo}/git/refs/heads/{branch}"
1288
+ base_path = f"repos/{repo}/git/refs/heads/{base}"
1289
+
1290
+ def _dispatch(*args, **kwargs):
1291
+ path = args[1] if len(args) > 1 else ""
1292
+ if path == head_path:
1293
+ if head_error is not None:
1294
+ raise head_error
1295
+ return "{}"
1296
+ if path == base_path:
1297
+ if base_error is not None:
1298
+ raise base_error
1299
+ return "{}"
1300
+ raise AssertionError(f"unexpected _gh call: {args!r}")
1301
+
1302
+ return _dispatch
1303
+
1304
+
1305
+ class TestGhRefConfirmedMissing:
1306
+ """#2324: distinguishes a confirmed 404 (GitHub positively saying a ref
1307
+ doesn't exist) from an auth/rate-limit/network failure that merely
1308
+ looks like one — the exact conflation that made a deleted branch read
1309
+ as "unconfirmed" instead of "confirmed empty"."""
1310
+
1311
+ def test_true_on_explicit_404(self) -> None:
1312
+ assert github_ops._gh_ref_confirmed_missing(
1313
+ RuntimeError("gh api branches: 404 not found")
1314
+ ) is True
1315
+
1316
+ def test_true_on_not_found_message(self) -> None:
1317
+ assert github_ops._gh_ref_confirmed_missing(
1318
+ RuntimeError("gh: Not Found (HTTP 404)")
1319
+ ) is True
1320
+
1321
+ def test_false_on_auth_failure(self) -> None:
1322
+ assert github_ops._gh_ref_confirmed_missing(
1323
+ RuntimeError("gh: HTTP 403: Bad credentials")
1324
+ ) is False
1325
+
1326
+ def test_false_on_rate_limit(self) -> None:
1327
+ assert github_ops._gh_ref_confirmed_missing(
1328
+ RuntimeError("gh: API rate limit exceeded")
1329
+ ) is False
1330
+
1331
+ def test_false_on_network_timeout(self) -> None:
1332
+ assert github_ops._gh_ref_confirmed_missing(
1333
+ RuntimeError("gh: connection timed out")
1334
+ ) is False
1335
+
1336
+
1337
+ class TestBranchCommitsAhead:
1338
+ """#2324: a compare-API failure that turns out to be a *confirmed* 404 on
1339
+ the head branch — with the base branch still resolving — must read as 0
1340
+ commits ahead, not None. A deleted branch is the strongest possible
1341
+ evidence nothing was pushed; treating it as "unconfirmed" steered `coord
1342
+ retry` toward refusing a genuine zero-commit advisory."""
1343
+
1344
+ def test_head_confirmed_deleted_base_resolves_is_zero(self) -> None:
1345
+ repo, base, branch = "acme/api", "main", "issue-1-x"
1346
+
1347
+ def _dispatch(*args, **kwargs):
1348
+ path = args[1] if len(args) > 1 else ""
1349
+ if path == f"repos/{repo}/compare/{base}...{branch}":
1350
+ raise RuntimeError("gh: Not Found (HTTP 404)")
1351
+ return _gh_ref_dispatch(
1352
+ repo, base, branch,
1353
+ head_error=RuntimeError("gh: Not Found (HTTP 404)"),
1354
+ )(*args, **kwargs)
1355
+
1356
+ with patch("coord.github_ops._gh", side_effect=_dispatch):
1357
+ assert github_ops.branch_commits_ahead(repo, base, branch) == 0
1358
+
1359
+ def test_head_resolves_fine_compare_failure_is_none(self) -> None:
1360
+ """The compare call fails for some reason other than the head branch
1361
+ being gone (e.g. a transient blip) — the head ref lookup itself
1362
+ succeeds, so there is nothing to trust. Must stay None."""
1363
+ repo, base, branch = "acme/api", "main", "issue-1-x"
1364
+
1365
+ def _dispatch(*args, **kwargs):
1366
+ path = args[1] if len(args) > 1 else ""
1367
+ if path == f"repos/{repo}/compare/{base}...{branch}":
1368
+ raise RuntimeError("gh: connection timed out")
1369
+ return _gh_ref_dispatch(repo, base, branch)(*args, **kwargs)
1370
+
1371
+ with patch("coord.github_ops._gh", side_effect=_dispatch):
1372
+ assert github_ops.branch_commits_ahead(repo, base, branch) is None
1373
+
1374
+ def test_head_lookup_inconclusive_is_none(self) -> None:
1375
+ """Compare fails, and the head-ref lookup fails too but for a
1376
+ non-404 (auth/network) reason -- not a confirmed deletion, so this
1377
+ must not be guessed as zero."""
1378
+ repo, base, branch = "acme/api", "main", "issue-1-x"
1379
+
1380
+ def _dispatch(*args, **kwargs):
1381
+ path = args[1] if len(args) > 1 else ""
1382
+ if path == f"repos/{repo}/compare/{base}...{branch}":
1383
+ raise RuntimeError("gh: Not Found (HTTP 404)")
1384
+ return _gh_ref_dispatch(
1385
+ repo, base, branch,
1386
+ head_error=RuntimeError("gh: HTTP 403: Bad credentials"),
1387
+ )(*args, **kwargs)
1388
+
1389
+ with patch("coord.github_ops._gh", side_effect=_dispatch):
1390
+ assert github_ops.branch_commits_ahead(repo, base, branch) is None
1391
+
1392
+ def test_head_deleted_but_base_unconfirmable_is_none(self) -> None:
1393
+ """Head 404s, but the base ref itself can't be confirmed (e.g. the
1394
+ whole repo is having an outage) — not the conclusive "head gone,
1395
+ base fine" shape, so this must stay None rather than guess."""
1396
+ repo, base, branch = "acme/api", "main", "issue-1-x"
1397
+
1398
+ def _dispatch(*args, **kwargs):
1399
+ path = args[1] if len(args) > 1 else ""
1400
+ if path == f"repos/{repo}/compare/{base}...{branch}":
1401
+ raise RuntimeError("gh: Not Found (HTTP 404)")
1402
+ return _gh_ref_dispatch(
1403
+ repo, base, branch,
1404
+ head_error=RuntimeError("gh: Not Found (HTTP 404)"),
1405
+ base_error=RuntimeError("gh: connection timed out"),
1406
+ )(*args, **kwargs)
1407
+
1408
+ with patch("coord.github_ops._gh", side_effect=_dispatch):
1409
+ assert github_ops.branch_commits_ahead(repo, base, branch) is None
1410
+
1411
+ def test_head_deleted_base_also_deleted_is_none(self) -> None:
1412
+ """Both refs 404 -- e.g. the whole repo was renamed/deleted -- so
1413
+ there is no confirmed base to compare against. Must not read as
1414
+ zero."""
1415
+ repo, base, branch = "acme/api", "main", "issue-1-x"
1416
+
1417
+ def _dispatch(*args, **kwargs):
1418
+ path = args[1] if len(args) > 1 else ""
1419
+ if path == f"repos/{repo}/compare/{base}...{branch}":
1420
+ raise RuntimeError("gh: Not Found (HTTP 404)")
1421
+ return _gh_ref_dispatch(
1422
+ repo, base, branch,
1423
+ head_error=RuntimeError("gh: Not Found (HTTP 404)"),
1424
+ base_error=RuntimeError("gh: Not Found (HTTP 404)"),
1425
+ )(*args, **kwargs)
1426
+
1427
+ with patch("coord.github_ops._gh", side_effect=_dispatch):
1428
+ assert github_ops.branch_commits_ahead(repo, base, branch) is None
1429
+
1430
+ def test_successful_compare_unaffected(self) -> None:
1431
+ """The happy path (compare succeeds) never touches the new fallback
1432
+ -- unchanged from before #2324."""
1433
+ with patch(
1434
+ "coord.github_ops._gh",
1435
+ return_value=json.dumps({"ahead_by": 3}),
1436
+ ) as gh:
1437
+ assert github_ops.branch_commits_ahead("acme/api", "main", "issue-1-x") == 3
1438
+ gh.assert_called_once()
1439
+
1440
+
1280
1441
  class TestBranchCommitsAheadForAssignment:
1281
1442
  """#1606: the one shared implementation of "branch empty -> 0, repo
1282
1443
  missing -> None, else ask GitHub" — `coord retry`'s advisory gate
@@ -1345,6 +1506,32 @@ class TestBranchCommitsAheadForAssignment:
1345
1506
  result = github_ops.branch_commits_ahead_for_assignment(assignment, config)
1346
1507
  assert result is None
1347
1508
 
1509
+ def test_deleted_head_branch_with_resolving_base_is_zero(self) -> None:
1510
+ """#2324: `coord retry` on space-invaders#1's exact shape — a
1511
+ zero-commit advisory whose branch was already deleted. The compare
1512
+ call 404s because the head branch is gone; the base branch
1513
+ (default_branch) still resolves. That must read as a genuine
1514
+ zero-commit advisory (0), not "could not be confirmed" (None) —
1515
+ the None reading is what steered the operator toward the wrong
1516
+ remedy (`coord drive --accept-advisory`, which assumes commits
1517
+ exist)."""
1518
+ assignment = self._Assignment(branch="issue-1-fix")
1519
+ config = self._Config(self._RepoCfg("acme/api", default_branch="main"))
1520
+
1521
+ def _dispatch(*args, **kwargs):
1522
+ path = args[1] if len(args) > 1 else ""
1523
+ if path == "repos/acme/api/compare/main...issue-1-fix":
1524
+ raise RuntimeError("gh: Not Found (HTTP 404)")
1525
+ if path == "repos/acme/api/git/refs/heads/issue-1-fix":
1526
+ raise RuntimeError("gh: Not Found (HTTP 404)")
1527
+ if path == "repos/acme/api/git/refs/heads/main":
1528
+ return "{}"
1529
+ raise AssertionError(f"unexpected _gh call: {args!r}")
1530
+
1531
+ with patch("coord.github_ops._gh", side_effect=_dispatch):
1532
+ result = github_ops.branch_commits_ahead_for_assignment(assignment, config)
1533
+ assert result == 0
1534
+
1348
1535
 
1349
1536
  class TestGetBranchPatchId:
1350
1537
  """#1475: fetches the three-dot compare diff (no PR required, mirroring
@@ -121,6 +121,15 @@ class TestRetryAcceptsZeroCommitAdvisory:
121
121
  out = output_and_stderr(result)
122
122
  assert result.exit_code == 1
123
123
  assert "could not be confirmed" in out
124
+ # #2324: a genuine lookup failure is not confirmation that commits
125
+ # exist. The message must not assert the #1357 false-positive shape
126
+ # or steer the operator at a remedy (--accept-advisory) that assumes
127
+ # real commits are sitting on the branch — nothing here established
128
+ # that. It should instead say what to check.
129
+ assert "#1357" not in out
130
+ assert "--accept-advisory" not in out
131
+ assert "existing commits" not in out
132
+ assert "coord log 0256c844edfb" in out
124
133
 
125
134
  def test_done_status_is_still_refused(self, valid_config_path: Path) -> None:
126
135
  """Control: only `failed` and `advisory` are retryable — every other