code-coordinator 0.5.525__tar.gz → 0.5.527__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 (910) hide show
  1. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/board_schema.py +7 -0
  5. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/drive_queue.py +236 -51
  6. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/db.py +33 -1
  7. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/drive_queue.py +163 -23
  8. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/state.py +57 -4
  9. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_drive_queue.py +202 -4
  10. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_db.py +1 -1
  11. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_drive_queue.py +195 -0
  12. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_state.py +61 -0
  13. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/.claude/commands/board.md +0 -0
  14. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/.claude/commands/complete-session.md +0 -0
  15. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/.claude/commands/coordinator.md +0 -0
  16. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/.githooks/_lib.sh +0 -0
  17. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/.githooks/post-checkout +0 -0
  18. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/.githooks/post-commit +0 -0
  19. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/.githooks/post-merge +0 -0
  20. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  21. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/.github/coord-ci-acceptance.yml +0 -0
  22. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/.github/workflows/auto-release.yml +0 -0
  23. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/.github/workflows/publish.yml +0 -0
  24. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/.github/workflows/test.yml +0 -0
  25. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/.gitignore +0 -0
  26. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/CLAUDE.md +0 -0
  27. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/GOAL.md +0 -0
  28. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/LICENSE +0 -0
  29. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/MANIFEST.in +0 -0
  30. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/README.md +0 -0
  31. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/code_coordinator.egg-info/SOURCES.txt +0 -0
  32. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/code_coordinator.egg-info/dependency_links.txt +0 -0
  33. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/code_coordinator.egg-info/entry_points.txt +0 -0
  34. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/code_coordinator.egg-info/requires.txt +0 -0
  35. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/code_coordinator.egg-info/scm_file_list.json +0 -0
  36. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/code_coordinator.egg-info/top_level.txt +0 -0
  37. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/__init__.py +0 -0
  38. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/_board_mapping.py +0 -0
  39. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/acceptance.py +0 -0
  40. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/acceptance_drivers.py +0 -0
  41. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/agent.py +0 -0
  42. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/agent_app.py +0 -0
  43. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/agent_update.py +0 -0
  44. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/agents/opencode/.gitignore +0 -0
  45. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/agents/opencode/agents/work.md +0 -0
  46. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/agents/opencode/routing.jsonc +0 -0
  47. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/approved_work.py +0 -0
  48. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/audit.py +0 -0
  49. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/auto_loop.py +0 -0
  50. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/backup.py +0 -0
  51. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/block_log.py +0 -0
  52. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/board_service.py +0 -0
  53. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/board_wire.py +0 -0
  54. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/brain.py +0 -0
  55. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/branch_model.py +0 -0
  56. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/bug_intake.py +0 -0
  57. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/cargo_cache.py +0 -0
  58. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/ci_fix.py +0 -0
  59. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/ci_github.py +0 -0
  60. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/ci_gitlab.py +0 -0
  61. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/ci_store.py +0 -0
  62. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/claim.py +0 -0
  63. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/claude_setup_token.py +0 -0
  64. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/cli.py +0 -0
  65. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/client.py +0 -0
  66. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/codegen.py +0 -0
  67. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/__init__.py +0 -0
  68. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/_common.py +0 -0
  69. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/acceptance.py +0 -0
  70. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/agent_ops.py +0 -0
  71. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/audit.py +0 -0
  72. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/backup.py +0 -0
  73. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/chat.py +0 -0
  74. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/ci.py +0 -0
  75. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/codegen.py +0 -0
  76. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/dispatch.py +0 -0
  77. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/dispatch_workers.py +0 -0
  78. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/dr.py +0 -0
  79. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/drive.py +0 -0
  80. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/gate_a.py +0 -0
  81. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/gates.py +0 -0
  82. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/issues.py +0 -0
  83. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/lifecycle.py +0 -0
  84. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/machine.py +0 -0
  85. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/merge.py +0 -0
  86. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/milestone.py +0 -0
  87. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/plan_followup.py +0 -0
  88. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/plans.py +0 -0
  89. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/portal.py +0 -0
  90. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/pr.py +0 -0
  91. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/release.py +0 -0
  92. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/repo.py +0 -0
  93. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/report.py +0 -0
  94. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/review.py +0 -0
  95. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/scorecard.py +0 -0
  96. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/sessions.py +0 -0
  97. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/setup.py +0 -0
  98. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/status.py +0 -0
  99. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/store_migrate.py +0 -0
  100. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/terminal.py +0 -0
  101. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/test_gate.py +0 -0
  102. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/commands/tui.py +0 -0
  103. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/comments.py +0 -0
  104. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/config.py +0 -0
  105. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/config_reload.py +0 -0
  106. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/confirm_test.py +0 -0
  107. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/conflict_fix.py +0 -0
  108. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/dao.py +0 -0
  109. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/dashboard/__init__.py +0 -0
  110. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/dashboard/fixture.py +0 -0
  111. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/dashboard/index.html +0 -0
  112. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/dashboard/server.py +0 -0
  113. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/dashboard/terminal.py +0 -0
  114. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/dead_end.py +0 -0
  115. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/decomposition_chat.py +0 -0
  116. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/README.md +0 -0
  117. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-agent.service +0 -0
  118. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-backup.service +0 -0
  119. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-backup.timer +0 -0
  120. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-db-backup.service +0 -0
  121. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-db-backup.sh +0 -0
  122. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-db-backup.timer +0 -0
  123. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-dr-verify.service +0 -0
  124. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-dr-verify.timer +0 -0
  125. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-drive-queue.service +0 -0
  126. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-drive-queue.timer +0 -0
  127. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-failure-notify.service +0 -0
  128. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-fleet-watchdog.service +0 -0
  129. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  130. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-notify.service +0 -0
  131. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-notify.timer +0 -0
  132. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-release-propagate.service +0 -0
  133. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-release-propagate.timer +0 -0
  134. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-release-window.service +0 -0
  135. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-release-window.timer +0 -0
  136. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-serve.service +0 -0
  137. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-web-dist-build.service +0 -0
  138. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-web-dist-build.timer +0 -0
  139. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy/coord-web.service +0 -0
  140. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy_manifest.py +0 -0
  141. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deploy_units.py +0 -0
  142. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deprecation_telemetry.py +0 -0
  143. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/deps.py +0 -0
  144. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/diagnose.py +0 -0
  145. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/dispatch.py +0 -0
  146. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/dispatch_liveness.py +0 -0
  147. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/dist_name.py +0 -0
  148. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/dr_promote.py +0 -0
  149. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/dr_verify.py +0 -0
  150. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/drive.py +0 -0
  151. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/drive_sessions_snapshot.py +0 -0
  152. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/drive_state.py +0 -0
  153. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/events.py +0 -0
  154. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/failure_class.py +0 -0
  155. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/failure_classifier.py +0 -0
  156. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/filelock.py +0 -0
  157. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/fleet_config_health.py +0 -0
  158. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/forge_availability.py +0 -0
  159. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/freshness.py +0 -0
  160. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/gate_a.py +0 -0
  161. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/gate_b.py +0 -0
  162. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/gate_snapshot.py +0 -0
  163. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/gates.py +0 -0
  164. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/gen_board_fixture.py +0 -0
  165. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/github_ops.py +0 -0
  166. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/github_throttle.py +0 -0
  167. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/goal.py +0 -0
  168. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/graph_health.py +0 -0
  169. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/__init__.py +0 -0
  170. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/aggregate.py +0 -0
  171. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/__init__.py +0 -0
  172. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/_ci_pin.py +0 -0
  173. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/agent_install.py +0 -0
  174. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/cargo_targets.py +0 -0
  175. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/claude_binary.py +0 -0
  176. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/config_drift.py +0 -0
  177. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  178. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/coord_web_ci_pin.py +0 -0
  179. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/deploy_lane_facts.py +0 -0
  180. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/disk.py +0 -0
  181. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/fleet_board.py +0 -0
  182. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  183. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/fleet_phantom.py +0 -0
  184. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/fleet_unit_drift.py +0 -0
  185. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/graph.py +0 -0
  186. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/graphify_cli.py +0 -0
  187. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/index_lock.py +0 -0
  188. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/issues_sync_staleness.py +0 -0
  189. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/local_machine_identity.py +0 -0
  190. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/plan_usage.py +0 -0
  191. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/pr_churn.py +0 -0
  192. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/release_cordon.py +0 -0
  193. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/repo_state.py +0 -0
  194. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/spawned_coord.py +0 -0
  195. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/stalled_pipeline.py +0 -0
  196. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/timer_active.py +0 -0
  197. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/toolchain.py +0 -0
  198. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/unit_drift.py +0 -0
  199. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/unit_enablement.py +0 -0
  200. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/wedged_drive_queue.py +0 -0
  201. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/checks/worktrees.py +0 -0
  202. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/cli.py +0 -0
  203. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/context.py +0 -0
  204. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/fleet_snapshot.py +0 -0
  205. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/models.py +0 -0
  206. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/pypi.py +0 -0
  207. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/registry.py +0 -0
  208. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/render.py +0 -0
  209. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/health/units.py +0 -0
  210. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/hooks.py +0 -0
  211. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/housekeeping.py +0 -0
  212. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/interactive.py +0 -0
  213. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/invariant_alarms.py +0 -0
  214. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/issue_store.py +0 -0
  215. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/issues_sync_status.py +0 -0
  216. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/liveness_auditor.py +0 -0
  217. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/machine_fault.py +0 -0
  218. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/machine_metrics.py +0 -0
  219. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/machine_onboard.py +0 -0
  220. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/machine_pause.py +0 -0
  221. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/machine_stats.py +0 -0
  222. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/merge_queue.py +0 -0
  223. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/milestone_chat.py +0 -0
  224. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/milestone_dispatch.py +0 -0
  225. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/milestone_gate.py +0 -0
  226. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/milestone_order.py +0 -0
  227. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/mock_author.py +0 -0
  228. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/models.py +0 -0
  229. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/network.py +0 -0
  230. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/new_issue_chat.py +0 -0
  231. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/notifier/__init__.py +0 -0
  232. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/notifier/baseline.py +0 -0
  233. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/notifier/cli.py +0 -0
  234. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/notifier/collect.py +0 -0
  235. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/notifier/digest.py +0 -0
  236. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/notifier/models.py +0 -0
  237. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/notifier/predicate.py +0 -0
  238. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/notifier/service.py +0 -0
  239. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/notifier/store.py +0 -0
  240. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/notifier/transport.py +0 -0
  241. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/notify.py +0 -0
  242. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/openapi.py +0 -0
  243. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/overlap_fence.py +0 -0
  244. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/overlap_predict.py +0 -0
  245. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/parentage.py +0 -0
  246. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/parentage_github.py +0 -0
  247. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/pipeline.py +0 -0
  248. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/plan_parser.py +0 -0
  249. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/plans.py +0 -0
  250. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/platform_paths.py +0 -0
  251. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/portal_bridge.py +0 -0
  252. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/portal_store.py +0 -0
  253. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/portal_sync.py +0 -0
  254. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/pr_body_lint.py +0 -0
  255. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/prereqs.py +0 -0
  256. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/progress.py +0 -0
  257. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/providers/__init__.py +0 -0
  258. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/providers/base.py +0 -0
  259. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/providers/claude.py +0 -0
  260. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/providers/claude_pty.py +0 -0
  261. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/providers/opencode.py +0 -0
  262. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/queue_diagnose.py +0 -0
  263. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/reconcile.py +0 -0
  264. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/reconcile_tick.py +0 -0
  265. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/refine_chat.py +0 -0
  266. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/release_cordon.py +0 -0
  267. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/release_propagate.py +0 -0
  268. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/release_verify.py +0 -0
  269. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/release_window.py +0 -0
  270. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/repo_dormancy.py +0 -0
  271. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/repo_edit.py +0 -0
  272. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/repo_onboard.py +0 -0
  273. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/reports.py +0 -0
  274. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/rest_schema.py +0 -0
  275. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/restart_cmd.py +0 -0
  276. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/revalidate.py +0 -0
  277. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/review.py +0 -0
  278. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/scorecard.py +0 -0
  279. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/self_health.py +0 -0
  280. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/serve_app.py +0 -0
  281. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  282. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  283. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  284. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  285. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  286. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/skills/portal-followup/SKILL.md +0 -0
  287. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/skills/release-now/SKILL.md +0 -0
  288. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  289. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  290. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/skills/update-issue/SKILL.md +0 -0
  291. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/smoke.py +0 -0
  292. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/spend_ceiling.py +0 -0
  293. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/split_work.py +0 -0
  294. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/sql.py +0 -0
  295. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/stage_projection.py +0 -0
  296. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/store_migrate.py +0 -0
  297. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/store_parity.py +0 -0
  298. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/templates/deploy-cloudflare.node.yml +0 -0
  299. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/test_author.py +0 -0
  300. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/test_chat.py +0 -0
  301. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/test_orchestrator.py +0 -0
  302. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/test_report.py +0 -0
  303. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/tui_release.py +0 -0
  304. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/uat_checks.py +0 -0
  305. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/usage.py +0 -0
  306. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/usage_limits.py +0 -0
  307. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/usage_rollup.py +0 -0
  308. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coord/worker_events.py +0 -0
  309. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/coordinator.example.yml +0 -0
  310. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-agent.service +0 -0
  311. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-backup.service +0 -0
  312. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-backup.timer +0 -0
  313. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-db-backup.service +0 -0
  314. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-db-backup.sh +0 -0
  315. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-db-backup.timer +0 -0
  316. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-dr-verify.service +0 -0
  317. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-dr-verify.timer +0 -0
  318. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-drive-queue.service +0 -0
  319. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-drive-queue.timer +0 -0
  320. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-failure-notify.service +0 -0
  321. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-failure-notify.sh +0 -0
  322. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-fleet-watchdog.service +0 -0
  323. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-fleet-watchdog.timer +0 -0
  324. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-notify.service +0 -0
  325. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-notify.timer +0 -0
  326. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-release-propagate.service +0 -0
  327. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-release-propagate.timer +0 -0
  328. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-release-window.service +0 -0
  329. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-release-window.timer +0 -0
  330. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-serve.service +0 -0
  331. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-web-dist-build.service +0 -0
  332. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-web-dist-build.sh +0 -0
  333. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-web-dist-build.timer +0 -0
  334. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-web-rollback.sh +0 -0
  335. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/coord-web.service +0 -0
  336. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/deploy/node-shim.sh +0 -0
  337. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/ADR_COORD_TUI_CI.md +0 -0
  338. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  339. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/ADR_COORD_WEB_CI.md +0 -0
  340. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/ADR_COORD_WEB_DIST.md +0 -0
  341. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  342. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/AGENT_OPERATIONS.md +0 -0
  343. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/ARCHITECTURE.md +0 -0
  344. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/ARCH_SECURITY_GATES.md +0 -0
  345. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/COCKPIT.md +0 -0
  346. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/CONTROL_CENTER.md +0 -0
  347. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/COST_DISCIPLINE.md +0 -0
  348. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/CROSS_PLATFORM.md +0 -0
  349. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/CUSTOMER_FACING_APPS.md +0 -0
  350. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/CUSTOMER_PORTAL.md +0 -0
  351. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/DATA_STORE_SELECTION.md +0 -0
  352. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/DISASTER_RECOVERY.md +0 -0
  353. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/DRIVE_QUEUE.md +0 -0
  354. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/EPHEMERAL_WORKERS.md +0 -0
  355. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/FORGE_MIGRATION.md +0 -0
  356. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/GRAPHIFY_SETUP.md +0 -0
  357. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/ISSUE_GUIDANCE.md +0 -0
  358. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/MAC_MINI.md +0 -0
  359. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  360. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/NOTIFIER.md +0 -0
  361. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/OPENCODE_VERIFICATION.md +0 -0
  362. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/OPERATING_GOTCHAS.md +0 -0
  363. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/OPERATOR_GUIDES.md +0 -0
  364. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/ORACLE_LOOP.md +0 -0
  365. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/PHONE_WEBAPP.md +0 -0
  366. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/PIPELINE_V2.md +0 -0
  367. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/PLATFORM_EVOLUTION.md +0 -0
  368. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/SECOND_BACKEND.md +0 -0
  369. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/STORE_SERVICE.md +0 -0
  370. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  371. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/WEB_CONTROL_CENTER.md +0 -0
  372. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/WSL_WINDOWS_WORKER.md +0 -0
  373. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/mocks/web/README.md +0 -0
  374. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/mocks/web/_tokens.css +0 -0
  375. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/mocks/web/issue-detail.html +0 -0
  376. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/mocks/web/pipeline-narrow.html +0 -0
  377. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/docs/mocks/web/pipeline-wide.html +0 -0
  378. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/graphify-out/.gitignore +0 -0
  379. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/install-agent.sh +0 -0
  380. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/pyproject.toml +0 -0
  381. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/audit_review_verdict_overrides.py +0 -0
  382. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  383. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/azure-workers/build-worker-image.sh +0 -0
  384. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/azure-workers/coordinator-machine.py +0 -0
  385. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/azure-workers/dr-down.sh +0 -0
  386. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/azure-workers/dr-up.sh +0 -0
  387. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/azure-workers/epic-down.sh +0 -0
  388. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/azure-workers/epic-up.sh +0 -0
  389. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/azure-workers/preflight.sh +0 -0
  390. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/azure-workers/provision-server.sh +0 -0
  391. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/azure-workers/provision-worker.sh +0 -0
  392. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  393. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  394. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/azure-workers/throwaway-vm.sh +0 -0
  395. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/azure-workers/verify-github-token.sh +0 -0
  396. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/check_gh_argv_containment.py +0 -0
  397. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/codegen.py +0 -0
  398. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/coord-test-runner.sh +0 -0
  399. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  400. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  401. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  402. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  403. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/coord-venv-rollback.sh +0 -0
  404. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/drive-batch.sh +0 -0
  405. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/extract-coord-tui.sh +0 -0
  406. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/fleet_watchdog.py +0 -0
  407. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/gen_board_fixture.py +0 -0
  408. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/gen_mock_index.py +0 -0
  409. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/lib/provision-core.sh +0 -0
  410. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/next_release_tag.py +0 -0
  411. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/provision-machine.sh +0 -0
  412. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/run_tests_in_populated_home.sh +0 -0
  413. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/run_tests_without_gh.sh +0 -0
  414. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/setup-macmini.sh +0 -0
  415. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/smoke_437_interactive.py +0 -0
  416. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/verify-provision-noble.sh +0 -0
  417. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/verify_878_review_capture.py +0 -0
  418. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/verify_release_published.py +0 -0
  419. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/scripts/verify_release_wheel.py +0 -0
  420. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/setup.cfg +0 -0
  421. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/SMOKE_SET.md +0 -0
  422. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/__init__.py +0 -0
  423. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/acceptance/ms-37/conftest.py +0 -0
  424. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/acceptance/ms-37/contract.md +0 -0
  425. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/acceptance/ms-37/manifest.yml +0 -0
  426. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  427. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  428. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/acceptance/ms-51/contract.md +0 -0
  429. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  430. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  431. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/acceptance/ms-51/manifest.yml +0 -0
  432. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  433. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/acceptance/ms-51/tsconfig.json +0 -0
  434. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  435. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/backends.py +0 -0
  436. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/conftest.py +0 -0
  437. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/board-pipeline-basic.json +0 -0
  438. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  439. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  440. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  441. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  442. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/playwright/all_pass.json +0 -0
  443. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  444. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/playwright/mixed_fail.json +0 -0
  445. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  446. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  447. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/playwright/skip.json +0 -0
  448. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/playwright/truncated.json +0 -0
  449. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  450. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  451. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  452. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  453. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  454. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  455. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  456. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  457. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_acceptance.py +0 -0
  458. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_acceptance_drivers.py +0 -0
  459. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent.py +0 -0
  460. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_api_error.py +0 -0
  461. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_app.py +0 -0
  462. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_branch_base.py +0 -0
  463. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_branch_capture.py +0 -0
  464. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_config_free_1712.py +0 -0
  465. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_deploy_units_endpoint.py +0 -0
  466. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_dirty_worktree.py +0 -0
  467. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  468. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_graph_self_heal.py +0 -0
  469. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_health_h3.py +0 -0
  470. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_idle_restart.py +0 -0
  471. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_push_failure.py +0 -0
  472. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_reap.py +0 -0
  473. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_repos_and_pull.py +0 -0
  474. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_restart_services_endpoint.py +0 -0
  475. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_skills_self_heal.py +0 -0
  476. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_startup_diagnostics.py +0 -0
  477. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_update.py +0 -0
  478. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_update_bluegreen.py +0 -0
  479. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_usage_limit.py +0 -0
  480. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_agent_zero_commit.py +0 -0
  481. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_ambient_home_isolation.py +0 -0
  482. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_approve_capability_reroute_3241.py +0 -0
  483. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_approve_dependency_busy_2804.py +0 -0
  484. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_approve_reject_plan.py +0 -0
  485. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_approve_usage_gate.py +0 -0
  486. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_approved_work_2532.py +0 -0
  487. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_approved_work_2996.py +0 -0
  488. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_assignment_already_recorded_daemon.py +0 -0
  489. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_audit_log.py +0 -0
  490. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_audit_outcome.py +0 -0
  491. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_audit_query.py +0 -0
  492. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_auto_loop.py +0 -0
  493. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_auto_release_publish_2035.py +0 -0
  494. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_backend_selection.py +0 -0
  495. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_backup.py +0 -0
  496. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_base_checkout_restore.py +0 -0
  497. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_block_log.py +0 -0
  498. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_board_cap_762.py +0 -0
  499. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_board_fixture.py +0 -0
  500. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_board_read_path.py +0 -0
  501. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_board_schema.py +0 -0
  502. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_board_service.py +0 -0
  503. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_board_state.py +0 -0
  504. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_board_wire.py +0 -0
  505. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_brain.py +0 -0
  506. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_branch_model.py +0 -0
  507. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_bug_intake.py +0 -0
  508. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_build_worker_image_env_update.py +0 -0
  509. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cargo_cache.py +0 -0
  510. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_check_gh_argv_containment.py +0 -0
  511. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_ci_acceptance_gate_1950.py +0 -0
  512. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_ci_fix.py +0 -0
  513. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_ci_github.py +0 -0
  514. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_ci_gitlab.py +0 -0
  515. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_ci_parity_2091.py +0 -0
  516. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_ci_store.py +0 -0
  517. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_claim.py +0 -0
  518. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_claude_md_budget.py +0 -0
  519. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_claude_setup_token.py +0 -0
  520. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_acceptance.py +0 -0
  521. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_assign.py +0 -0
  522. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  523. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_assign_interactive_remote.py +0 -0
  524. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_assign_provider.py +0 -0
  525. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  526. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_audit.py +0 -0
  527. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_chat_continue.py +0 -0
  528. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_ci.py +0 -0
  529. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_codegen.py +0 -0
  530. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_decide.py +0 -0
  531. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_diagnose_capability_rules.py +0 -0
  532. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_diagnose_config_provenance.py +0 -0
  533. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_diagnose_forge_availability.py +0 -0
  534. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_diagnose_graph.py +0 -0
  535. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_diagnose_self.py +0 -0
  536. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_diagnose_test_coverage.py +0 -0
  537. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_doctor.py +0 -0
  538. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_doctor_config_free_1801.py +0 -0
  539. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  540. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  541. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_drive.py +0 -0
  542. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_escalate.py +0 -0
  543. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_fix_headless_review.py +0 -0
  544. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_gate_a.py +0 -0
  545. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_install_drift.py +0 -0
  546. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_install_skills.py +0 -0
  547. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_issue_comment.py +0 -0
  548. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_issue_create_label.py +0 -0
  549. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_issue_reopen.py +0 -0
  550. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_issue_view_list.py +0 -0
  551. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_issues.py +0 -0
  552. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_merge.py +0 -0
  553. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_milestone_assign.py +0 -0
  554. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_milestone_capture.py +0 -0
  555. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_milestone_chat_add_child.py +0 -0
  556. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_milestone_dispatch.py +0 -0
  557. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_milestone_gate_b.py +0 -0
  558. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_milestone_gate_c.py +0 -0
  559. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_milestone_order.py +0 -0
  560. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  561. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_milestone_ship.py +0 -0
  562. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_network.py +0 -0
  563. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_new_issue_chat.py +0 -0
  564. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_plans.py +0 -0
  565. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_portal.py +0 -0
  566. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_pr.py +0 -0
  567. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_pull_artifact.py +0 -0
  568. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_queue.py +0 -0
  569. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_reattach_sessions.py +0 -0
  570. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_refine_board.py +0 -0
  571. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_release_preflight.py +0 -0
  572. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_release_propagate.py +0 -0
  573. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_release_window.py +0 -0
  574. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_repo_2220.py +0 -0
  575. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  576. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_scorecard.py +0 -0
  577. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_serve_store_backend_3084.py +0 -0
  578. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_set_review_findings.py +0 -0
  579. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_status_advisory_terminal.py +0 -0
  580. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_status_contested_tag.py +0 -0
  581. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_status_invariant_alarms.py +0 -0
  582. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_status_machine_fault.py +0 -0
  583. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_status_merge_queue.py +0 -0
  584. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_status_provider.py +0 -0
  585. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_status_retried_3340.py +0 -0
  586. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_status_review_finalizing.py +0 -0
  587. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_status_supervisor_3366.py +0 -0
  588. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_status_test_failed_tag.py +0 -0
  589. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_status_usage_limit.py +0 -0
  590. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_sync_comments_873.py +0 -0
  591. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_test_plan.py +0 -0
  592. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_track.py +0 -0
  593. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_tui_update.py +0 -0
  594. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cli_wait.py +0 -0
  595. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_client.py +0 -0
  596. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_client_base_install.py +0 -0
  597. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_client_config_cache_atomic_3052.py +0 -0
  598. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_client_resource_migration_1946.py +0 -0
  599. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_commands_common.py +0 -0
  600. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_comments.py +0 -0
  601. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_completion_summary.py +0 -0
  602. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_config.py +0 -0
  603. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_config_acceptance.py +0 -0
  604. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_config_audit.py +0 -0
  605. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_config_drift_check.py +0 -0
  606. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_config_effective.py +0 -0
  607. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_config_pricing.py +0 -0
  608. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  609. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_config_usage_gate.py +0 -0
  610. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_confirm_test.py +0 -0
  611. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_conflict_fix.py +0 -0
  612. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_conflict_fix_semantic.py +0 -0
  613. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  614. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_coord_test.py +0 -0
  615. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  616. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_coord_test_runner_baseline.py +0 -0
  617. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_coord_test_runner_populated_home.py +0 -0
  618. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_coord_test_runner_routing.py +0 -0
  619. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_coord_test_runner_toolchain.py +0 -0
  620. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_coord_uat.py +0 -0
  621. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_coord_web_sse_restart_live.py +0 -0
  622. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_coordinator_machine.py +0 -0
  623. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_cross_platform_imports.py +0 -0
  624. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dao.py +0 -0
  625. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dashboard.py +0 -0
  626. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dashboard_api.py +0 -0
  627. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dashboard_fixture.py +0 -0
  628. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dashboard_server.py +0 -0
  629. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dashboard_terminal.py +0 -0
  630. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dashboard_terminal_live.py +0 -0
  631. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dead_end.py +0 -0
  632. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_decomposition_chat.py +0 -0
  633. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_deploy_coord_db_backup.py +0 -0
  634. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_deploy_coord_web_dist.py +0 -0
  635. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_deploy_coord_web_rollback.py +0 -0
  636. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_deploy_db_backup_unit.py +0 -0
  637. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_deploy_drive_queue_unit.py +0 -0
  638. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_deploy_failure_notify_unit.py +0 -0
  639. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_deploy_manifest.py +0 -0
  640. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_deploy_notify_unit.py +0 -0
  641. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_deploy_units_lane.py +0 -0
  642. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_deploy_web_unit.py +0 -0
  643. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_deprecation_telemetry.py +0 -0
  644. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_deps.py +0 -0
  645. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_diagnose.py +0 -0
  646. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dispatch.py +0 -0
  647. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dispatch_liveness.py +0 -0
  648. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dispatch_target_validation.py +0 -0
  649. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dispatch_workers.py +0 -0
  650. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dist_name.py +0 -0
  651. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_done_housekeeping.py +0 -0
  652. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dr_azure_scripts.py +0 -0
  653. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dr_promote.py +0 -0
  654. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_dr_verify.py +0 -0
  655. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_drive.py +0 -0
  656. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_drive_machine_fault.py +0 -0
  657. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_drive_queue_blocked_rendering.py +0 -0
  658. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_drive_queue_launch_argv.py +0 -0
  659. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_drive_queue_max_parallel_config.py +0 -0
  660. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  661. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_drive_queue_roll_pending.py +0 -0
  662. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  663. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_drive_sessions_snapshot.py +0 -0
  664. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_drive_state.py +0 -0
  665. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_drive_tmux.py +0 -0
  666. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_epic_up_capability_detection.py +0 -0
  667. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  668. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_epic_up_image_provenance.py +0 -0
  669. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_errors.py +0 -0
  670. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_events.py +0 -0
  671. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_failure_class.py +0 -0
  672. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_failure_classifier.py +0 -0
  673. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_filelock.py +0 -0
  674. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  675. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_fix_escalation_classifier.py +0 -0
  676. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_fix_of_force_override.py +0 -0
  677. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_fleet_config_health.py +0 -0
  678. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_fleet_health_probes.py +0 -0
  679. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_fleet_health_snapshot.py +0 -0
  680. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_fleet_watchdog.py +0 -0
  681. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_forge_availability.py +0 -0
  682. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_freshness.py +0 -0
  683. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_gate_a.py +0 -0
  684. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_gate_b.py +0 -0
  685. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_gate_snapshot_staleness.py +0 -0
  686. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_gates.py +0 -0
  687. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  688. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_gen_mock_index.py +0 -0
  689. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_generated_rust_fixture.py +0 -0
  690. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_generated_rust_requests.py +0 -0
  691. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_generated_types_fixture.py +0 -0
  692. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_github_ops.py +0 -0
  693. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_github_throttle.py +0 -0
  694. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_goal.py +0 -0
  695. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_graph_health.py +0 -0
  696. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_graph_selfheal_absent_2237.py +0 -0
  697. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_handoff.py +0 -0
  698. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_checks.py +0 -0
  699. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_cli.py +0 -0
  700. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_cli_graph.py +0 -0
  701. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_config.py +0 -0
  702. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_context.py +0 -0
  703. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_coord_tui_ci_pin.py +0 -0
  704. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_coord_web_ci_pin.py +0 -0
  705. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_deploy_lane_facts.py +0 -0
  706. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_fix.py +0 -0
  707. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_incident_regression.py +0 -0
  708. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_issues_sync_staleness.py +0 -0
  709. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_pr_churn.py +0 -0
  710. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_pypi.py +0 -0
  711. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_registry.py +0 -0
  712. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_release_cordon_probe.py +0 -0
  713. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_timer_active.py +0 -0
  714. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_toolchain.py +0 -0
  715. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_unit_drift.py +0 -0
  716. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_unit_enablement.py +0 -0
  717. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_health_wedged_drive_queue.py +0 -0
  718. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_hooks.py +0 -0
  719. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_housekeeping.py +0 -0
  720. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_human_attended_437.py +0 -0
  721. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_init.py +0 -0
  722. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_install_agent_venv_2911.py +0 -0
  723. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_integration.py +0 -0
  724. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_interactive.py +0 -0
  725. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_interactive_briefing_echo.py +0 -0
  726. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_interactive_pane_log_2541.py +0 -0
  727. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_interactive_prefill_state.py +0 -0
  728. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_interactive_session_relaunch.py +0 -0
  729. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_interactive_test_verdict_backstop.py +0 -0
  730. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_interactive_token_attribution.py +0 -0
  731. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_interactive_worktree.py +0 -0
  732. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_invariant_alarms.py +0 -0
  733. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_issue_store_seam.py +0 -0
  734. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_issues_sync_status.py +0 -0
  735. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_liveness_auditor.py +0 -0
  736. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_liveness_notify.py +0 -0
  737. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_lock_contention_ratchet.py +0 -0
  738. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_machine_fault.py +0 -0
  739. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_machine_metrics.py +0 -0
  740. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_machine_onboard.py +0 -0
  741. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_machine_pause.py +0 -0
  742. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_machine_stats.py +0 -0
  743. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_merge_queue.py +0 -0
  744. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_merge_verify.py +0 -0
  745. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_milestone_chat.py +0 -0
  746. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_milestone_dispatch.py +0 -0
  747. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_milestone_gate.py +0 -0
  748. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_milestone_order.py +0 -0
  749. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_milestone_seam.py +0 -0
  750. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_mock_author.py +0 -0
  751. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_model_tiering.py +0 -0
  752. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_models.py +0 -0
  753. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_models_config_labels.py +0 -0
  754. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_needs_attention.py +0 -0
  755. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_network.py +0 -0
  756. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_new_issue_chat.py +0 -0
  757. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_next_release_tag.py +0 -0
  758. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_node_shim.py +0 -0
  759. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_notifier_baseline.py +0 -0
  760. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_notifier_cli.py +0 -0
  761. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_notifier_collect.py +0 -0
  762. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_notifier_config.py +0 -0
  763. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_notifier_drive_seam.py +0 -0
  764. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_notifier_isolation.py +0 -0
  765. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_notifier_predicate.py +0 -0
  766. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_notifier_quiet_hours.py +0 -0
  767. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_notifier_service.py +0 -0
  768. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_notify.py +0 -0
  769. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_notify_drain.py +0 -0
  770. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_openapi.py +0 -0
  771. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_operational_defaults.py +0 -0
  772. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_overlap_fence.py +0 -0
  773. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_overlap_predict.py +0 -0
  774. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_packaged_deploy_units.py +0 -0
  775. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_parentage.py +0 -0
  776. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_paste_landed.py +0 -0
  777. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  778. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_pipeline.py +0 -0
  779. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_plan_followup_approve_plan_command.py +0 -0
  780. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_plan_followup_pr_command.py +0 -0
  781. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_plan_followup_review_command.py +0 -0
  782. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_plan_only.py +0 -0
  783. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_plan_parser.py +0 -0
  784. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_platform_paths.py +0 -0
  785. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_portal_bridge.py +0 -0
  786. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_portal_config.py +0 -0
  787. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_portal_store.py +0 -0
  788. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_portal_sync.py +0 -0
  789. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_pr_body_lint.py +0 -0
  790. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_prereqs.py +0 -0
  791. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_production_db_guard.py +0 -0
  792. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_progress.py +0 -0
  793. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_provider_seam.py +0 -0
  794. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_providers.py +0 -0
  795. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_providers_config_labels.py +0 -0
  796. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_providers_pty.py +0 -0
  797. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_provision_core.py +0 -0
  798. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_provision_machine.py +0 -0
  799. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_py_rust_mirror_inventory.py +0 -0
  800. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_quiet_hours.py +0 -0
  801. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_quiet_hours_store_2146.py +0 -0
  802. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_reap_merged_sessions.py +0 -0
  803. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_reap_stale_interactive_tick.py +0 -0
  804. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_reconcile.py +0 -0
  805. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_reconcile_branch.py +0 -0
  806. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_reconcile_completions.py +0 -0
  807. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  808. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_reconcile_merges.py +0 -0
  809. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_reconcile_no_agent_record.py +0 -0
  810. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_reconcile_tick.py +0 -0
  811. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_reconcile_usage_limit_done.py +0 -0
  812. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_refine_chat.py +0 -0
  813. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_release_cordon_2101.py +0 -0
  814. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  815. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_release_cordon_deadlock_2240.py +0 -0
  816. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  817. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_release_cordon_stuck_2490.py +0 -0
  818. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_release_propagate.py +0 -0
  819. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_release_propagate_threshold.py +0 -0
  820. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_release_roll_between_legs_2854.py +0 -0
  821. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_release_roll_window_handoff.py +0 -0
  822. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_release_unified_1242.py +0 -0
  823. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_release_verify.py +0 -0
  824. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_release_window.py +0 -0
  825. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_remote_auto_prune.py +0 -0
  826. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_remote_interactive_reaper.py +0 -0
  827. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_repo_add.py +0 -0
  828. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_repo_dormancy.py +0 -0
  829. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_repo_edit_2220.py +0 -0
  830. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_repo_graph_fleet_2237.py +0 -0
  831. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_repo_max_parallel_3423.py +0 -0
  832. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_repo_onboard_2220.py +0 -0
  833. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_report_result_push.py +0 -0
  834. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_reports.py +0 -0
  835. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_restart_cmd.py +0 -0
  836. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_retry.py +0 -0
  837. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_retry_advisory_1606.py +0 -0
  838. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_retry_escalation_classify_3360.py +0 -0
  839. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_retry_type_1636.py +0 -0
  840. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_revalidate.py +0 -0
  841. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_review.py +0 -0
  842. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_review_end_review_without_verdict.py +0 -0
  843. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_review_parse_failure_diagnostic.py +0 -0
  844. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_review_reaffirm.py +0 -0
  845. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_review_state.py +0 -0
  846. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_review_verdict_backstop.py +0 -0
  847. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_review_verdict_override_audit.py +0 -0
  848. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_review_verdict_relay.py +0 -0
  849. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_review_zero_commits.py +0 -0
  850. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_scoped_review_wiring.py +0 -0
  851. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_scorecard.py +0 -0
  852. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_self_health.py +0 -0
  853. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_serve.py +0 -0
  854. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_serve_app.py +0 -0
  855. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_serve_app_board_trim.py +0 -0
  856. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_serve_rest_routes.py +0 -0
  857. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_session.py +0 -0
  858. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_slice_issue_attribution.py +0 -0
  859. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_smoke.py +0 -0
  860. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  861. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_smoke_live_checkout_restore.py +0 -0
  862. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_smoke_workflow.py +0 -0
  863. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_spend_ceiling.py +0 -0
  864. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_spend_ceiling_coordinator.py +0 -0
  865. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_split.py +0 -0
  866. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_split_work.py +0 -0
  867. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_sql_dialect.py +0 -0
  868. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_sqlite_connect_ratchet.py +0 -0
  869. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_stage_projection.py +0 -0
  870. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_stale_busy_reviewer_697.py +0 -0
  871. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_stalled_pipeline.py +0 -0
  872. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_state_review_findings_daemon.py +0 -0
  873. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_status_fleet_footer.py +0 -0
  874. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_stop_1567.py +0 -0
  875. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_store_contract.py +0 -0
  876. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_store_migrate.py +0 -0
  877. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_stuck.py +0 -0
  878. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  879. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_terminal_command.py +0 -0
  880. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_test_author.py +0 -0
  881. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_test_chat.py +0 -0
  882. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_test_orchestrator.py +0 -0
  883. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_test_report.py +0 -0
  884. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_test_verdict_parsing.py +0 -0
  885. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_test_verdict_transcript_floor.py +0 -0
  886. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_text_io_encoding_audit.py +0 -0
  887. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_thin_client_board_audit.py +0 -0
  888. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_thin_client_config_load_1080.py +0 -0
  889. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_thin_client_daemon_routing_906.py +0 -0
  890. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_throwaway_vm.py +0 -0
  891. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_tmux_host.py +0 -0
  892. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_tmux_session.py +0 -0
  893. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_transcript_floor.py +0 -0
  894. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_uat_checks.py +0 -0
  895. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_usage.py +0 -0
  896. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_usage_limits.py +0 -0
  897. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_usage_rollup.py +0 -0
  898. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_venv_live_install_2121.py +0 -0
  899. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_version_single_source.py +0 -0
  900. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_watch.py +0 -0
  901. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  902. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_worker_env_venv_isolation.py +0 -0
  903. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_worker_events.py +0 -0
  904. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_worker_image_pin_sync.py +0 -0
  905. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_worker_safety.py +0 -0
  906. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_worker_test_scoping.py +0 -0
  907. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_worktree.py +0 -0
  908. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  909. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/tests/test_write_parity.py +0 -0
  910. {code_coordinator-0.5.525 → code_coordinator-0.5.527}/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.525
3
+ Version: 0.5.527
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.525
3
+ Version: 0.5.527
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.525",
2
+ "tag": "0.5.527",
3
3
  "distance": 0,
4
- "node": "g055bba5413e260e4e732234df5915c68b3c23459",
4
+ "node": "g60df5470d276cf021d283bc8ebbd6cab60aee904",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-09-27"
@@ -313,6 +313,13 @@ class BoardDriveQueueEntry:
313
313
  apply_verdict: str
314
314
  apply_verdict_reason: str
315
315
  apply_verdict_at: float | None = None
316
+ # #3463: the all-time WORK_LIKE leg count this row saw when
317
+ # `enqueue_drive_queue` last (re-)declared it — see
318
+ # `coord.drive_queue.QueueEntry.legs_at_enqueue` for what it feeds.
319
+ # Default 0 — both for a row predating this column and for a thin client
320
+ # talking to a daemon that predates it — reproduces the pre-#3463
321
+ # `work_leg_count - 1` fix-round formula exactly.
322
+ legs_at_enqueue: int = 0
316
323
 
317
324
 
318
325
  # ── #3428 (#3408 item 3): concurrency ceilings + provenance + occupancy ──────
@@ -106,7 +106,6 @@ from coord.drive_queue import (
106
106
  resolve_max_parallel,
107
107
  resolve_max_parallel_per_repo,
108
108
  resolve_repo_ceilings,
109
- total_fix_round_budget,
110
109
  unreachable_wait_alert,
111
110
  validate_apply_gate,
112
111
  validate_enqueue,
@@ -1637,20 +1636,35 @@ def drive_queue_list(repo: str | None, output_json: bool, config_path: Path) ->
1637
1636
  bits.append(f"attempts={entry.attempts}")
1638
1637
  if entry.deferrals:
1639
1638
  bits.append(f"deferrals={entry.deferrals}")
1640
- # #2972: the fix-round ceiling's OWN count — total work legs (work +
1641
- # every fix round) this entry has run across every relaunch, against
1642
- # the budget `_reconcile_running` actually enforces. Only shown once
1643
- # at least one leg has been dispatched — a `waiting` entry that has
1644
- # never launched has nothing to report, same as `attempts`/
1639
+ # #2972/#3463: the fix-round ceiling's OWN count, rendered with the
1640
+ # SAME meaning `coord drive`'s own `fix round N/M` lines use
1641
+ # (`coord/drive.py`) — fix rounds SPENT against `max_fix_rounds`, not
1642
+ # "every work-like leg including the initial one" against "budget +
1643
+ # 1". `lifetime_legs` is every WORK_LIKE leg `leg_counts()` has ever
1644
+ # seen for this issue, all-time, across every predecessor row; #3463
1645
+ # narrows that to `row_legs` — legs run since THIS row was last
1646
+ # (re-)declared by `enqueue_drive_queue` (`entry.legs_at_enqueue`),
1647
+ # the SAME baseline `remaining_fix_rounds` subtracts. Only shown once
1648
+ # this row has itself dispatched at least one leg — a `waiting`
1649
+ # entry that has never launched (or a freshly re-added row that
1650
+ # hasn't relaunched yet) has nothing to report, same as `attempts`/
1645
1651
  # `deferrals` above being suppressed at 0.
1646
- work_legs = sum(
1652
+ lifetime_legs = sum(
1647
1653
  count
1648
1654
  for kind, count in all_leg_counts.get(entry.key, {}).items()
1649
1655
  if kind in WORK_LIKE
1650
1656
  )
1651
- if work_legs:
1652
- budget = total_fix_round_budget(entry, fix_round_config_default)
1653
- bits.append(f"fix_rounds={min(work_legs, budget)}/{budget}")
1657
+ row_legs = max(lifetime_legs - entry.legs_at_enqueue, 0)
1658
+ if row_legs:
1659
+ effective_max = effective_max_fix_rounds(entry, fix_round_config_default)
1660
+ fix_rounds_spent = max(row_legs - 1, 0)
1661
+ # #3463: an overrun (the #3454 leak: a row that dispatched past
1662
+ # its own ceiling before the fix landed) must stay VISIBLE as an
1663
+ # overrun, not silently clamp back down to a reassuring `N/N` —
1664
+ # a gate that can never show its own failure state is not a
1665
+ # gate (epic #2096).
1666
+ overrun = "!" if fix_rounds_spent > effective_max else ""
1667
+ bits.append(f"fix_rounds={fix_rounds_spent}/{effective_max}{overrun}")
1654
1668
  if entry.resumes:
1655
1669
  # #2230: how many times the merge-gate sweep has auto-resumed
1656
1670
  # THIS row from `blocked` — the churn signal the issue asks to be
@@ -4815,13 +4829,122 @@ def _index_merge_queue_by_key(rows: list, board: Any) -> dict[str, Any]:
4815
4829
  return indexed
4816
4830
 
4817
4831
 
4832
+ def _resolve_winning_work_row_for_blocked_entry(
4833
+ board: Any, repo_name: str, issue_number: int
4834
+ ) -> Any | None:
4835
+ """The same-branch "winner" (:func:`coord.merge_queue.
4836
+ group_branch_candidates`) among *board*'s completed work for
4837
+ ``(repo_name, issue_number)`` — resolved the same way :func:`coord.gates.
4838
+ build_gate_report`/:func:`_index_merge_queue_by_key` resolve an
4839
+ acceptance-slice's epic-keyed row (#3012): a match on the row's own
4840
+ ``issue_number`` OR its :func:`~coord.models.effective_issue_number`.
4841
+
4842
+ ``None`` when *board* carries no matching :data:`~coord.models.
4843
+ WORK_LIKE_TYPES` ``done`` row at all — the caller's signal that there is
4844
+ genuinely nothing here to evaluate (#3460).
4845
+ """
4846
+ from coord.models import WORK_LIKE_TYPES, effective_issue_number # noqa: PLC0415
4847
+
4848
+ from coord import merge_queue as _mq # noqa: PLC0415
4849
+
4850
+ completed = list(getattr(board, "completed", None) or [])
4851
+ matches = [
4852
+ a for a in completed
4853
+ if getattr(a, "repo_name", None) == repo_name
4854
+ and getattr(a, "type", None) in WORK_LIKE_TYPES
4855
+ and getattr(a, "status", None) == "done"
4856
+ and (
4857
+ getattr(a, "issue_number", None) == issue_number
4858
+ or effective_issue_number(a) == issue_number
4859
+ )
4860
+ ]
4861
+ if not matches:
4862
+ return None
4863
+ groups = _mq.group_branch_candidates(matches)
4864
+ if not groups:
4865
+ return None
4866
+ # #3460: matches are already scoped to one (repo, issue) pair, so every
4867
+ # group here is on the SAME branch in the overwhelming common case; the
4868
+ # rare "the issue's work moved branches across relaunches" shape just
4869
+ # picks the first (oldest-seen) branch group's own winner rather than
4870
+ # inventing a cross-branch tie-break this sweep has no stake in.
4871
+ winner, _superseded = groups[0]
4872
+ return winner
4873
+
4874
+
4875
+ def _evaluate_blocked_entry_without_a_queue_row(
4876
+ e: Any, board: Any, cfg: Any, gh_ops: Any
4877
+ ) -> tuple[bool, str] | None:
4878
+ """#3460's no-queue-row fallback: when neither the queue nor the #2806
4879
+ self-heal produced a row for *e*, this is the difference between an
4880
+ honest "unreadable" (there is truly nothing to read) and the false one
4881
+ the #3460 incident reported — a gate that was, in fact, genuinely still
4882
+ shut (quadraui#1081: review request-changes outstanding, Test failed,
4883
+ fix rounds exhausted, and — because ``enqueue_approved_work``'s own
4884
+ self-heal drops any row that fails the review/smoke gates,
4885
+ ``coord/merge_queue.py:4973`` — NO queue row will EVER exist for it).
4886
+
4887
+ Resolves the branch's winning work row directly
4888
+ (:func:`_resolve_winning_work_row_for_blocked_entry`) and evaluates it
4889
+ with the exact gates :func:`coord.merge_queue.enqueue_approved_work`
4890
+ itself checks — :func:`coord.merge_queue.live_gate_entry` (the #2085
4891
+ live-anchored synthetic entry) + :func:`coord.merge_queue.
4892
+ merge_gate_failures` (the reason-carrying twin of ``passes_merge_gates``,
4893
+ #946) — so this can never disagree with what ``enqueue_approved_work``
4894
+ itself would have concluded.
4895
+
4896
+ Returns ``(True, reason)`` — CONFIRMED still shut, *reason* naming every
4897
+ failing gate — when :func:`merge_gate_failures` finds any. Returns
4898
+ ``(False, reason)`` when it finds none: the winning row clears every
4899
+ gate this sweep can check without a PR (CI is per-PR only, #1150), which
4900
+ mirrors exactly what would make ``enqueue_approved_work`` enqueue it —
4901
+ confirmed CLEAR, not "unreadable" (there is nothing left unresolved).
4902
+ Returns ``None`` — genuinely nothing to report — only when there is no
4903
+ winning work row at all (:func:`_resolve_winning_work_row_for_blocked_entry`
4904
+ returns ``None``) or this evaluation itself raises; the caller falls
4905
+ back to its own "no merge-queue row" unreadable note for either.
4906
+ """
4907
+ from coord import merge_queue as _mq # noqa: PLC0415
4908
+
4909
+ winner = _resolve_winning_work_row_for_blocked_entry(board, e.repo, e.issue)
4910
+ if winner is None:
4911
+ return None
4912
+ repo_cfg = cfg.repo(e.repo)
4913
+ if repo_cfg is None:
4914
+ return None
4915
+ from coord.branch_model import resolve_base_branch_for_issue_number # noqa: PLC0415
4916
+
4917
+ target_branch = resolve_base_branch_for_issue_number(
4918
+ repo_cfg, repo_cfg.github, getattr(winner, "issue_number", 0)
4919
+ )
4920
+ gate_entry = _mq.live_gate_entry(winner, repo_cfg.github, target_branch, gh_ops)
4921
+ failures = _mq.merge_gate_failures(gate_entry, cfg, board, gh_ops=gh_ops)
4922
+ if failures:
4923
+ return True, _mq.describe_merge_gate_failures(failures)
4924
+ return (
4925
+ False,
4926
+ "the branch's winning work row clears review/smoke/uat with no "
4927
+ "merge-queue row yet to check CI against (#3460)",
4928
+ )
4929
+
4930
+
4818
4931
  def _fetch_live_blocked_gate(
4819
4932
  entries: list, config_path: Path | None
4820
- ) -> tuple[dict[str, bool], dict[str, str]]:
4821
- """``({entry_key: still_blocked}, {entry_key: unreadable_reason})`` for
4822
- every RE-EVALUABLE ``blocked`` entry (#2230) — the counterpart of
4823
- :func:`_fetch_live_ci_gate` above: same mechanism, same bound, a
4824
- different queue state.
4933
+ ) -> tuple[dict[str, bool], dict[str, str], dict[str, str]]:
4934
+ """``({entry_key: still_blocked}, {entry_key: gate_reason},
4935
+ {entry_key: unreadable_reason})`` for every RE-EVALUABLE ``blocked``
4936
+ entry (#2230) — the counterpart of :func:`_fetch_live_ci_gate` above:
4937
+ same mechanism, same bound, a different queue state.
4938
+
4939
+ THE SECOND DICT (#3460) is *live_ci_gate*/*live_ci_gate_reason*'s own
4940
+ split, mirrored here: whatever reason text produced the first dict's
4941
+ bool — from a direct :func:`coord.merge_queue.entry_gate_status` read
4942
+ when a queue row exists, or from :func:`
4943
+ _evaluate_blocked_entry_without_a_queue_row` when none does — so a
4944
+ CONFIRMED still-shut reading is never reported gate-reason-less the way
4945
+ the #3460 incident's "unconfirmed probe failure" text was. Present for
4946
+ every key also present in the first dict (whichever way it reads);
4947
+ absent otherwise, exactly like its CI-gate sibling.
4825
4948
 
4826
4949
  THE GAP THIS CLOSES. `blocked` used to be terminal: once
4827
4950
  `_reconcile_running` exhausted an entry's attempts, nothing ever asked
@@ -4872,32 +4995,49 @@ def _fetch_live_blocked_gate(
4872
4995
  every such target is looked up again against the refreshed queue before
4873
4996
  this function concedes it has nothing.
4874
4997
 
4875
- #2806 VISIBILITY. `_fetch_live_ci_gate`'s sibling docstring, and this
4876
- one before #2806, both describe "a key ABSENT" as if it were one thing —
4877
- it is actually at least four (no queue row even after the self-heal
4878
- above, no PR number yet, `entry_gate_status` raising, or the whole
4879
- fetch failing closed before any entry is even tried) and NONE of them
4880
- used to be logged anywhere, so a run of them looked, from the tick's own
4881
- output, identical to the gate genuinely still being shut. Every one is
4882
- now (a) logged here, so `journalctl` names the actual cause instead of
4883
- silence, and (b) surfaced in the second returned dict, keyed by entry,
4884
- with a short human-readable reason — :func:`coord.drive_queue.
4885
- _reconcile_blocked_unreadable` turns a present key there into a
4886
- distinct, operator-visible "could not read this gate" outcome instead
4887
- of folding it into "still shut" the way an absent key from the FIRST
4888
- dict alone always has and still does (see that function's docstring for
4889
- why the two must never render identically).
4998
+ #2806/#3460 VISIBILITY. `_fetch_live_ci_gate`'s sibling docstring, and
4999
+ this one before #2806, both described "a key ABSENT" as if it were one
5000
+ thing — it is actually several (no work row at all behind a missing
5001
+ queue row, that row's own evaluation raising, a queue row whose CI
5002
+ can't be confirmed without a PR, `entry_gate_status` raising, or the
5003
+ whole fetch failing closed before any entry is even tried) and NONE of
5004
+ them used to be logged anywhere, so a run of them looked, from the
5005
+ tick's own output, identical to the gate genuinely still being shut.
5006
+ Every one is now (a) logged here, so `journalctl` names the actual
5007
+ cause instead of silence, and (b) surfaced in the THIRD returned dict,
5008
+ keyed by entry, with a short human-readable reason — :func:`coord.
5009
+ drive_queue._reconcile_blocked_unreadable` turns a present key there
5010
+ into a distinct, operator-visible "could not read this gate" outcome
5011
+ instead of folding it into "still shut" the way an absent key from the
5012
+ FIRST dict alone always has and still does (see that function's
5013
+ docstring for why the two must never render identically).
5014
+
5015
+ #3460's fix is entirely about SHRINKING this third dict's population in
5016
+ favour of the first two: the #3460 incident (quadraui#1081) was exactly
5017
+ a confirmed-still-shut gate — review request-changes outstanding, Test
5018
+ failed — reported as "unreadable" purely because ``enqueue_approved_
5019
+ work``'s #2806 self-heal above can never produce a queue row for a work
5020
+ row that fails the review/smoke gates (that self-heal enqueues ONLY
5021
+ gate-clear work — `coord/merge_queue.py:4973`), and a queue row without
5022
+ a PR number used to be conceded unreadable outright even though every
5023
+ gate but CI is answerable without one. Both shapes now get a direct
5024
+ evaluation first (:func:`_evaluate_blocked_entry_without_a_queue_row`
5025
+ for the former; a direct :func:`coord.merge_queue.entry_gate_status`
5026
+ call for the latter, since that function only *skips* its CI/epic-
5027
+ keyword checks without a PR — #1150 — it doesn't refuse to run without
5028
+ one) — "unreadable" is now reserved for when that evaluation itself
5029
+ finds genuinely nothing, or raises.
4890
5030
 
4891
5031
  Same fail-open-per-entry, fail-closed-overall contract as
4892
5032
  `_fetch_live_ci_gate` otherwise: a key ABSENT from the FIRST dict (no
4893
- queue row, no PR yet, a `ci_store` that failed to build, any exception)
4894
- leaves that entry to `plan_tick`'s cheap board-only fallback
4895
- (`IssueFacts.merge_gate_status`, populated for free on a thin client's
4896
- live `/board`) — which on the daemon-host tick (the only host this
4897
- actually runs on, `docs/DRIVE_QUEUE.md` §2) has no `merge_plan` section
4898
- to read at all, so an absent key there means "no evidence, stays
4899
- blocked, but distinctly reported as unreadable when the second dict
4900
- says why" (`_reconcile_blocked` never guesses at a gate reading).
5033
+ work row behind a missing queue row, a `ci_store` that failed to build,
5034
+ any exception) leaves that entry to `plan_tick`'s cheap board-only
5035
+ fallback (`IssueFacts.merge_gate_status`, populated for free on a thin
5036
+ client's live `/board`) — which on the daemon-host tick (the only host
5037
+ this actually runs on, `docs/DRIVE_QUEUE.md` §2) has no `merge_plan`
5038
+ section to read at all, so an absent key there means "no evidence,
5039
+ stays blocked, but distinctly reported as unreadable when the third
5040
+ dict says why" (`_reconcile_blocked` never guesses at a gate reading).
4901
5041
  """
4902
5042
  targets = [
4903
5043
  e for e in entries
@@ -4905,12 +5045,12 @@ def _fetch_live_blocked_gate(
4905
5045
  and not is_permanent_block_reason(getattr(e, "last_reason", "") or "")
4906
5046
  ]
4907
5047
  if not targets:
4908
- return {}, {}
5048
+ return {}, {}, {}
4909
5049
 
4910
5050
  from coord.board_service import resolve as resolve_board_service # noqa: PLC0415
4911
5051
 
4912
5052
  if resolve_board_service() is not None:
4913
- return {}, {}
5053
+ return {}, {}, {}
4914
5054
 
4915
5055
  try:
4916
5056
  from coord import github_ops as _gh_ops # noqa: PLC0415
@@ -4932,7 +5072,7 @@ def _fetch_live_blocked_gate(
4932
5072
  "back to the board-only reading, unreadable: %r",
4933
5073
  len(targets), "y" if len(targets) == 1 else "ies", exc,
4934
5074
  )
4935
- return {}, {}
5075
+ return {}, {}, {}
4936
5076
 
4937
5077
  # #2806 self-heal: mirror `coord merge --only`'s #1845 fix — a target
4938
5078
  # with no queue row yet may simply not have been enqueued by
@@ -4950,10 +5090,38 @@ def _fetch_live_blocked_gate(
4950
5090
  )
4951
5091
 
4952
5092
  overrides: dict[str, bool] = {}
5093
+ reasons: dict[str, str] = {}
4953
5094
  unreadable: dict[str, str] = {}
4954
5095
  for e in targets:
4955
5096
  q = queue_by_key.get(e.key)
4956
5097
  if q is None:
5098
+ # #3460: the self-heal above never produces a row for a work row
5099
+ # that fails the review/smoke gates (`enqueue_approved_work`
5100
+ # only enqueues gate-clear work) — exactly the shape this sweep
5101
+ # most needs to confirm. Evaluate the branch's winning work row
5102
+ # directly before conceding "unreadable".
5103
+ resolved = None
5104
+ if not is_pre_dispatch_block_reason(getattr(e, "last_reason", "") or ""):
5105
+ try:
5106
+ resolved = _evaluate_blocked_entry_without_a_queue_row(
5107
+ e, board, cfg, _gh_ops
5108
+ )
5109
+ except Exception as exc: # noqa: BLE001 — falls to "unreadable" below
5110
+ log.warning(
5111
+ "blocked-gate sweep (#3460): %s — evaluating the "
5112
+ "winning work row directly raised: %r", e.key, exc,
5113
+ )
5114
+ resolved = None
5115
+ if resolved is not None:
5116
+ shut, reason = resolved
5117
+ overrides[e.key] = shut
5118
+ reasons[e.key] = reason
5119
+ log.info(
5120
+ "blocked-gate sweep (#3460): %s — no merge-queue row, "
5121
+ "but its winning work row evaluates directly: %s",
5122
+ e.key, reason,
5123
+ )
5124
+ continue
4957
5125
  reason = "no merge-queue row for this entry, even after the self-heal enqueue attempt"
4958
5126
  # #2589/#2635: a genuinely pre-dispatch cause (no branch/PR was
4959
5127
  # EVER created) will never have a merge-queue row, forever — that
@@ -4971,20 +5139,36 @@ def _fetch_live_blocked_gate(
4971
5139
  unreadable[e.key] = reason
4972
5140
  log.warning("blocked-gate sweep (#2806): %s — %s", e.key, reason)
4973
5141
  continue
4974
- if not q.pr_number:
4975
- reason = "merge-queue row has no PR number yet"
4976
- unreadable[e.key] = reason
4977
- log.warning("blocked-gate sweep (#2806): %s — %s", e.key, reason)
4978
- continue
4979
5142
  try:
4980
- status, _reason = _mq.entry_gate_status(q, board, cfg, ci_store, _gh_ops)
5143
+ status, gate_reason = _mq.entry_gate_status(q, board, cfg, ci_store, _gh_ops)
4981
5144
  except Exception as exc: # noqa: BLE001 — leave this one entry to the fallback
4982
5145
  reason = f"entry_gate_status raised: {exc!r}"
4983
5146
  unreadable[e.key] = reason
4984
5147
  log.warning("blocked-gate sweep (#2806): %s — %s", e.key, reason)
4985
5148
  continue
4986
- overrides[e.key] = status != _mq.PLAN_READY
4987
- return overrides, unreadable
5149
+ if status == _mq.PLAN_BLOCKED:
5150
+ # #3460: confirmed still shut regardless of whether *q* carries
5151
+ # a PR yet — `entry_gate_status` only *skips* its CI/epic-
5152
+ # keyword checks without one (#1150: CI is checked per-PR), it
5153
+ # never refuses to evaluate the review/smoke/uat gates that
5154
+ # already produced this BLOCKED verdict.
5155
+ overrides[e.key] = True
5156
+ if gate_reason:
5157
+ reasons[e.key] = gate_reason
5158
+ continue
5159
+ # status == PLAN_READY. Confirmed clear only when a PR exists to
5160
+ # confirm CI against — without one, "ready" only means "every gate
5161
+ # this call could check without a PR is clear", which is NOT the
5162
+ # same claim `_blocked_gate_reading`'s `False` makes to the resume
5163
+ # path (#1150 applies to `enqueue_approved_work`'s own enqueue
5164
+ # decision, not to promising a live merge would succeed).
5165
+ if not q.pr_number:
5166
+ reason = "merge-queue row has no PR number yet (CI unverifiable without a PR)"
5167
+ unreadable[e.key] = reason
5168
+ log.warning("blocked-gate sweep (#2806): %s — %s", e.key, reason)
5169
+ continue
5170
+ overrides[e.key] = False
5171
+ return overrides, reasons, unreadable
4988
5172
 
4989
5173
 
4990
5174
  def _fetch_live_prereq_terminal(
@@ -6556,8 +6740,8 @@ def drive_queue_tick(
6556
6740
  # entries — see `_fetch_live_blocked_gate`'s docstring for the gap
6557
6741
  # this closes (quadraui#309 sat `blocked` ~11h on a merge that was
6558
6742
  # landable for most of that window, and nothing ever looked again).
6559
- live_blocked_gate, live_blocked_unreadable = _fetch_live_blocked_gate(
6560
- entries, config_path
6743
+ live_blocked_gate, live_blocked_gate_reason, live_blocked_unreadable = (
6744
+ _fetch_live_blocked_gate(entries, config_path)
6561
6745
  )
6562
6746
 
6563
6747
  # #2350: for every entry the two live re-checks above just found
@@ -6618,6 +6802,7 @@ def drive_queue_tick(
6618
6802
  live_ci_gate=live_ci_gate,
6619
6803
  live_ci_gate_reason=live_ci_gate_reason,
6620
6804
  live_blocked_gate=live_blocked_gate,
6805
+ live_blocked_gate_reason=live_blocked_gate_reason,
6621
6806
  live_blocked_unreadable=live_blocked_unreadable,
6622
6807
  editable_drift=editable_drift,
6623
6808
  merge_only_ready=merge_only_ready,
@@ -1058,7 +1058,14 @@ def retry_on_locked(
1058
1058
  # first place" (a quadraui-style merge into a non-default branch) — both
1059
1059
  # read identically as `merged=True, issue_state="open"` otherwise. See
1060
1060
  # `coord.drive_queue.IssueFacts.landed`'s docstring.
1061
- _DB_SCHEMA_VERSION = 19
1061
+ #
1062
+ # #3463: bumped 19 -> 20 for the new `drive_queue.legs_at_enqueue` column
1063
+ # appended to `_MIGRATE_ADD_COLUMNS` below — the all-time WORK_LIKE leg
1064
+ # count a row saw at `enqueue_drive_queue` time, so `remaining_fix_rounds`
1065
+ # can measure a row's own spend from ITS baseline rather than every
1066
+ # predecessor row's lifetime total. See `coord.drive_queue.QueueEntry.
1067
+ # legs_at_enqueue`.
1068
+ _DB_SCHEMA_VERSION = 20
1062
1069
 
1063
1070
 
1064
1071
  def _read_schema_version(conn: sqlite3.Connection) -> int:
@@ -1592,6 +1599,24 @@ _SCHEMA_SQL = """
1592
1599
  -- point-in-time observation" discipline #2133's reason_at
1593
1600
  -- established for last_reason. NULL until a verdict is recorded.
1594
1601
  apply_verdict_at REAL,
1602
+ -- #3463: the all-time WORK_LIKE leg count (coord.state.
1603
+ -- leg_counts()'s per-issue figure) THIS ROW saw at the moment it
1604
+ -- was declared by `enqueue_drive_queue` — the baseline
1605
+ -- `coord.drive_queue.remaining_fix_rounds` subtracts off before
1606
+ -- comparing against `max_fix_rounds`, so a row's own spend is
1607
+ -- "legs since THIS row was enqueued", not "legs this issue has
1608
+ -- ever had across every predecessor row". Re-stamped on every
1609
+ -- `enqueue_drive_queue` call (insert OR update-in-place), which
1610
+ -- is what makes an explicit `remove` + `add` actually hand out a
1611
+ -- fresh budget as the #3454 ceiling message promises, while
1612
+ -- leaving the #2972 "no fresh budget from a bare relaunch"
1613
+ -- guarantee untouched — a relaunch never calls
1614
+ -- `enqueue_drive_queue` at all, only `update_drive_queue_entry`.
1615
+ -- 0 (NOT NULL) for every row predating this column: subtracting
1616
+ -- 0 reproduces the pre-#3463 `work_leg_count - 1` formula
1617
+ -- exactly, so an existing row's already-computed remaining
1618
+ -- budget does not change under this migration.
1619
+ legs_at_enqueue INTEGER NOT NULL DEFAULT 0,
1595
1620
  UNIQUE(repo_name, issue_number)
1596
1621
  );
1597
1622
 
@@ -2510,6 +2535,13 @@ _MIGRATE_ADD_COLUMNS: list[str] = [
2510
2535
  # auto-close the linked issue at all — both look identical as
2511
2536
  # `merged=True, issue_state="open"` without it.
2512
2537
  "ALTER TABLE issues ADD COLUMN state_reason TEXT NOT NULL DEFAULT ''",
2538
+ # #3463: see the CREATE TABLE comment above — the all-time WORK_LIKE leg
2539
+ # count a row saw at `enqueue_drive_queue` time, so a re-added row's fix
2540
+ # budget is measured from ITS OWN baseline rather than every
2541
+ # predecessor's lifetime spend. 0 for every row predating this
2542
+ # migration, which reproduces the pre-#3463 `work_leg_count - 1` formula
2543
+ # unchanged for that row.
2544
+ "ALTER TABLE drive_queue ADD COLUMN legs_at_enqueue INTEGER NOT NULL DEFAULT 0",
2513
2545
  ]
2514
2546
 
2515
2547