code-coordinator 0.5.533__tar.gz → 0.5.535__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 (911) hide show
  1. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/client.py +69 -11
  5. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/drive_queue.py +52 -2
  6. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/diagnose.py +96 -2
  7. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/state.py +59 -11
  8. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_client.py +122 -0
  9. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_diagnose.py +89 -0
  10. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_drive_queue.py +214 -0
  11. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/.claude/commands/board.md +0 -0
  12. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/.claude/commands/complete-session.md +0 -0
  13. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/.claude/commands/coordinator.md +0 -0
  14. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/.githooks/_lib.sh +0 -0
  15. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/.githooks/post-checkout +0 -0
  16. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/.githooks/post-commit +0 -0
  17. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/.githooks/post-merge +0 -0
  18. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  19. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/.github/coord-ci-acceptance.yml +0 -0
  20. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/.github/workflows/auto-release.yml +0 -0
  21. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/.github/workflows/publish.yml +0 -0
  22. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/.github/workflows/test.yml +0 -0
  23. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/.gitignore +0 -0
  24. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/CLAUDE.md +0 -0
  25. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/GOAL.md +0 -0
  26. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/LICENSE +0 -0
  27. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/MANIFEST.in +0 -0
  28. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/README.md +0 -0
  29. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/code_coordinator.egg-info/SOURCES.txt +0 -0
  30. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/code_coordinator.egg-info/dependency_links.txt +0 -0
  31. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/code_coordinator.egg-info/entry_points.txt +0 -0
  32. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/code_coordinator.egg-info/requires.txt +0 -0
  33. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/code_coordinator.egg-info/scm_file_list.json +0 -0
  34. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/code_coordinator.egg-info/top_level.txt +0 -0
  35. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/__init__.py +0 -0
  36. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/_board_mapping.py +0 -0
  37. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/acceptance.py +0 -0
  38. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/acceptance_drivers.py +0 -0
  39. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/agent.py +0 -0
  40. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/agent_app.py +0 -0
  41. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/agent_update.py +0 -0
  42. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/agents/opencode/.gitignore +0 -0
  43. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/agents/opencode/agents/work.md +0 -0
  44. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/agents/opencode/routing.jsonc +0 -0
  45. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/approved_work.py +0 -0
  46. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/audit.py +0 -0
  47. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/auto_loop.py +0 -0
  48. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/backup.py +0 -0
  49. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/block_log.py +0 -0
  50. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/board_schema.py +0 -0
  51. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/board_service.py +0 -0
  52. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/board_wire.py +0 -0
  53. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/brain.py +0 -0
  54. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/branch_model.py +0 -0
  55. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/bug_intake.py +0 -0
  56. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/cargo_cache.py +0 -0
  57. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/ci_fix.py +0 -0
  58. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/ci_github.py +0 -0
  59. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/ci_gitlab.py +0 -0
  60. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/ci_store.py +0 -0
  61. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/claim.py +0 -0
  62. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/claude_setup_token.py +0 -0
  63. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/cli.py +0 -0
  64. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/codegen.py +0 -0
  65. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/__init__.py +0 -0
  66. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/_common.py +0 -0
  67. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/acceptance.py +0 -0
  68. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/agent_ops.py +0 -0
  69. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/audit.py +0 -0
  70. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/backup.py +0 -0
  71. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/chat.py +0 -0
  72. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/ci.py +0 -0
  73. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/codegen.py +0 -0
  74. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/dispatch.py +0 -0
  75. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/dispatch_workers.py +0 -0
  76. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/dr.py +0 -0
  77. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/drive.py +0 -0
  78. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/gate_a.py +0 -0
  79. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/gates.py +0 -0
  80. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/issues.py +0 -0
  81. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/lifecycle.py +0 -0
  82. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/machine.py +0 -0
  83. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/merge.py +0 -0
  84. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/milestone.py +0 -0
  85. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/plan_followup.py +0 -0
  86. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/plans.py +0 -0
  87. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/portal.py +0 -0
  88. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/pr.py +0 -0
  89. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/release.py +0 -0
  90. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/repo.py +0 -0
  91. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/report.py +0 -0
  92. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/review.py +0 -0
  93. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/scorecard.py +0 -0
  94. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/sessions.py +0 -0
  95. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/setup.py +0 -0
  96. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/status.py +0 -0
  97. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/store_migrate.py +0 -0
  98. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/terminal.py +0 -0
  99. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/test_gate.py +0 -0
  100. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/commands/tui.py +0 -0
  101. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/comments.py +0 -0
  102. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/config.py +0 -0
  103. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/config_reload.py +0 -0
  104. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/confirm_test.py +0 -0
  105. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/conflict_fix.py +0 -0
  106. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/dao.py +0 -0
  107. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/dashboard/__init__.py +0 -0
  108. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/dashboard/fixture.py +0 -0
  109. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/dashboard/index.html +0 -0
  110. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/dashboard/server.py +0 -0
  111. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/dashboard/terminal.py +0 -0
  112. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/db.py +0 -0
  113. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/dead_end.py +0 -0
  114. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/decomposition_chat.py +0 -0
  115. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/README.md +0 -0
  116. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-agent.service +0 -0
  117. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-backup.service +0 -0
  118. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-backup.timer +0 -0
  119. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-db-backup.service +0 -0
  120. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-db-backup.sh +0 -0
  121. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-db-backup.timer +0 -0
  122. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-dr-verify.service +0 -0
  123. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-dr-verify.timer +0 -0
  124. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-drive-queue.service +0 -0
  125. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-drive-queue.timer +0 -0
  126. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-failure-notify.service +0 -0
  127. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-fleet-watchdog.service +0 -0
  128. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  129. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-notify.service +0 -0
  130. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-notify.timer +0 -0
  131. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-release-propagate.service +0 -0
  132. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-release-propagate.timer +0 -0
  133. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-release-window.service +0 -0
  134. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-release-window.timer +0 -0
  135. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-serve.service +0 -0
  136. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-web-dist-build.service +0 -0
  137. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-web-dist-build.timer +0 -0
  138. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy/coord-web.service +0 -0
  139. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy_manifest.py +0 -0
  140. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deploy_units.py +0 -0
  141. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deprecation_telemetry.py +0 -0
  142. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/deps.py +0 -0
  143. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/dispatch.py +0 -0
  144. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/dispatch_liveness.py +0 -0
  145. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/dist_name.py +0 -0
  146. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/dr_promote.py +0 -0
  147. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/dr_verify.py +0 -0
  148. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/drive.py +0 -0
  149. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/drive_queue.py +0 -0
  150. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/drive_sessions_snapshot.py +0 -0
  151. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/drive_state.py +0 -0
  152. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/events.py +0 -0
  153. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/failure_class.py +0 -0
  154. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/failure_classifier.py +0 -0
  155. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/filelock.py +0 -0
  156. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/fleet_config_health.py +0 -0
  157. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/forge_availability.py +0 -0
  158. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/freshness.py +0 -0
  159. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/gate_a.py +0 -0
  160. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/gate_b.py +0 -0
  161. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/gate_snapshot.py +0 -0
  162. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/gates.py +0 -0
  163. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/gen_board_fixture.py +0 -0
  164. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/github_ops.py +0 -0
  165. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/github_throttle.py +0 -0
  166. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/goal.py +0 -0
  167. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/graph_health.py +0 -0
  168. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/__init__.py +0 -0
  169. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/aggregate.py +0 -0
  170. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/__init__.py +0 -0
  171. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/_ci_pin.py +0 -0
  172. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/agent_install.py +0 -0
  173. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/cargo_targets.py +0 -0
  174. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/claude_binary.py +0 -0
  175. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/config_drift.py +0 -0
  176. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  177. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/coord_web_ci_pin.py +0 -0
  178. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/deploy_lane_facts.py +0 -0
  179. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/disk.py +0 -0
  180. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/fleet_board.py +0 -0
  181. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  182. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/fleet_phantom.py +0 -0
  183. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/fleet_unit_drift.py +0 -0
  184. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/graph.py +0 -0
  185. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/graphify_cli.py +0 -0
  186. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/index_lock.py +0 -0
  187. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/issues_sync_staleness.py +0 -0
  188. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/local_machine_identity.py +0 -0
  189. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/plan_usage.py +0 -0
  190. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/pr_churn.py +0 -0
  191. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/release_cordon.py +0 -0
  192. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/repo_state.py +0 -0
  193. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/spawned_coord.py +0 -0
  194. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/stalled_pipeline.py +0 -0
  195. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/timer_active.py +0 -0
  196. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/toolchain.py +0 -0
  197. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/unit_drift.py +0 -0
  198. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/unit_enablement.py +0 -0
  199. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/wedged_drive_queue.py +0 -0
  200. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/checks/worktrees.py +0 -0
  201. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/cli.py +0 -0
  202. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/context.py +0 -0
  203. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/fleet_snapshot.py +0 -0
  204. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/models.py +0 -0
  205. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/pypi.py +0 -0
  206. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/registry.py +0 -0
  207. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/render.py +0 -0
  208. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/health/units.py +0 -0
  209. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/hooks.py +0 -0
  210. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/housekeeping.py +0 -0
  211. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/interactive.py +0 -0
  212. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/invariant_alarms.py +0 -0
  213. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/issue_store.py +0 -0
  214. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/issues_sync_status.py +0 -0
  215. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/liveness_auditor.py +0 -0
  216. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/machine_fault.py +0 -0
  217. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/machine_metrics.py +0 -0
  218. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/machine_onboard.py +0 -0
  219. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/machine_pause.py +0 -0
  220. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/machine_stats.py +0 -0
  221. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/merge_queue.py +0 -0
  222. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/milestone_chat.py +0 -0
  223. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/milestone_dispatch.py +0 -0
  224. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/milestone_gate.py +0 -0
  225. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/milestone_order.py +0 -0
  226. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/mock_author.py +0 -0
  227. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/models.py +0 -0
  228. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/network.py +0 -0
  229. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/new_issue_chat.py +0 -0
  230. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/notifier/__init__.py +0 -0
  231. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/notifier/baseline.py +0 -0
  232. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/notifier/cli.py +0 -0
  233. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/notifier/collect.py +0 -0
  234. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/notifier/digest.py +0 -0
  235. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/notifier/models.py +0 -0
  236. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/notifier/predicate.py +0 -0
  237. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/notifier/service.py +0 -0
  238. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/notifier/store.py +0 -0
  239. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/notifier/transport.py +0 -0
  240. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/notify.py +0 -0
  241. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/openapi.py +0 -0
  242. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/overlap_fence.py +0 -0
  243. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/overlap_predict.py +0 -0
  244. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/parentage.py +0 -0
  245. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/parentage_github.py +0 -0
  246. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/pipeline.py +0 -0
  247. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/plan_parser.py +0 -0
  248. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/plans.py +0 -0
  249. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/platform_paths.py +0 -0
  250. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/portal_bridge.py +0 -0
  251. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/portal_store.py +0 -0
  252. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/portal_sync.py +0 -0
  253. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/pr_body_lint.py +0 -0
  254. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/prereqs.py +0 -0
  255. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/progress.py +0 -0
  256. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/providers/__init__.py +0 -0
  257. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/providers/base.py +0 -0
  258. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/providers/claude.py +0 -0
  259. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/providers/claude_pty.py +0 -0
  260. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/providers/opencode.py +0 -0
  261. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/queue_diagnose.py +0 -0
  262. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/reconcile.py +0 -0
  263. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/reconcile_tick.py +0 -0
  264. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/refine_chat.py +0 -0
  265. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/release_cordon.py +0 -0
  266. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/release_propagate.py +0 -0
  267. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/release_verify.py +0 -0
  268. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/release_window.py +0 -0
  269. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/repo_dormancy.py +0 -0
  270. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/repo_edit.py +0 -0
  271. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/repo_onboard.py +0 -0
  272. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/reports.py +0 -0
  273. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/rest_schema.py +0 -0
  274. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/restart_cmd.py +0 -0
  275. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/revalidate.py +0 -0
  276. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/review.py +0 -0
  277. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/scorecard.py +0 -0
  278. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/self_health.py +0 -0
  279. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/serve_app.py +0 -0
  280. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  281. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  282. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  283. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  284. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  285. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/skills/portal-followup/SKILL.md +0 -0
  286. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/skills/release-now/SKILL.md +0 -0
  287. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  288. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  289. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/skills/update-issue/SKILL.md +0 -0
  290. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/smoke.py +0 -0
  291. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/spend_ceiling.py +0 -0
  292. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/split_work.py +0 -0
  293. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/sql.py +0 -0
  294. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/stage_projection.py +0 -0
  295. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/store_migrate.py +0 -0
  296. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/store_parity.py +0 -0
  297. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/templates/deploy-cloudflare.node.yml +0 -0
  298. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/test_author.py +0 -0
  299. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/test_chat.py +0 -0
  300. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/test_orchestrator.py +0 -0
  301. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/test_report.py +0 -0
  302. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/tui_release.py +0 -0
  303. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/uat_checks.py +0 -0
  304. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/usage.py +0 -0
  305. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/usage_limits.py +0 -0
  306. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/usage_rollup.py +0 -0
  307. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coord/worker_events.py +0 -0
  308. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/coordinator.example.yml +0 -0
  309. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-agent.service +0 -0
  310. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-backup.service +0 -0
  311. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-backup.timer +0 -0
  312. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-db-backup.service +0 -0
  313. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-db-backup.sh +0 -0
  314. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-db-backup.timer +0 -0
  315. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-dr-verify.service +0 -0
  316. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-dr-verify.timer +0 -0
  317. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-drive-queue.service +0 -0
  318. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-drive-queue.timer +0 -0
  319. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-failure-notify.service +0 -0
  320. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-failure-notify.sh +0 -0
  321. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-fleet-watchdog.service +0 -0
  322. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-fleet-watchdog.timer +0 -0
  323. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-notify.service +0 -0
  324. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-notify.timer +0 -0
  325. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-release-propagate.service +0 -0
  326. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-release-propagate.timer +0 -0
  327. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-release-window.service +0 -0
  328. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-release-window.timer +0 -0
  329. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-serve.service +0 -0
  330. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-web-dist-build.service +0 -0
  331. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-web-dist-build.sh +0 -0
  332. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-web-dist-build.timer +0 -0
  333. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-web-rollback.sh +0 -0
  334. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/coord-web.service +0 -0
  335. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/deploy/node-shim.sh +0 -0
  336. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/ADR_COORD_TUI_CI.md +0 -0
  337. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  338. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/ADR_COORD_WEB_CI.md +0 -0
  339. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/ADR_COORD_WEB_DIST.md +0 -0
  340. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  341. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/AGENT_OPERATIONS.md +0 -0
  342. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/ARCHITECTURE.md +0 -0
  343. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/ARCH_SECURITY_GATES.md +0 -0
  344. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/COCKPIT.md +0 -0
  345. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/CONTROL_CENTER.md +0 -0
  346. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/COST_DISCIPLINE.md +0 -0
  347. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/CROSS_PLATFORM.md +0 -0
  348. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/CUSTOMER_FACING_APPS.md +0 -0
  349. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/CUSTOMER_PORTAL.md +0 -0
  350. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/DATA_STORE_SELECTION.md +0 -0
  351. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/DISASTER_RECOVERY.md +0 -0
  352. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/DRIVE_QUEUE.md +0 -0
  353. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/EPHEMERAL_WORKERS.md +0 -0
  354. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/FORGE_MIGRATION.md +0 -0
  355. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/GRAPHIFY_SETUP.md +0 -0
  356. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/ISSUE_GUIDANCE.md +0 -0
  357. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/MAC_MINI.md +0 -0
  358. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  359. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/NOTIFIER.md +0 -0
  360. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/OPENCODE_VERIFICATION.md +0 -0
  361. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/OPERATING_GOTCHAS.md +0 -0
  362. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/OPERATOR_GUIDES.md +0 -0
  363. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/ORACLE_LOOP.md +0 -0
  364. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/PHONE_WEBAPP.md +0 -0
  365. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/PIPELINE_V2.md +0 -0
  366. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/PLATFORM_EVOLUTION.md +0 -0
  367. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/SECOND_BACKEND.md +0 -0
  368. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/STORE_SERVICE.md +0 -0
  369. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  370. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/WEB_CONTROL_CENTER.md +0 -0
  371. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/WSL_WINDOWS_WORKER.md +0 -0
  372. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/mocks/web/README.md +0 -0
  373. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/mocks/web/_tokens.css +0 -0
  374. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/mocks/web/issue-detail.html +0 -0
  375. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/mocks/web/pipeline-narrow.html +0 -0
  376. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/docs/mocks/web/pipeline-wide.html +0 -0
  377. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/graphify-out/.gitignore +0 -0
  378. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/install-agent.sh +0 -0
  379. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/pyproject.toml +0 -0
  380. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/audit_review_verdict_overrides.py +0 -0
  381. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  382. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/azure-workers/build-worker-image.sh +0 -0
  383. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/azure-workers/coordinator-machine.py +0 -0
  384. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/azure-workers/dr-down.sh +0 -0
  385. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/azure-workers/dr-up.sh +0 -0
  386. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/azure-workers/epic-down.sh +0 -0
  387. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/azure-workers/epic-up.sh +0 -0
  388. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/azure-workers/preflight.sh +0 -0
  389. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/azure-workers/provision-server.sh +0 -0
  390. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/azure-workers/provision-worker.sh +0 -0
  391. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  392. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  393. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/azure-workers/throwaway-vm.sh +0 -0
  394. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/azure-workers/verify-github-token.sh +0 -0
  395. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/check_gh_argv_containment.py +0 -0
  396. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/codegen.py +0 -0
  397. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/coord-test-runner.sh +0 -0
  398. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  399. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  400. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  401. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  402. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/coord-venv-rollback.sh +0 -0
  403. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/drive-batch.sh +0 -0
  404. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/extract-coord-tui.sh +0 -0
  405. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/fleet_watchdog.py +0 -0
  406. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/gen_board_fixture.py +0 -0
  407. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/gen_mock_index.py +0 -0
  408. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/lib/provision-core.sh +0 -0
  409. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/next_release_tag.py +0 -0
  410. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/provision-machine.sh +0 -0
  411. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/run_tests_in_populated_home.sh +0 -0
  412. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/run_tests_without_gh.sh +0 -0
  413. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/setup-macmini.sh +0 -0
  414. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/smoke_437_interactive.py +0 -0
  415. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/verify-provision-noble.sh +0 -0
  416. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/verify_878_review_capture.py +0 -0
  417. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/verify_release_published.py +0 -0
  418. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/scripts/verify_release_wheel.py +0 -0
  419. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/setup.cfg +0 -0
  420. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/SMOKE_SET.md +0 -0
  421. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/__init__.py +0 -0
  422. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/acceptance/ms-37/conftest.py +0 -0
  423. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/acceptance/ms-37/contract.md +0 -0
  424. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/acceptance/ms-37/manifest.yml +0 -0
  425. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  426. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  427. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/acceptance/ms-51/contract.md +0 -0
  428. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  429. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  430. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/acceptance/ms-51/manifest.yml +0 -0
  431. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  432. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/acceptance/ms-51/tsconfig.json +0 -0
  433. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  434. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/backends.py +0 -0
  435. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/conftest.py +0 -0
  436. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/board-pipeline-basic.json +0 -0
  437. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  438. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  439. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  440. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  441. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/playwright/all_pass.json +0 -0
  442. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  443. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/playwright/mixed_fail.json +0 -0
  444. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  445. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  446. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/playwright/skip.json +0 -0
  447. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/playwright/truncated.json +0 -0
  448. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  449. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  450. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  451. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  452. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
  453. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  454. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  455. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  456. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  457. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_acceptance.py +0 -0
  458. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_acceptance_drivers.py +0 -0
  459. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent.py +0 -0
  460. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_api_error.py +0 -0
  461. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_app.py +0 -0
  462. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_branch_base.py +0 -0
  463. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_branch_capture.py +0 -0
  464. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_config_free_1712.py +0 -0
  465. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_deploy_units_endpoint.py +0 -0
  466. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_dirty_worktree.py +0 -0
  467. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  468. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_graph_self_heal.py +0 -0
  469. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_health_h3.py +0 -0
  470. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_idle_restart.py +0 -0
  471. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_push_failure.py +0 -0
  472. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_reap.py +0 -0
  473. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_repos_and_pull.py +0 -0
  474. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_restart_services_endpoint.py +0 -0
  475. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_skills_self_heal.py +0 -0
  476. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_startup_diagnostics.py +0 -0
  477. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_update.py +0 -0
  478. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_update_bluegreen.py +0 -0
  479. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_usage_limit.py +0 -0
  480. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_agent_zero_commit.py +0 -0
  481. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_ambient_home_isolation.py +0 -0
  482. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_approve_capability_reroute_3241.py +0 -0
  483. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_approve_dependency_busy_2804.py +0 -0
  484. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_approve_reject_plan.py +0 -0
  485. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_approve_usage_gate.py +0 -0
  486. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_approved_work_2532.py +0 -0
  487. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_approved_work_2996.py +0 -0
  488. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_assignment_already_recorded_daemon.py +0 -0
  489. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_audit_log.py +0 -0
  490. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_audit_outcome.py +0 -0
  491. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_audit_query.py +0 -0
  492. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_auto_loop.py +0 -0
  493. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_auto_release_publish_2035.py +0 -0
  494. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_backend_selection.py +0 -0
  495. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_backup.py +0 -0
  496. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_base_checkout_restore.py +0 -0
  497. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_block_log.py +0 -0
  498. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_board_cap_762.py +0 -0
  499. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_board_fixture.py +0 -0
  500. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_board_read_path.py +0 -0
  501. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_board_schema.py +0 -0
  502. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_board_service.py +0 -0
  503. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_board_state.py +0 -0
  504. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_board_wire.py +0 -0
  505. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_brain.py +0 -0
  506. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_branch_model.py +0 -0
  507. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_bug_intake.py +0 -0
  508. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_build_worker_image_env_update.py +0 -0
  509. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cargo_cache.py +0 -0
  510. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_check_gh_argv_containment.py +0 -0
  511. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_ci_acceptance_gate_1950.py +0 -0
  512. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_ci_fix.py +0 -0
  513. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_ci_github.py +0 -0
  514. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_ci_gitlab.py +0 -0
  515. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_ci_parity_2091.py +0 -0
  516. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_ci_store.py +0 -0
  517. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_claim.py +0 -0
  518. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_claude_md_budget.py +0 -0
  519. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_claude_setup_token.py +0 -0
  520. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_acceptance.py +0 -0
  521. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_assign.py +0 -0
  522. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  523. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_assign_interactive_remote.py +0 -0
  524. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_assign_provider.py +0 -0
  525. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  526. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_audit.py +0 -0
  527. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_chat_continue.py +0 -0
  528. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_ci.py +0 -0
  529. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_codegen.py +0 -0
  530. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_decide.py +0 -0
  531. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_diagnose_capability_rules.py +0 -0
  532. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_diagnose_config_provenance.py +0 -0
  533. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_diagnose_forge_availability.py +0 -0
  534. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_diagnose_graph.py +0 -0
  535. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_diagnose_self.py +0 -0
  536. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_diagnose_test_coverage.py +0 -0
  537. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_doctor.py +0 -0
  538. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_doctor_config_free_1801.py +0 -0
  539. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  540. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  541. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_drive.py +0 -0
  542. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_drive_queue.py +0 -0
  543. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_escalate.py +0 -0
  544. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_fix_headless_review.py +0 -0
  545. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_gate_a.py +0 -0
  546. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_install_drift.py +0 -0
  547. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_install_skills.py +0 -0
  548. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_issue_comment.py +0 -0
  549. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_issue_create_label.py +0 -0
  550. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_issue_reopen.py +0 -0
  551. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_issue_view_list.py +0 -0
  552. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_issues.py +0 -0
  553. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_merge.py +0 -0
  554. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_milestone_assign.py +0 -0
  555. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_milestone_capture.py +0 -0
  556. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_milestone_chat_add_child.py +0 -0
  557. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_milestone_dispatch.py +0 -0
  558. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_milestone_gate_b.py +0 -0
  559. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_milestone_gate_c.py +0 -0
  560. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_milestone_order.py +0 -0
  561. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  562. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_milestone_ship.py +0 -0
  563. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_network.py +0 -0
  564. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_new_issue_chat.py +0 -0
  565. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_plans.py +0 -0
  566. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_portal.py +0 -0
  567. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_pr.py +0 -0
  568. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_pull_artifact.py +0 -0
  569. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_queue.py +0 -0
  570. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_reattach_sessions.py +0 -0
  571. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_refine_board.py +0 -0
  572. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_release_preflight.py +0 -0
  573. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_release_propagate.py +0 -0
  574. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_release_window.py +0 -0
  575. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_repo_2220.py +0 -0
  576. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  577. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_scorecard.py +0 -0
  578. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_serve_store_backend_3084.py +0 -0
  579. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_set_review_findings.py +0 -0
  580. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_status_advisory_terminal.py +0 -0
  581. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_status_contested_tag.py +0 -0
  582. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_status_invariant_alarms.py +0 -0
  583. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_status_machine_fault.py +0 -0
  584. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_status_merge_queue.py +0 -0
  585. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_status_provider.py +0 -0
  586. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_status_retried_3340.py +0 -0
  587. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_status_review_finalizing.py +0 -0
  588. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_status_supervisor_3366.py +0 -0
  589. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_status_test_failed_tag.py +0 -0
  590. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_status_usage_limit.py +0 -0
  591. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_sync_comments_873.py +0 -0
  592. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_test_plan.py +0 -0
  593. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_track.py +0 -0
  594. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_tui_update.py +0 -0
  595. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cli_wait.py +0 -0
  596. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_client_base_install.py +0 -0
  597. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_client_config_cache_atomic_3052.py +0 -0
  598. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_client_resource_migration_1946.py +0 -0
  599. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_commands_common.py +0 -0
  600. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_comments.py +0 -0
  601. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_completion_summary.py +0 -0
  602. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_config.py +0 -0
  603. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_config_acceptance.py +0 -0
  604. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_config_audit.py +0 -0
  605. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_config_drift_check.py +0 -0
  606. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_config_effective.py +0 -0
  607. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_config_pricing.py +0 -0
  608. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  609. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_config_usage_gate.py +0 -0
  610. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_confirm_test.py +0 -0
  611. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_conflict_fix.py +0 -0
  612. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_conflict_fix_semantic.py +0 -0
  613. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  614. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_coord_test.py +0 -0
  615. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  616. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_coord_test_runner_baseline.py +0 -0
  617. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_coord_test_runner_populated_home.py +0 -0
  618. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_coord_test_runner_routing.py +0 -0
  619. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_coord_test_runner_toolchain.py +0 -0
  620. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_coord_uat.py +0 -0
  621. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_coord_web_sse_restart_live.py +0 -0
  622. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_coordinator_machine.py +0 -0
  623. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_cross_platform_imports.py +0 -0
  624. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dao.py +0 -0
  625. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dashboard.py +0 -0
  626. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dashboard_api.py +0 -0
  627. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dashboard_fixture.py +0 -0
  628. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dashboard_server.py +0 -0
  629. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dashboard_terminal.py +0 -0
  630. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dashboard_terminal_live.py +0 -0
  631. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_db.py +0 -0
  632. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dead_end.py +0 -0
  633. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_decomposition_chat.py +0 -0
  634. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_deploy_coord_db_backup.py +0 -0
  635. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_deploy_coord_web_dist.py +0 -0
  636. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_deploy_coord_web_rollback.py +0 -0
  637. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_deploy_db_backup_unit.py +0 -0
  638. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_deploy_drive_queue_unit.py +0 -0
  639. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_deploy_failure_notify_unit.py +0 -0
  640. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_deploy_manifest.py +0 -0
  641. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_deploy_notify_unit.py +0 -0
  642. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_deploy_units_lane.py +0 -0
  643. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_deploy_web_unit.py +0 -0
  644. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_deprecation_telemetry.py +0 -0
  645. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_deps.py +0 -0
  646. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dispatch.py +0 -0
  647. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dispatch_liveness.py +0 -0
  648. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dispatch_target_validation.py +0 -0
  649. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dispatch_workers.py +0 -0
  650. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dist_name.py +0 -0
  651. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_done_housekeeping.py +0 -0
  652. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dr_azure_scripts.py +0 -0
  653. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dr_promote.py +0 -0
  654. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_dr_verify.py +0 -0
  655. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_drive.py +0 -0
  656. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_drive_machine_fault.py +0 -0
  657. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_drive_queue_blocked_rendering.py +0 -0
  658. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_drive_queue_launch_argv.py +0 -0
  659. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_drive_queue_max_parallel_config.py +0 -0
  660. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  661. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_drive_queue_roll_pending.py +0 -0
  662. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  663. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_drive_sessions_snapshot.py +0 -0
  664. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_drive_state.py +0 -0
  665. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_drive_tmux.py +0 -0
  666. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_epic_up_capability_detection.py +0 -0
  667. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  668. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_epic_up_image_provenance.py +0 -0
  669. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_errors.py +0 -0
  670. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_events.py +0 -0
  671. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_failure_class.py +0 -0
  672. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_failure_classifier.py +0 -0
  673. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_filelock.py +0 -0
  674. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  675. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_fix_escalation_classifier.py +0 -0
  676. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_fix_of_force_override.py +0 -0
  677. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_fleet_config_health.py +0 -0
  678. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_fleet_health_probes.py +0 -0
  679. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_fleet_health_snapshot.py +0 -0
  680. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_fleet_watchdog.py +0 -0
  681. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_forge_availability.py +0 -0
  682. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_freshness.py +0 -0
  683. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_gate_a.py +0 -0
  684. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_gate_b.py +0 -0
  685. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_gate_snapshot_staleness.py +0 -0
  686. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_gates.py +0 -0
  687. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  688. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_gen_mock_index.py +0 -0
  689. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_generated_rust_fixture.py +0 -0
  690. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_generated_rust_requests.py +0 -0
  691. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_generated_types_fixture.py +0 -0
  692. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_github_ops.py +0 -0
  693. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_github_throttle.py +0 -0
  694. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_goal.py +0 -0
  695. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_graph_health.py +0 -0
  696. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_graph_selfheal_absent_2237.py +0 -0
  697. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_handoff.py +0 -0
  698. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_checks.py +0 -0
  699. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_cli.py +0 -0
  700. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_cli_graph.py +0 -0
  701. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_config.py +0 -0
  702. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_context.py +0 -0
  703. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_coord_tui_ci_pin.py +0 -0
  704. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_coord_web_ci_pin.py +0 -0
  705. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_deploy_lane_facts.py +0 -0
  706. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_fix.py +0 -0
  707. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_incident_regression.py +0 -0
  708. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_issues_sync_staleness.py +0 -0
  709. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_pr_churn.py +0 -0
  710. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_pypi.py +0 -0
  711. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_registry.py +0 -0
  712. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_release_cordon_probe.py +0 -0
  713. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_timer_active.py +0 -0
  714. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_toolchain.py +0 -0
  715. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_unit_drift.py +0 -0
  716. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_unit_enablement.py +0 -0
  717. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_health_wedged_drive_queue.py +0 -0
  718. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_hooks.py +0 -0
  719. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_housekeeping.py +0 -0
  720. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_human_attended_437.py +0 -0
  721. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_init.py +0 -0
  722. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_install_agent_venv_2911.py +0 -0
  723. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_integration.py +0 -0
  724. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_interactive.py +0 -0
  725. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_interactive_briefing_echo.py +0 -0
  726. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_interactive_pane_log_2541.py +0 -0
  727. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_interactive_prefill_state.py +0 -0
  728. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_interactive_session_relaunch.py +0 -0
  729. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_interactive_test_verdict_backstop.py +0 -0
  730. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_interactive_token_attribution.py +0 -0
  731. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_interactive_worktree.py +0 -0
  732. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_invariant_alarms.py +0 -0
  733. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_issue_store_seam.py +0 -0
  734. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_issues_sync_status.py +0 -0
  735. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_liveness_auditor.py +0 -0
  736. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_liveness_notify.py +0 -0
  737. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_lock_contention_ratchet.py +0 -0
  738. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_machine_fault.py +0 -0
  739. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_machine_metrics.py +0 -0
  740. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_machine_onboard.py +0 -0
  741. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_machine_pause.py +0 -0
  742. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_machine_stats.py +0 -0
  743. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_merge_queue.py +0 -0
  744. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_merge_verify.py +0 -0
  745. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_milestone_chat.py +0 -0
  746. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_milestone_dispatch.py +0 -0
  747. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_milestone_gate.py +0 -0
  748. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_milestone_order.py +0 -0
  749. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_milestone_seam.py +0 -0
  750. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_mock_author.py +0 -0
  751. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_model_tiering.py +0 -0
  752. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_models.py +0 -0
  753. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_models_config_labels.py +0 -0
  754. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_needs_attention.py +0 -0
  755. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_network.py +0 -0
  756. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_new_issue_chat.py +0 -0
  757. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_next_release_tag.py +0 -0
  758. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_node_shim.py +0 -0
  759. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_notifier_baseline.py +0 -0
  760. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_notifier_cli.py +0 -0
  761. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_notifier_collect.py +0 -0
  762. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_notifier_config.py +0 -0
  763. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_notifier_drive_seam.py +0 -0
  764. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_notifier_isolation.py +0 -0
  765. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_notifier_predicate.py +0 -0
  766. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_notifier_quiet_hours.py +0 -0
  767. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_notifier_service.py +0 -0
  768. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_notify.py +0 -0
  769. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_notify_drain.py +0 -0
  770. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_openapi.py +0 -0
  771. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_operational_defaults.py +0 -0
  772. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_overlap_fence.py +0 -0
  773. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_overlap_predict.py +0 -0
  774. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_packaged_deploy_units.py +0 -0
  775. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_parentage.py +0 -0
  776. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_paste_landed.py +0 -0
  777. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  778. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_pipeline.py +0 -0
  779. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_plan_followup_approve_plan_command.py +0 -0
  780. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_plan_followup_pr_command.py +0 -0
  781. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_plan_followup_review_command.py +0 -0
  782. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_plan_only.py +0 -0
  783. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_plan_parser.py +0 -0
  784. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_platform_paths.py +0 -0
  785. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_portal_bridge.py +0 -0
  786. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_portal_config.py +0 -0
  787. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_portal_store.py +0 -0
  788. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_portal_sync.py +0 -0
  789. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_pr_body_lint.py +0 -0
  790. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_prereqs.py +0 -0
  791. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_production_db_guard.py +0 -0
  792. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_progress.py +0 -0
  793. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_provider_seam.py +0 -0
  794. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_providers.py +0 -0
  795. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_providers_config_labels.py +0 -0
  796. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_providers_pty.py +0 -0
  797. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_provision_core.py +0 -0
  798. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_provision_machine.py +0 -0
  799. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_py_rust_mirror_inventory.py +0 -0
  800. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_quiet_hours.py +0 -0
  801. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_quiet_hours_store_2146.py +0 -0
  802. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_reap_merged_sessions.py +0 -0
  803. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_reap_stale_interactive_tick.py +0 -0
  804. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_reconcile.py +0 -0
  805. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_reconcile_branch.py +0 -0
  806. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_reconcile_completions.py +0 -0
  807. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  808. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_reconcile_merges.py +0 -0
  809. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_reconcile_no_agent_record.py +0 -0
  810. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_reconcile_tick.py +0 -0
  811. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_reconcile_usage_limit_done.py +0 -0
  812. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_refine_chat.py +0 -0
  813. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_release_cordon_2101.py +0 -0
  814. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  815. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_release_cordon_deadlock_2240.py +0 -0
  816. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  817. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_release_cordon_stuck_2490.py +0 -0
  818. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_release_propagate.py +0 -0
  819. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_release_propagate_threshold.py +0 -0
  820. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_release_roll_between_legs_2854.py +0 -0
  821. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_release_roll_window_handoff.py +0 -0
  822. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_release_unified_1242.py +0 -0
  823. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_release_verify.py +0 -0
  824. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_release_window.py +0 -0
  825. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_remote_auto_prune.py +0 -0
  826. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_remote_interactive_reaper.py +0 -0
  827. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_repo_add.py +0 -0
  828. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_repo_dormancy.py +0 -0
  829. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_repo_edit_2220.py +0 -0
  830. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_repo_graph_fleet_2237.py +0 -0
  831. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_repo_max_parallel_3423.py +0 -0
  832. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_repo_onboard_2220.py +0 -0
  833. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_report_result_push.py +0 -0
  834. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_reports.py +0 -0
  835. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_restart_cmd.py +0 -0
  836. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_retry.py +0 -0
  837. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_retry_advisory_1606.py +0 -0
  838. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_retry_escalation_classify_3360.py +0 -0
  839. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_retry_type_1636.py +0 -0
  840. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_revalidate.py +0 -0
  841. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_review.py +0 -0
  842. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_review_end_review_without_verdict.py +0 -0
  843. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_review_parse_failure_diagnostic.py +0 -0
  844. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_review_reaffirm.py +0 -0
  845. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_review_state.py +0 -0
  846. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_review_verdict_backstop.py +0 -0
  847. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_review_verdict_override_audit.py +0 -0
  848. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_review_verdict_relay.py +0 -0
  849. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_review_zero_commits.py +0 -0
  850. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_scoped_review_wiring.py +0 -0
  851. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_scorecard.py +0 -0
  852. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_self_health.py +0 -0
  853. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_serve.py +0 -0
  854. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_serve_app.py +0 -0
  855. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_serve_app_board_trim.py +0 -0
  856. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_serve_rest_routes.py +0 -0
  857. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_session.py +0 -0
  858. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_slice_issue_attribution.py +0 -0
  859. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_smoke.py +0 -0
  860. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  861. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_smoke_live_checkout_restore.py +0 -0
  862. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_smoke_workflow.py +0 -0
  863. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_spend_ceiling.py +0 -0
  864. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_spend_ceiling_coordinator.py +0 -0
  865. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_split.py +0 -0
  866. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_split_work.py +0 -0
  867. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_sql_dialect.py +0 -0
  868. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_sqlite_connect_ratchet.py +0 -0
  869. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_stage_projection.py +0 -0
  870. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_stale_busy_reviewer_697.py +0 -0
  871. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_stalled_pipeline.py +0 -0
  872. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_state.py +0 -0
  873. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_state_review_findings_daemon.py +0 -0
  874. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_status_fleet_footer.py +0 -0
  875. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_stop_1567.py +0 -0
  876. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_store_contract.py +0 -0
  877. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_store_migrate.py +0 -0
  878. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_stuck.py +0 -0
  879. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  880. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_terminal_command.py +0 -0
  881. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_test_author.py +0 -0
  882. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_test_chat.py +0 -0
  883. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_test_orchestrator.py +0 -0
  884. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_test_report.py +0 -0
  885. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_test_verdict_parsing.py +0 -0
  886. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_test_verdict_transcript_floor.py +0 -0
  887. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_text_io_encoding_audit.py +0 -0
  888. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_thin_client_board_audit.py +0 -0
  889. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_thin_client_config_load_1080.py +0 -0
  890. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_thin_client_daemon_routing_906.py +0 -0
  891. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_throwaway_vm.py +0 -0
  892. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_tmux_host.py +0 -0
  893. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_tmux_session.py +0 -0
  894. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_transcript_floor.py +0 -0
  895. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_uat_checks.py +0 -0
  896. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_usage.py +0 -0
  897. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_usage_limits.py +0 -0
  898. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_usage_rollup.py +0 -0
  899. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_venv_live_install_2121.py +0 -0
  900. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_version_single_source.py +0 -0
  901. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_watch.py +0 -0
  902. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  903. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_worker_env_venv_isolation.py +0 -0
  904. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_worker_events.py +0 -0
  905. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_worker_image_pin_sync.py +0 -0
  906. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_worker_safety.py +0 -0
  907. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_worker_test_scoping.py +0 -0
  908. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_worktree.py +0 -0
  909. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  910. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/test_write_parity.py +0 -0
  911. {code_coordinator-0.5.533 → code_coordinator-0.5.535}/tests/write_parity.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.533
3
+ Version: 0.5.535
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.533
3
+ Version: 0.5.535
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.533",
2
+ "tag": "0.5.535",
3
3
  "distance": 0,
4
- "node": "g3ea458dbd41140d5bf4dca2f931046590f1b3fb0",
4
+ "node": "gb4633aa4d9fe33c39961caa7723f8214fa8b67d0",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-09-30"
@@ -763,18 +763,44 @@ def fetch_drive_escalations(
763
763
  return entries if isinstance(entries, list) else []
764
764
 
765
765
 
766
- def fetch_drive_queue(
766
+ @dataclass(frozen=True)
767
+ class DriveQueueRead:
768
+ """Result of one drive-queue read attempt (#2992).
769
+
770
+ Distinguishes "the daemon could not be read" from "the daemon answered
771
+ and the queue is genuinely empty" — a distinction :func:`fetch_drive_queue`
772
+ itself collapses on purpose (see its docstring), because most callers only
773
+ want best-effort rows. ``coord drive-queue list`` is the one caller that
774
+ must NOT collapse it: reporting "queue is empty" for a daemon that never
775
+ actually answered is exactly the false "nothing to see here" #2992 was
776
+ filed over.
777
+
778
+ ``ok=True`` — the daemon answered; ``entries`` is the real list, ``[]``
779
+ included for a genuinely drained queue.
780
+ ``ok=False`` — the read failed (network error, non-2xx, malformed JSON);
781
+ ``entries`` is always ``[]`` here too (never meaningful) and ``error``
782
+ carries a short human-readable reason.
783
+ """
784
+
785
+ ok: bool
786
+ entries: list[dict]
787
+ error: str | None = None
788
+
789
+
790
+ def fetch_drive_queue_result(
767
791
  svc: ServiceConfig,
768
792
  repo_name: str | None = None,
769
793
  *,
770
794
  timeout: float = _DEFAULT_TIMEOUT,
771
- ) -> list[dict]:
772
- """GET the drive queue in run order, optionally filtered to one repo (#1753).
773
-
774
- ``[]`` on ANY failure (404 from a daemon predating this route, network
775
- error, bad JSON, or a genuinely empty queue) — fail-soft, mirrors
776
- :func:`fetch_drive_escalations`. ``after_json`` arrives already decoded to
777
- a list; this helper does not re-parse it.
795
+ ) -> DriveQueueRead:
796
+ """GET the drive queue — same request as :func:`fetch_drive_queue` — but
797
+ returning a :class:`DriveQueueRead` that keeps "could not read" and
798
+ "read fine, zero rows" apart (#2992).
799
+
800
+ This is the one place that decides what counts as a successful
801
+ drive-queue read; :func:`fetch_drive_queue` is now a thin fail-soft
802
+ wrapper around it, so there is exactly one answer to "did this read
803
+ succeed" rather than two implementations that could drift apart.
778
804
  """
779
805
  try:
780
806
  params = {"repo_name": repo_name} if repo_name else {}
@@ -786,10 +812,42 @@ def fetch_drive_queue(
786
812
  )
787
813
  resp.raise_for_status()
788
814
  data = resp.json()
789
- except Exception: # noqa: BLE001
790
- return []
815
+ except httpx.HTTPStatusError as exc:
816
+ status = exc.response.status_code if exc.response is not None else "?"
817
+ return DriveQueueRead(
818
+ ok=False, entries=[], error=f"HTTP {status} from {svc.url}/drive-queue"
819
+ )
820
+ except Exception as exc: # noqa: BLE001 — transport/JSON failure; reported, not swallowed
821
+ return DriveQueueRead(ok=False, entries=[], error=f"{type(exc).__name__}: {exc}")
791
822
  entries = data.get("entries") if isinstance(data, dict) else None
792
- return entries if isinstance(entries, list) else []
823
+ if not isinstance(entries, list):
824
+ return DriveQueueRead(
825
+ ok=False, entries=[], error="malformed response (no 'entries' list)"
826
+ )
827
+ return DriveQueueRead(ok=True, entries=entries)
828
+
829
+
830
+ def fetch_drive_queue(
831
+ svc: ServiceConfig,
832
+ repo_name: str | None = None,
833
+ *,
834
+ timeout: float = _DEFAULT_TIMEOUT,
835
+ ) -> list[dict]:
836
+ """GET the drive queue in run order, optionally filtered to one repo (#1753).
837
+
838
+ ``[]`` on ANY failure (404 from a daemon predating this route, network
839
+ error, bad JSON, or a genuinely empty queue) — fail-soft, mirrors
840
+ :func:`fetch_drive_escalations`. ``after_json`` arrives already decoded to
841
+ a list; this helper does not re-parse it.
842
+
843
+ Deliberately still collapses "failed" and "genuinely empty" to the same
844
+ ``[]`` — most callers (``coord.state.list_drive_queue``'s daemon route,
845
+ the auto-loop tick) only want best-effort rows and must keep degrading
846
+ quietly. A caller that needs to tell the two apart — ``coord
847
+ drive-queue list`` (#2992) — should call :func:`fetch_drive_queue_result`
848
+ instead, of which this is now a thin wrapper.
849
+ """
850
+ return fetch_drive_queue_result(svc, repo_name, timeout=timeout).entries
793
851
 
794
852
 
795
853
  def fetch_leg_counts(
@@ -132,6 +132,7 @@ from coord.overlap_predict import (
132
132
  )
133
133
 
134
134
  if TYPE_CHECKING: # pragma: no cover — typing only
135
+ from coord.client import DriveQueueRead
135
136
  from coord.config import Config
136
137
  from coord.merge_queue import QueuedMerge
137
138
 
@@ -1460,15 +1461,64 @@ def _board_for_list_diagnosis() -> BoardView | None:
1460
1461
  return None
1461
1462
 
1462
1463
 
1464
+ def _drive_queue_list_read(
1465
+ repo: str | None,
1466
+ ) -> tuple[list[dict], DriveQueueRead | None, str | None]:
1467
+ """Fetch the rows `list` renders, distinguishing "daemon unreachable"
1468
+ from "genuinely empty" on a thin client (#2992).
1469
+
1470
+ Returns ``(rows, failure, service_url)`` — ``failure`` is ``None`` on a
1471
+ successful read (rows may still be ``[]``, a genuinely drained queue)
1472
+ and a :class:`coord.client.DriveQueueRead` with ``ok=False`` when the
1473
+ daemon could not be read at all; ``service_url`` names the daemon the
1474
+ failed read targeted (``None`` in host mode). Host mode (no
1475
+ ``board_service`` configured) has no daemon to fail against, so it
1476
+ always reads the local DB and never returns a failure here — out of
1477
+ scope per #2992's own issue body (``coord/state.py``'s local-DB
1478
+ fallback is a separate seam).
1479
+ """
1480
+ from coord.client import fetch_drive_queue_result, resolve_board_service # noqa: PLC0415
1481
+ from coord.state import list_drive_queue # noqa: PLC0415
1482
+
1483
+ svc = resolve_board_service()
1484
+ if svc is None:
1485
+ return list_drive_queue(repo), None, None
1486
+ result = fetch_drive_queue_result(svc, repo)
1487
+ if not result.ok:
1488
+ return [], result, svc.url
1489
+ return result.entries, None, svc.url
1490
+
1491
+
1492
+ def _drive_queue_list_failure_text(service_url: str, error: str | None) -> str:
1493
+ """The `list` failure line — must read as unmistakably NOT "empty"
1494
+ (#2992's acceptance bar: never contains the words "queue is empty")."""
1495
+ return (
1496
+ f"(drive queue UNREADABLE — could not reach board daemon at "
1497
+ f"{service_url}: {error})"
1498
+ )
1499
+
1500
+
1501
+ def _drive_queue_list_failure_json(service_url: str, error: str | None) -> str:
1502
+ """The `--json` failure payload — never a bare `[]` a caller could
1503
+ mistake for zero entries (#2992)."""
1504
+ return _json.dumps({"error": error, "service_url": service_url, "ok": False})
1505
+
1506
+
1463
1507
  @drive_queue_group.command("list")
1464
1508
  @click.option("--repo", "repo", default=None, help="Restrict to one repo (default: every repo).")
1465
1509
  @click.option("--json", "output_json", is_flag=True, default=False, help="Emit the raw rows as JSON.")
1466
1510
  @_CONFIG_OPTION
1467
1511
  def drive_queue_list(repo: str | None, output_json: bool, config_path: Path) -> None:
1468
1512
  """Show the queue in run order."""
1469
- from coord.state import list_drive_queue # noqa: PLC0415
1513
+ rows, failure, service_url = _drive_queue_list_read(repo)
1514
+ if failure is not None:
1515
+ import sys as _sys # noqa: PLC0415
1470
1516
 
1471
- rows = list_drive_queue(repo)
1517
+ if output_json:
1518
+ click.echo(_drive_queue_list_failure_json(service_url, failure.error))
1519
+ else:
1520
+ click.echo(_drive_queue_list_failure_text(service_url, failure.error))
1521
+ _sys.exit(1)
1472
1522
  if output_json:
1473
1523
  click.echo(_json.dumps(rows))
1474
1524
  return
@@ -1234,7 +1234,57 @@ def _recover_test(
1234
1234
  — exactly the #1598 incident's "nothing to reconcile" symptom, and
1235
1235
  exactly why the daemon restart mentioned in that report didn't clear it
1236
1236
  either: nothing was ever looking at the CHILD row.
1237
+
1238
+ #3332: the same catch-all mis-files ``test_state="blocked"`` too — the
1239
+ dead-end marker ``coord.dead_end`` (shape 2) and ``coord.smoke`` both
1240
+ already know is terminal-and-unactionable (``dispatch_smoke`` gives up
1241
+ and never re-probes it; ``dispatch_pending_smoke`` skips the row on
1242
+ every tick). ``latest.status`` is ``"done"`` for that row too, so
1243
+ without an explicit check it falls through exactly like the ``running``
1244
+ case did before #1605. Checked here, not just left to ``coord.dead_end``,
1245
+ because that module only runs from the ``drive``/auto-loop path —
1246
+ ``coord diagnose --stage test`` is a separate entry point an operator
1247
+ runs by hand, and it must not disagree with the driver about whether the
1248
+ same row is wedged.
1237
1249
  """
1250
+ from coord.smoke import TEST_STATE_BLOCKED # noqa: PLC0415
1251
+
1252
+ if latest.test_state == TEST_STATE_BLOCKED:
1253
+ from coord.smoke import mute_smoke_legs # noqa: PLC0415
1254
+
1255
+ # Same predicate `coord.dead_end`'s shape 2 uses to tell #1672
1256
+ # (unroutable fleet) apart from #2272 (mute Test-stage legs) — #2235
1257
+ # exists to keep those two REASONS from blurring together, so this
1258
+ # reuses the identical function rather than re-deriving the split
1259
+ # (#2096 "one question, one answer").
1260
+ mute_legs = mute_smoke_legs(latest.test_reason)
1261
+ if mute_legs:
1262
+ cause = (
1263
+ f"{mute_legs} Test-stage leg(s) in a row finished without "
1264
+ "printing a `SMOKE:` verdict marker, exhausting the retry "
1265
+ "budget (#2272) — nothing is known to be wrong with the "
1266
+ "branch; the commonest cause is the smoke command exceeding "
1267
+ "the worker's 600s Bash ceiling. Check the last Test-stage "
1268
+ "transcript for a backgrounded command before blaming the diff."
1269
+ )
1270
+ else:
1271
+ cause = (
1272
+ "coord.smoke.dispatch_smoke found no capability-matched "
1273
+ "machine and recorded 'blocked' rather than re-probing a "
1274
+ "broken fleet on every tick (#1672) — it will not try again "
1275
+ "on its own. Fix the fleet (or the capability rules), then "
1276
+ "clear the marker."
1277
+ )
1278
+ res.findings.append(
1279
+ f"⚠ test_state='blocked': "
1280
+ f"{latest.test_reason or 'no reason recorded'} — {cause} This "
1281
+ "is a permanent dead end (coord.dead_end shape 2) — no amount "
1282
+ "of waiting produces a verdict. `--reset` clears the marker so "
1283
+ "the row re-enters the Test-stage scan."
1284
+ )
1285
+ res.recovered = False
1286
+ res.needs_reset = True
1287
+ return
1238
1288
  if latest.test_state == "running":
1239
1289
  smoke = next(
1240
1290
  (
@@ -1901,17 +1951,61 @@ def _reset_test_stage(
1901
1951
  to touch a ``test-author``/``mock-author`` row, since those share
1902
1952
  ``issue_number`` across sibling JIT-slice assignments for the same
1903
1953
  milestone tracking issue.
1954
+
1955
+ #3332: itemizes which rows were actually cleared, using
1956
+ ``state.test_reset_candidates`` — the same predicate
1957
+ ``reset_work_test_state`` writes against (#2096 "one question, one
1958
+ answer") — read BEFORE the write to see what carries a ``test_state``,
1959
+ then again AFTER to verify the clear persisted rather than trusting the
1960
+ UPDATE's bare ``rowcount``. A report of "cleared 3 work row(s)" with no
1961
+ way to tell which 3 (of however many share the issue) is exactly the gap
1962
+ #3332 flagged.
1904
1963
  """
1905
1964
  from coord import state # noqa: PLC0415
1906
1965
 
1966
+ before = state.test_reset_candidates(
1967
+ repo_name, issue_number, assignment_id=assignment_id
1968
+ )
1969
+ had_state = [(aid, typ) for aid, typ, ts in before if ts]
1970
+
1907
1971
  if dry_run:
1908
- res.findings.append("(dry-run) would clear test_state → re-testable")
1972
+ if had_state:
1973
+ listed = ", ".join(f"{aid} ({typ})" for aid, typ in had_state)
1974
+ res.findings.append(
1975
+ f"(dry-run) would clear test_state → re-testable on "
1976
+ f"{len(had_state)} row(s): {listed}"
1977
+ )
1978
+ else:
1979
+ res.findings.append(
1980
+ "(dry-run) would clear test_state → re-testable (no matching "
1981
+ "row currently carries one — this would be a no-op)"
1982
+ )
1909
1983
  res.needs_reset = True
1910
1984
  return
1985
+
1911
1986
  updated = state.reset_work_test_state(
1912
1987
  repo_name, issue_number, assignment_id=assignment_id
1913
1988
  )
1914
- res.actions_taken.append(f"cleared Test verdict on {updated} work row(s) (re-testable)")
1989
+ after = state.test_reset_candidates(
1990
+ repo_name, issue_number, assignment_id=assignment_id
1991
+ )
1992
+ still_set = [(aid, typ) for aid, typ, ts in after if ts]
1993
+ cleared = [pair for pair in had_state if pair not in still_set]
1994
+ if still_set:
1995
+ listed = ", ".join(f"{aid} ({typ})" for aid, typ in still_set)
1996
+ res.actions_taken.append(
1997
+ f"reset requested for {updated} row(s), but test_state is still "
1998
+ f"set on re-read for: {listed} — the clear did NOT persist for "
1999
+ "these (#2096)"
2000
+ )
2001
+ if cleared:
2002
+ listed = ", ".join(f"{aid} ({typ})" for aid, typ in cleared)
2003
+ res.actions_taken.append(
2004
+ f"cleared Test verdict on {len(cleared)} work row(s) "
2005
+ f"(re-testable): {listed}"
2006
+ )
2007
+ elif not still_set:
2008
+ res.actions_taken.append(f"cleared Test verdict on {updated} work row(s) (re-testable)")
1915
2009
  res.reset_performed = True
1916
2010
  res.recovered = True
1917
2011
  res.branch_preserved = True
@@ -3650,6 +3650,64 @@ def reset_work_review_state(
3650
3650
  return cur.rowcount
3651
3651
 
3652
3652
 
3653
+ def _test_reset_where(
3654
+ repo_name: str, issue_number: int, assignment_id: str | None
3655
+ ) -> tuple[str, tuple]:
3656
+ """The WHERE clause + params identifying the rows a Test-gate reset
3657
+ touches for ``(repo_name, issue_number, assignment_id)`` — shared by
3658
+ :func:`reset_work_test_state` and :func:`test_reset_candidates` (#3332)
3659
+ so the two can never answer "which rows would this touch" differently
3660
+ (#2096 "one question, one answer"). See :func:`reset_work_test_state`'s
3661
+ docstring for why ``test-author``/``mock-author`` additionally require
3662
+ *assignment_id* to match.
3663
+ """
3664
+ if assignment_id is not None:
3665
+ where = (
3666
+ "repo_name=? AND issue_number=? AND ("
3667
+ "type IN ('work','plan','epic-decompose') OR "
3668
+ "(type IN ('test-author','mock-author') AND assignment_id=?)"
3669
+ ")"
3670
+ )
3671
+ params: tuple = (repo_name, issue_number, assignment_id)
3672
+ else:
3673
+ where = "repo_name=? AND issue_number=? AND type IN ('work','plan','epic-decompose')"
3674
+ params = (repo_name, issue_number)
3675
+ return where, params
3676
+
3677
+
3678
+ def test_reset_candidates(
3679
+ repo_name: str, issue_number: int, *, assignment_id: str | None = None
3680
+ ) -> list[tuple[str, str, str | None]]:
3681
+ """The rows :func:`reset_work_test_state` would touch for the same
3682
+ arguments, as ``(assignment_id, type, test_state)`` triples.
3683
+
3684
+ #3332: lets a caller report WHICH rows a reset cleared instead of a bare
3685
+ count — ``coord diagnose --stage test --reset`` used to report e.g.
3686
+ "cleared Test verdict on 3 work row(s)" for a branch with 4 work-like
3687
+ rows with no way to tell which 3, or whether the 4th was a deliberate
3688
+ skip or a miss. Calling this again *after* the write (comparing which
3689
+ rows still carry a ``test_state``) is also the re-read #2096 asks for —
3690
+ the same pattern :func:`coord.diagnose._reset_review_stage` already uses
3691
+ (#3206's ``still_present`` check) rather than trusting the UPDATE's
3692
+ ``rowcount`` alone.
3693
+ """
3694
+ conn = get_connection()
3695
+ where, params = _test_reset_where(repo_name, issue_number, assignment_id)
3696
+ rows = sql.execute(
3697
+ conn,
3698
+ f"SELECT assignment_id, type, test_state FROM assignments WHERE {where} "
3699
+ "ORDER BY assignment_id",
3700
+ params,
3701
+ ).fetchall()
3702
+ result: list[tuple[str, str, str | None]] = []
3703
+ for row in rows:
3704
+ if hasattr(row, "keys"):
3705
+ result.append((row["assignment_id"], row["type"], row["test_state"]))
3706
+ else:
3707
+ result.append((row[0], row[1], row[2]))
3708
+ return result
3709
+
3710
+
3653
3711
  def reset_work_test_state(
3654
3712
  repo_name: str, issue_number: int, *, assignment_id: str | None = None
3655
3713
  ) -> int:
@@ -3689,17 +3747,7 @@ def reset_work_test_state(
3689
3747
  reset itself.
3690
3748
  """
3691
3749
  conn = get_connection()
3692
- if assignment_id is not None:
3693
- where = (
3694
- "repo_name=? AND issue_number=? AND ("
3695
- "type IN ('work','plan','epic-decompose') OR "
3696
- "(type IN ('test-author','mock-author') AND assignment_id=?)"
3697
- ")"
3698
- )
3699
- params: tuple = (repo_name, issue_number, assignment_id)
3700
- else:
3701
- where = "repo_name=? AND issue_number=? AND type IN ('work','plan','epic-decompose')"
3702
- params = (repo_name, issue_number)
3750
+ where, params = _test_reset_where(repo_name, issue_number, assignment_id)
3703
3751
 
3704
3752
  try:
3705
3753
  from coord.smoke import _parse_fanout_manifest # noqa: PLC0415
@@ -204,3 +204,125 @@ class TestFetchBoardPayloadConditionalGet:
204
204
  cc.reset_board_payload_cache()
205
205
 
206
206
  assert cc._board_payload_cache == {}
207
+
208
+
209
+ class TestFetchDriveQueueResult:
210
+ """#2992: a daemon read failure must be distinguishable from a
211
+ genuinely empty queue — ``fetch_drive_queue_result`` is the function
212
+ that carries that distinction; ``fetch_drive_queue`` stays a fail-soft
213
+ wrapper around it for callers that don't want it (unchanged contract).
214
+ """
215
+
216
+ def test_populated_queue_is_ok_with_the_real_rows(self, monkeypatch) -> None:
217
+ rows = [{"repo_name": "cc", "issue_number": 1}, {"repo_name": "cc", "issue_number": 2}]
218
+
219
+ def fake_get(url, *, headers=None, params=None, **kw):
220
+ return _FakeResponse(json_body={"entries": rows})
221
+
222
+ monkeypatch.setattr(cc.httpx, "get", fake_get)
223
+
224
+ result = cc.fetch_drive_queue_result(_svc())
225
+
226
+ assert result.ok is True
227
+ assert result.entries == rows
228
+ assert result.error is None
229
+
230
+ def test_genuinely_empty_queue_is_ok_with_zero_rows(self, monkeypatch) -> None:
231
+ def fake_get(url, *, headers=None, params=None, **kw):
232
+ return _FakeResponse(json_body={"entries": []})
233
+
234
+ monkeypatch.setattr(cc.httpx, "get", fake_get)
235
+
236
+ result = cc.fetch_drive_queue_result(_svc())
237
+
238
+ assert result.ok is True
239
+ assert result.entries == []
240
+ assert result.error is None
241
+
242
+ def test_transport_error_is_not_ok_and_names_the_reason(self, monkeypatch) -> None:
243
+ def fake_get(url, *, headers=None, params=None, **kw):
244
+ raise httpx.ConnectError("connection refused")
245
+
246
+ monkeypatch.setattr(cc.httpx, "get", fake_get)
247
+
248
+ result = cc.fetch_drive_queue_result(_svc())
249
+
250
+ assert result.ok is False
251
+ assert result.entries == []
252
+ assert result.error is not None
253
+ assert "refused" in result.error or "ConnectError" in result.error
254
+
255
+ def test_5xx_is_not_ok_and_names_the_status(self, monkeypatch) -> None:
256
+ def fake_get(url, *, headers=None, params=None, **kw):
257
+ return _FakeResponse(status_code=503)
258
+
259
+ monkeypatch.setattr(cc.httpx, "get", fake_get)
260
+
261
+ result = cc.fetch_drive_queue_result(_svc())
262
+
263
+ assert result.ok is False
264
+ assert result.entries == []
265
+ assert "503" in result.error
266
+
267
+ def test_malformed_json_is_not_ok(self, monkeypatch) -> None:
268
+ def fake_get(url, *, headers=None, params=None, **kw):
269
+ return _FakeResponse(json_body={"not_entries_at_all": True})
270
+
271
+ monkeypatch.setattr(cc.httpx, "get", fake_get)
272
+
273
+ result = cc.fetch_drive_queue_result(_svc())
274
+
275
+ assert result.ok is False
276
+ assert result.entries == []
277
+ assert result.error
278
+
279
+ def test_the_three_shapes_are_mutually_distinguishable(self, monkeypatch) -> None:
280
+ """Empty / transport-error / populated must never collapse to the
281
+ same result — the whole point of #2992."""
282
+
283
+ def get_for(shape: str):
284
+ def fake_get(url, *, headers=None, params=None, **kw):
285
+ if shape == "populated":
286
+ return _FakeResponse(json_body={"entries": [{"issue_number": 1}]})
287
+ if shape == "empty":
288
+ return _FakeResponse(json_body={"entries": []})
289
+ raise httpx.ConnectError("refused")
290
+
291
+ return fake_get
292
+
293
+ monkeypatch.setattr(cc.httpx, "get", get_for("populated"))
294
+ populated = cc.fetch_drive_queue_result(_svc())
295
+ monkeypatch.setattr(cc.httpx, "get", get_for("empty"))
296
+ empty = cc.fetch_drive_queue_result(_svc())
297
+ monkeypatch.setattr(cc.httpx, "get", get_for("error"))
298
+ errored = cc.fetch_drive_queue_result(_svc())
299
+
300
+ assert (populated.ok, empty.ok, errored.ok) == (True, True, False)
301
+ assert populated.entries != empty.entries
302
+ assert errored.error is not None
303
+ assert populated.error is None
304
+ assert empty.error is None
305
+
306
+ def test_fetch_drive_queue_stays_fail_soft_to_empty_list_on_failure(
307
+ self, monkeypatch
308
+ ) -> None:
309
+ """The pre-existing, unchanged contract: `fetch_drive_queue` itself
310
+ never raises and never exposes the failure — only
311
+ `fetch_drive_queue_result` does."""
312
+
313
+ def fake_get(url, *, headers=None, params=None, **kw):
314
+ raise httpx.ConnectError("refused")
315
+
316
+ monkeypatch.setattr(cc.httpx, "get", fake_get)
317
+
318
+ assert cc.fetch_drive_queue(_svc()) == []
319
+
320
+ def test_fetch_drive_queue_returns_the_real_rows_on_success(self, monkeypatch) -> None:
321
+ rows = [{"repo_name": "cc", "issue_number": 7}]
322
+
323
+ def fake_get(url, *, headers=None, params=None, **kw):
324
+ return _FakeResponse(json_body={"entries": rows})
325
+
326
+ monkeypatch.setattr(cc.httpx, "get", fake_get)
327
+
328
+ assert cc.fetch_drive_queue(_svc()) == rows
@@ -1780,6 +1780,95 @@ def test_stuck_test_state_with_a_live_smoke_child_is_not_a_contradiction(monkeyp
1780
1780
  assert res.recovered is True
1781
1781
 
1782
1782
 
1783
+ # ── #3332: test_state='blocked' is a dead end, not "stage looks healthy" ────
1784
+
1785
+
1786
+ def test_blocked_test_state_reported_as_wedged_with_needs_reset(monkeypatch, config) -> None:
1787
+ """#3332: a `done` work row wedged at `test_state='blocked'` — the marker
1788
+ `dispatch_smoke` stamps when it gives up on a Test-stage dispatch and
1789
+ never re-probes (#1672) — must be reported as wedged, not "stage looks
1790
+ healthy". `--reset` is the documented remedy; the diagnostic must point
1791
+ at it, and `needs_reset` (the field automation branches on) must say so
1792
+ too."""
1793
+ _stub(monkeypatch, session="dead")
1794
+ work = _assign(aid="w1", typ="work", status="done")
1795
+ work.test_state = "blocked"
1796
+ work.test_reason = "no capability-matched machine available"
1797
+ board = Board(completed=[work])
1798
+
1799
+ res = diagnose.diagnose_stage(board, config, "api", 42, "test", dry_run=True)
1800
+
1801
+ assert res.recovered is False
1802
+ assert res.needs_reset is True
1803
+ assert not any("stage looks healthy" in f for f in res.findings)
1804
+ assert any("blocked" in f and "--reset" in f for f in res.findings)
1805
+
1806
+
1807
+ def test_blocked_test_state_names_unroutable_fleet_cause(monkeypatch, config) -> None:
1808
+ """#1672 shape: no capability-matched machine — `mute_smoke_legs` finds
1809
+ no tally marker in the reason, so this must name the fleet cause, not
1810
+ the #2272 mute-legs one (#2235: the two need different remedies)."""
1811
+ _stub(monkeypatch, session="dead")
1812
+ work = _assign(aid="w1", typ="work", status="done")
1813
+ work.test_state = "blocked"
1814
+ work.test_reason = "no capability-matched machine available"
1815
+ board = Board(completed=[work])
1816
+
1817
+ res = diagnose.diagnose_stage(board, config, "api", 42, "test", dry_run=True)
1818
+
1819
+ assert any("#1672" in f and "capability-matched" in f for f in res.findings)
1820
+ assert not any("#2272" in f for f in res.findings)
1821
+
1822
+
1823
+ def test_blocked_test_state_names_mute_legs_cause(monkeypatch, config) -> None:
1824
+ """#2272 shape: N Test-stage legs finished mute in a row and the retry
1825
+ budget ran out — `mute_smoke_legs` (the exact function `coord.dead_end`
1826
+ shape 2 uses, #2096 "one question, one answer") finds the tally marker,
1827
+ so this must name THAT cause instead."""
1828
+ _stub(monkeypatch, session="dead")
1829
+ work = _assign(aid="w1", typ="work", status="done")
1830
+ work.test_state = "blocked"
1831
+ work.test_reason = "no-verdict (#2244) x3"
1832
+ board = Board(completed=[work])
1833
+
1834
+ res = diagnose.diagnose_stage(board, config, "api", 42, "test", dry_run=True)
1835
+
1836
+ assert any("#2272" in f for f in res.findings)
1837
+ assert not any("#1672" in f for f in res.findings)
1838
+
1839
+
1840
+ def test_reset_test_reports_which_rows_were_cleared(monkeypatch, config, coord_db) -> None:
1841
+ """#3332: the reset report must name which rows it cleared, not just a
1842
+ bare count — an operator reading "cleared Test verdict on 3 work
1843
+ row(s)" for a branch with 4 work-like rows can't tell a deliberate skip
1844
+ from a miss."""
1845
+ from coord import state
1846
+
1847
+ _stub(monkeypatch, session="dead")
1848
+ state.record_dispatched_assignment(
1849
+ assignment=Assignment(
1850
+ machine_name="precision", repo_name="api", issue_number=42,
1851
+ issue_title="t", assignment_id="w1", type="work", status="done",
1852
+ ),
1853
+ repo_github="acme/api",
1854
+ )
1855
+ state.record_test_verdict(
1856
+ assignment_id="w1", test_state="blocked", test_reason="no machine"
1857
+ )
1858
+
1859
+ work = _assign(aid="w1", typ="work", status="done")
1860
+ work.test_state = "blocked"
1861
+ board = Board(completed=[work])
1862
+
1863
+ res = diagnose.diagnose_stage(board, config, "api", 42, "test", reset=True)
1864
+
1865
+ assert res.reset_performed is True
1866
+ assert any(
1867
+ "cleared Test verdict" in a and "w1" in a for a in res.actions_taken
1868
+ )
1869
+ assert state.load_assignment_test_state("w1") is None
1870
+
1871
+
1783
1872
  def test_reset_dry_run_does_nothing(monkeypatch, config) -> None:
1784
1873
  calls = _stub(monkeypatch, session="live")
1785
1874
  a = _assign(aid="w1", typ="work", status="running")