code-coordinator 0.5.495__tar.gz → 0.5.496__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 (899) hide show
  1. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/code_coordinator.egg-info/SOURCES.txt +1 -0
  4. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/code_coordinator.egg-info/scm_file_list.json +1 -0
  5. code_coordinator-0.5.496/code_coordinator.egg-info/scm_version.json +8 -0
  6. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/drive_queue.py +90 -19
  7. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/config.py +29 -0
  8. {code_coordinator-0.5.495 → code_coordinator-0.5.496/coord}/deploy/coord-drive-queue.service +45 -33
  9. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/drive_queue.py +58 -0
  10. {code_coordinator-0.5.495/coord → code_coordinator-0.5.496}/deploy/coord-drive-queue.service +45 -33
  11. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_drive_queue.py +8 -1
  12. code_coordinator-0.5.496/tests/test_drive_queue_max_parallel_config.py +371 -0
  13. code_coordinator-0.5.495/code_coordinator.egg-info/scm_version.json +0 -8
  14. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/.claude/commands/board.md +0 -0
  15. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/.claude/commands/complete-session.md +0 -0
  16. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/.claude/commands/coordinator.md +0 -0
  17. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/.githooks/_lib.sh +0 -0
  18. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/.githooks/post-checkout +0 -0
  19. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/.githooks/post-commit +0 -0
  20. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/.githooks/post-merge +0 -0
  21. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  22. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/.github/coord-ci-acceptance.yml +0 -0
  23. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/.github/workflows/auto-release.yml +0 -0
  24. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/.github/workflows/publish.yml +0 -0
  25. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/.github/workflows/test.yml +0 -0
  26. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/.gitignore +0 -0
  27. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/CLAUDE.md +0 -0
  28. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/GOAL.md +0 -0
  29. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/LICENSE +0 -0
  30. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/MANIFEST.in +0 -0
  31. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/README.md +0 -0
  32. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/code_coordinator.egg-info/dependency_links.txt +0 -0
  33. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/code_coordinator.egg-info/entry_points.txt +0 -0
  34. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/code_coordinator.egg-info/requires.txt +0 -0
  35. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/code_coordinator.egg-info/top_level.txt +0 -0
  36. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/__init__.py +0 -0
  37. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/_board_mapping.py +0 -0
  38. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/acceptance.py +0 -0
  39. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/acceptance_drivers.py +0 -0
  40. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/agent.py +0 -0
  41. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/agent_app.py +0 -0
  42. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/agent_update.py +0 -0
  43. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/agents/opencode/.gitignore +0 -0
  44. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/agents/opencode/agents/work.md +0 -0
  45. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/agents/opencode/routing.jsonc +0 -0
  46. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/approved_work.py +0 -0
  47. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/audit.py +0 -0
  48. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/auto_loop.py +0 -0
  49. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/backup.py +0 -0
  50. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/block_log.py +0 -0
  51. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/board_schema.py +0 -0
  52. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/board_service.py +0 -0
  53. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/board_wire.py +0 -0
  54. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/brain.py +0 -0
  55. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/branch_model.py +0 -0
  56. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/bug_intake.py +0 -0
  57. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/cargo_cache.py +0 -0
  58. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/ci_fix.py +0 -0
  59. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/ci_github.py +0 -0
  60. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/ci_gitlab.py +0 -0
  61. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/ci_store.py +0 -0
  62. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/claim.py +0 -0
  63. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/claude_setup_token.py +0 -0
  64. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/cli.py +0 -0
  65. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/client.py +0 -0
  66. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/codegen.py +0 -0
  67. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/__init__.py +0 -0
  68. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/_common.py +0 -0
  69. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/acceptance.py +0 -0
  70. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/agent_ops.py +0 -0
  71. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/audit.py +0 -0
  72. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/backup.py +0 -0
  73. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/chat.py +0 -0
  74. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/codegen.py +0 -0
  75. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/dispatch.py +0 -0
  76. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/dispatch_workers.py +0 -0
  77. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/dr.py +0 -0
  78. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/drive.py +0 -0
  79. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/gate_a.py +0 -0
  80. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/gates.py +0 -0
  81. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/issues.py +0 -0
  82. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/lifecycle.py +0 -0
  83. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/machine.py +0 -0
  84. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/merge.py +0 -0
  85. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/milestone.py +0 -0
  86. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/plan_followup.py +0 -0
  87. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/plans.py +0 -0
  88. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/portal.py +0 -0
  89. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/pr.py +0 -0
  90. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/release.py +0 -0
  91. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/repo.py +0 -0
  92. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/report.py +0 -0
  93. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/review.py +0 -0
  94. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/scorecard.py +0 -0
  95. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/sessions.py +0 -0
  96. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/setup.py +0 -0
  97. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/status.py +0 -0
  98. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/store_migrate.py +0 -0
  99. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/terminal.py +0 -0
  100. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/test_gate.py +0 -0
  101. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/commands/tui.py +0 -0
  102. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/comments.py +0 -0
  103. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/config_reload.py +0 -0
  104. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/confirm_test.py +0 -0
  105. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/conflict_fix.py +0 -0
  106. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/dao.py +0 -0
  107. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/dashboard/__init__.py +0 -0
  108. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/dashboard/fixture.py +0 -0
  109. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/dashboard/index.html +0 -0
  110. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/dashboard/server.py +0 -0
  111. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/dashboard/terminal.py +0 -0
  112. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/db.py +0 -0
  113. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/dead_end.py +0 -0
  114. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/decomposition_chat.py +0 -0
  115. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/README.md +0 -0
  116. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-agent.service +0 -0
  117. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-backup.service +0 -0
  118. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-backup.timer +0 -0
  119. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-db-backup.service +0 -0
  120. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-db-backup.sh +0 -0
  121. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-db-backup.timer +0 -0
  122. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-dr-verify.service +0 -0
  123. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-dr-verify.timer +0 -0
  124. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-drive-queue.timer +0 -0
  125. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-failure-notify.service +0 -0
  126. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-fleet-watchdog.service +0 -0
  127. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  128. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-notify.service +0 -0
  129. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-notify.timer +0 -0
  130. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-release-propagate.service +0 -0
  131. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-release-propagate.timer +0 -0
  132. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-release-window.service +0 -0
  133. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-release-window.timer +0 -0
  134. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-serve.service +0 -0
  135. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-web-dist-build.service +0 -0
  136. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-web-dist-build.timer +0 -0
  137. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy/coord-web.service +0 -0
  138. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy_manifest.py +0 -0
  139. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deploy_units.py +0 -0
  140. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deprecation_telemetry.py +0 -0
  141. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/deps.py +0 -0
  142. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/diagnose.py +0 -0
  143. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/dispatch.py +0 -0
  144. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/dispatch_liveness.py +0 -0
  145. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/dist_name.py +0 -0
  146. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/dr_promote.py +0 -0
  147. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/dr_verify.py +0 -0
  148. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/drive.py +0 -0
  149. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/drive_state.py +0 -0
  150. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/events.py +0 -0
  151. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/failure_class.py +0 -0
  152. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/failure_classifier.py +0 -0
  153. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/filelock.py +0 -0
  154. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/fleet_config_health.py +0 -0
  155. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/forge_availability.py +0 -0
  156. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/freshness.py +0 -0
  157. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/gate_a.py +0 -0
  158. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/gate_b.py +0 -0
  159. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/gate_snapshot.py +0 -0
  160. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/gates.py +0 -0
  161. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/gen_board_fixture.py +0 -0
  162. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/github_ops.py +0 -0
  163. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/github_throttle.py +0 -0
  164. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/goal.py +0 -0
  165. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/graph_health.py +0 -0
  166. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/__init__.py +0 -0
  167. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/aggregate.py +0 -0
  168. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/__init__.py +0 -0
  169. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/_ci_pin.py +0 -0
  170. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/agent_install.py +0 -0
  171. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/cargo_targets.py +0 -0
  172. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/claude_binary.py +0 -0
  173. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/config_drift.py +0 -0
  174. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  175. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/coord_web_ci_pin.py +0 -0
  176. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/deploy_lane_facts.py +0 -0
  177. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/disk.py +0 -0
  178. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/fleet_board.py +0 -0
  179. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  180. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/fleet_phantom.py +0 -0
  181. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/fleet_unit_drift.py +0 -0
  182. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/graph.py +0 -0
  183. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/graphify_cli.py +0 -0
  184. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/index_lock.py +0 -0
  185. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/issues_sync_staleness.py +0 -0
  186. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/plan_usage.py +0 -0
  187. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/pr_churn.py +0 -0
  188. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/release_cordon.py +0 -0
  189. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/repo_state.py +0 -0
  190. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/spawned_coord.py +0 -0
  191. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/stalled_pipeline.py +0 -0
  192. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/timer_active.py +0 -0
  193. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/toolchain.py +0 -0
  194. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/unit_drift.py +0 -0
  195. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/unit_enablement.py +0 -0
  196. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/wedged_drive_queue.py +0 -0
  197. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/checks/worktrees.py +0 -0
  198. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/cli.py +0 -0
  199. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/context.py +0 -0
  200. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/fleet_snapshot.py +0 -0
  201. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/models.py +0 -0
  202. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/pypi.py +0 -0
  203. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/registry.py +0 -0
  204. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/render.py +0 -0
  205. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/health/units.py +0 -0
  206. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/hooks.py +0 -0
  207. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/housekeeping.py +0 -0
  208. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/interactive.py +0 -0
  209. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/invariant_alarms.py +0 -0
  210. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/issue_store.py +0 -0
  211. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/issues_sync_status.py +0 -0
  212. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/liveness_auditor.py +0 -0
  213. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/machine_fault.py +0 -0
  214. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/machine_metrics.py +0 -0
  215. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/machine_onboard.py +0 -0
  216. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/machine_pause.py +0 -0
  217. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/machine_stats.py +0 -0
  218. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/merge_queue.py +0 -0
  219. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/milestone_chat.py +0 -0
  220. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/milestone_dispatch.py +0 -0
  221. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/milestone_gate.py +0 -0
  222. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/milestone_order.py +0 -0
  223. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/mock_author.py +0 -0
  224. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/models.py +0 -0
  225. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/network.py +0 -0
  226. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/new_issue_chat.py +0 -0
  227. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/notifier/__init__.py +0 -0
  228. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/notifier/baseline.py +0 -0
  229. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/notifier/cli.py +0 -0
  230. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/notifier/collect.py +0 -0
  231. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/notifier/digest.py +0 -0
  232. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/notifier/models.py +0 -0
  233. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/notifier/predicate.py +0 -0
  234. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/notifier/service.py +0 -0
  235. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/notifier/store.py +0 -0
  236. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/notifier/transport.py +0 -0
  237. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/notify.py +0 -0
  238. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/openapi.py +0 -0
  239. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/overlap_fence.py +0 -0
  240. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/overlap_predict.py +0 -0
  241. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/parentage.py +0 -0
  242. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/parentage_github.py +0 -0
  243. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/pipeline.py +0 -0
  244. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/plan_parser.py +0 -0
  245. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/plans.py +0 -0
  246. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/platform_paths.py +0 -0
  247. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/portal_bridge.py +0 -0
  248. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/portal_store.py +0 -0
  249. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/portal_sync.py +0 -0
  250. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/pr_body_lint.py +0 -0
  251. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/prereqs.py +0 -0
  252. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/progress.py +0 -0
  253. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/providers/__init__.py +0 -0
  254. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/providers/base.py +0 -0
  255. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/providers/claude.py +0 -0
  256. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/providers/claude_pty.py +0 -0
  257. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/providers/opencode.py +0 -0
  258. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/queue_diagnose.py +0 -0
  259. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/reconcile.py +0 -0
  260. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/reconcile_tick.py +0 -0
  261. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/refine_chat.py +0 -0
  262. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/release_cordon.py +0 -0
  263. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/release_propagate.py +0 -0
  264. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/release_verify.py +0 -0
  265. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/release_window.py +0 -0
  266. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/repo_dormancy.py +0 -0
  267. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/repo_edit.py +0 -0
  268. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/repo_onboard.py +0 -0
  269. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/reports.py +0 -0
  270. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/rest_schema.py +0 -0
  271. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/revalidate.py +0 -0
  272. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/review.py +0 -0
  273. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/scorecard.py +0 -0
  274. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/self_health.py +0 -0
  275. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/serve_app.py +0 -0
  276. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  277. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  278. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  279. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  280. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  281. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/skills/portal-followup/SKILL.md +0 -0
  282. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/skills/release-now/SKILL.md +0 -0
  283. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  284. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  285. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/skills/update-issue/SKILL.md +0 -0
  286. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/smoke.py +0 -0
  287. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/spend_ceiling.py +0 -0
  288. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/split_work.py +0 -0
  289. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/sql.py +0 -0
  290. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/stage_projection.py +0 -0
  291. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/state.py +0 -0
  292. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/store_migrate.py +0 -0
  293. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/store_parity.py +0 -0
  294. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/templates/deploy-cloudflare.node.yml +0 -0
  295. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/test_author.py +0 -0
  296. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/test_chat.py +0 -0
  297. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/test_orchestrator.py +0 -0
  298. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/test_report.py +0 -0
  299. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/tui_release.py +0 -0
  300. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/uat_checks.py +0 -0
  301. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/usage.py +0 -0
  302. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/usage_limits.py +0 -0
  303. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/usage_rollup.py +0 -0
  304. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coord/worker_events.py +0 -0
  305. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/coordinator.example.yml +0 -0
  306. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-agent.service +0 -0
  307. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-backup.service +0 -0
  308. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-backup.timer +0 -0
  309. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-db-backup.service +0 -0
  310. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-db-backup.sh +0 -0
  311. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-db-backup.timer +0 -0
  312. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-dr-verify.service +0 -0
  313. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-dr-verify.timer +0 -0
  314. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-drive-queue.timer +0 -0
  315. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-failure-notify.service +0 -0
  316. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-failure-notify.sh +0 -0
  317. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-fleet-watchdog.service +0 -0
  318. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-fleet-watchdog.timer +0 -0
  319. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-notify.service +0 -0
  320. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-notify.timer +0 -0
  321. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-release-propagate.service +0 -0
  322. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-release-propagate.timer +0 -0
  323. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-release-window.service +0 -0
  324. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-release-window.timer +0 -0
  325. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-serve.service +0 -0
  326. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-web-dist-build.service +0 -0
  327. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-web-dist-build.sh +0 -0
  328. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-web-dist-build.timer +0 -0
  329. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-web-rollback.sh +0 -0
  330. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/coord-web.service +0 -0
  331. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/deploy/node-shim.sh +0 -0
  332. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/ADR_COORD_TUI_CI.md +0 -0
  333. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  334. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/ADR_COORD_WEB_CI.md +0 -0
  335. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/ADR_COORD_WEB_DIST.md +0 -0
  336. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  337. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/AGENT_OPERATIONS.md +0 -0
  338. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/ARCHITECTURE.md +0 -0
  339. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/ARCH_SECURITY_GATES.md +0 -0
  340. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/COCKPIT.md +0 -0
  341. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/CONTROL_CENTER.md +0 -0
  342. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/COST_DISCIPLINE.md +0 -0
  343. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/CROSS_PLATFORM.md +0 -0
  344. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/CUSTOMER_FACING_APPS.md +0 -0
  345. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/CUSTOMER_PORTAL.md +0 -0
  346. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/DATA_STORE_SELECTION.md +0 -0
  347. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/DISASTER_RECOVERY.md +0 -0
  348. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/DRIVE_QUEUE.md +0 -0
  349. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/EPHEMERAL_WORKERS.md +0 -0
  350. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/FORGE_MIGRATION.md +0 -0
  351. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/GRAPHIFY_SETUP.md +0 -0
  352. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/ISSUE_GUIDANCE.md +0 -0
  353. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/MAC_MINI.md +0 -0
  354. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  355. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/NOTIFIER.md +0 -0
  356. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/OPENCODE_VERIFICATION.md +0 -0
  357. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/OPERATING_GOTCHAS.md +0 -0
  358. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/OPERATOR_GUIDES.md +0 -0
  359. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/ORACLE_LOOP.md +0 -0
  360. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/PHONE_WEBAPP.md +0 -0
  361. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/PIPELINE_V2.md +0 -0
  362. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/PLATFORM_EVOLUTION.md +0 -0
  363. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/SECOND_BACKEND.md +0 -0
  364. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/STORE_SERVICE.md +0 -0
  365. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  366. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/WEB_CONTROL_CENTER.md +0 -0
  367. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/WSL_WINDOWS_WORKER.md +0 -0
  368. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/mocks/web/README.md +0 -0
  369. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/mocks/web/_tokens.css +0 -0
  370. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/mocks/web/issue-detail.html +0 -0
  371. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/mocks/web/pipeline-narrow.html +0 -0
  372. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/docs/mocks/web/pipeline-wide.html +0 -0
  373. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/graphify-out/.gitignore +0 -0
  374. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/install-agent.sh +0 -0
  375. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/pyproject.toml +0 -0
  376. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/audit_review_verdict_overrides.py +0 -0
  377. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  378. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/azure-workers/build-worker-image.sh +0 -0
  379. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/azure-workers/coordinator-machine.py +0 -0
  380. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/azure-workers/dr-down.sh +0 -0
  381. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/azure-workers/dr-up.sh +0 -0
  382. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/azure-workers/epic-down.sh +0 -0
  383. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/azure-workers/epic-up.sh +0 -0
  384. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/azure-workers/preflight.sh +0 -0
  385. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/azure-workers/provision-server.sh +0 -0
  386. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/azure-workers/provision-worker.sh +0 -0
  387. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  388. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  389. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/azure-workers/throwaway-vm.sh +0 -0
  390. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/azure-workers/verify-github-token.sh +0 -0
  391. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/check_gh_argv_containment.py +0 -0
  392. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/codegen.py +0 -0
  393. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/coord-test-runner.sh +0 -0
  394. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  395. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  396. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  397. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  398. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/coord-venv-rollback.sh +0 -0
  399. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/drive-batch.sh +0 -0
  400. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/extract-coord-tui.sh +0 -0
  401. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/fleet_watchdog.py +0 -0
  402. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/gen_board_fixture.py +0 -0
  403. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/gen_mock_index.py +0 -0
  404. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/lib/provision-core.sh +0 -0
  405. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/next_release_tag.py +0 -0
  406. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/provision-machine.sh +0 -0
  407. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/run_tests_in_populated_home.sh +0 -0
  408. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/run_tests_without_gh.sh +0 -0
  409. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/setup-macmini.sh +0 -0
  410. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/smoke_437_interactive.py +0 -0
  411. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/verify-provision-noble.sh +0 -0
  412. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/verify_878_review_capture.py +0 -0
  413. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/verify_release_published.py +0 -0
  414. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/scripts/verify_release_wheel.py +0 -0
  415. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/setup.cfg +0 -0
  416. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/SMOKE_SET.md +0 -0
  417. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/__init__.py +0 -0
  418. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/acceptance/ms-37/conftest.py +0 -0
  419. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/acceptance/ms-37/contract.md +0 -0
  420. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/acceptance/ms-37/manifest.yml +0 -0
  421. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  422. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  423. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/acceptance/ms-51/contract.md +0 -0
  424. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  425. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  426. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/acceptance/ms-51/manifest.yml +0 -0
  427. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  428. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/acceptance/ms-51/tsconfig.json +0 -0
  429. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  430. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/backends.py +0 -0
  431. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/conftest.py +0 -0
  432. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/board-pipeline-basic.json +0 -0
  433. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  434. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  435. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  436. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  437. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/playwright/all_pass.json +0 -0
  438. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  439. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/playwright/mixed_fail.json +0 -0
  440. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  441. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  442. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/playwright/skip.json +0 -0
  443. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/playwright/truncated.json +0 -0
  444. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  445. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  446. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  447. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  448. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  449. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  450. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  451. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  452. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_acceptance.py +0 -0
  453. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_acceptance_drivers.py +0 -0
  454. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent.py +0 -0
  455. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_api_error.py +0 -0
  456. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_app.py +0 -0
  457. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_branch_base.py +0 -0
  458. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_branch_capture.py +0 -0
  459. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_config_free_1712.py +0 -0
  460. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_deploy_units_endpoint.py +0 -0
  461. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_dirty_worktree.py +0 -0
  462. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  463. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_graph_self_heal.py +0 -0
  464. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_health_h3.py +0 -0
  465. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_idle_restart.py +0 -0
  466. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_push_failure.py +0 -0
  467. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_reap.py +0 -0
  468. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_repos_and_pull.py +0 -0
  469. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_restart_services_endpoint.py +0 -0
  470. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_skills_self_heal.py +0 -0
  471. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_startup_diagnostics.py +0 -0
  472. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_update.py +0 -0
  473. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_update_bluegreen.py +0 -0
  474. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_usage_limit.py +0 -0
  475. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_agent_zero_commit.py +0 -0
  476. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_ambient_home_isolation.py +0 -0
  477. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_approve_capability_reroute_3241.py +0 -0
  478. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_approve_dependency_busy_2804.py +0 -0
  479. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_approve_reject_plan.py +0 -0
  480. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_approve_usage_gate.py +0 -0
  481. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_approved_work_2532.py +0 -0
  482. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_approved_work_2996.py +0 -0
  483. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_assignment_already_recorded_daemon.py +0 -0
  484. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_audit_log.py +0 -0
  485. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_audit_outcome.py +0 -0
  486. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_audit_query.py +0 -0
  487. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_auto_loop.py +0 -0
  488. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_auto_release_publish_2035.py +0 -0
  489. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_backend_selection.py +0 -0
  490. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_backup.py +0 -0
  491. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_base_checkout_restore.py +0 -0
  492. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_block_log.py +0 -0
  493. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_board_cap_762.py +0 -0
  494. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_board_fixture.py +0 -0
  495. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_board_read_path.py +0 -0
  496. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_board_schema.py +0 -0
  497. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_board_service.py +0 -0
  498. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_board_state.py +0 -0
  499. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_board_wire.py +0 -0
  500. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_brain.py +0 -0
  501. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_branch_model.py +0 -0
  502. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_bug_intake.py +0 -0
  503. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_build_worker_image_env_update.py +0 -0
  504. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cargo_cache.py +0 -0
  505. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_check_gh_argv_containment.py +0 -0
  506. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_ci_acceptance_gate_1950.py +0 -0
  507. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_ci_fix.py +0 -0
  508. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_ci_github.py +0 -0
  509. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_ci_gitlab.py +0 -0
  510. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_ci_parity_2091.py +0 -0
  511. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_ci_store.py +0 -0
  512. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_claim.py +0 -0
  513. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_claude_md_budget.py +0 -0
  514. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_claude_setup_token.py +0 -0
  515. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_acceptance.py +0 -0
  516. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_assign.py +0 -0
  517. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  518. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_assign_interactive_remote.py +0 -0
  519. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_assign_provider.py +0 -0
  520. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  521. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_audit.py +0 -0
  522. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_chat_continue.py +0 -0
  523. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_codegen.py +0 -0
  524. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_decide.py +0 -0
  525. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_diagnose_capability_rules.py +0 -0
  526. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_diagnose_config_provenance.py +0 -0
  527. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_diagnose_forge_availability.py +0 -0
  528. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_diagnose_graph.py +0 -0
  529. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_diagnose_self.py +0 -0
  530. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_diagnose_test_coverage.py +0 -0
  531. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_doctor.py +0 -0
  532. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_doctor_config_free_1801.py +0 -0
  533. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  534. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  535. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_drive.py +0 -0
  536. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_escalate.py +0 -0
  537. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_fix_headless_review.py +0 -0
  538. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_gate_a.py +0 -0
  539. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_install_drift.py +0 -0
  540. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_install_skills.py +0 -0
  541. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_issue_comment.py +0 -0
  542. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_issue_create_label.py +0 -0
  543. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_issue_reopen.py +0 -0
  544. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_issue_view_list.py +0 -0
  545. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_merge.py +0 -0
  546. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_milestone_assign.py +0 -0
  547. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_milestone_capture.py +0 -0
  548. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_milestone_chat_add_child.py +0 -0
  549. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_milestone_dispatch.py +0 -0
  550. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_milestone_gate_b.py +0 -0
  551. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_milestone_gate_c.py +0 -0
  552. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_milestone_order.py +0 -0
  553. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  554. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_milestone_ship.py +0 -0
  555. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_network.py +0 -0
  556. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_new_issue_chat.py +0 -0
  557. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_plans.py +0 -0
  558. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_portal.py +0 -0
  559. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_pr.py +0 -0
  560. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_pull_artifact.py +0 -0
  561. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_queue.py +0 -0
  562. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_reattach_sessions.py +0 -0
  563. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_refine_board.py +0 -0
  564. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_release_preflight.py +0 -0
  565. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_release_propagate.py +0 -0
  566. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_release_window.py +0 -0
  567. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_repo_2220.py +0 -0
  568. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  569. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_scorecard.py +0 -0
  570. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_serve_store_backend_3084.py +0 -0
  571. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_set_review_findings.py +0 -0
  572. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_status_advisory_terminal.py +0 -0
  573. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_status_contested_tag.py +0 -0
  574. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_status_invariant_alarms.py +0 -0
  575. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_status_machine_fault.py +0 -0
  576. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_status_merge_queue.py +0 -0
  577. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_status_provider.py +0 -0
  578. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_status_retried_3340.py +0 -0
  579. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_status_review_finalizing.py +0 -0
  580. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_status_test_failed_tag.py +0 -0
  581. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_status_usage_limit.py +0 -0
  582. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_sync_comments_873.py +0 -0
  583. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_test_plan.py +0 -0
  584. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_track.py +0 -0
  585. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_tui_update.py +0 -0
  586. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cli_wait.py +0 -0
  587. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_client.py +0 -0
  588. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_client_base_install.py +0 -0
  589. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_client_config_cache_atomic_3052.py +0 -0
  590. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_client_resource_migration_1946.py +0 -0
  591. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_commands_common.py +0 -0
  592. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_comments.py +0 -0
  593. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_completion_summary.py +0 -0
  594. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_config.py +0 -0
  595. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_config_acceptance.py +0 -0
  596. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_config_audit.py +0 -0
  597. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_config_drift_check.py +0 -0
  598. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_config_pricing.py +0 -0
  599. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  600. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_config_usage_gate.py +0 -0
  601. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_confirm_test.py +0 -0
  602. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_conflict_fix.py +0 -0
  603. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_conflict_fix_semantic.py +0 -0
  604. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  605. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_coord_test.py +0 -0
  606. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  607. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_coord_test_runner_baseline.py +0 -0
  608. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_coord_test_runner_populated_home.py +0 -0
  609. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_coord_test_runner_routing.py +0 -0
  610. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_coord_test_runner_toolchain.py +0 -0
  611. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_coord_uat.py +0 -0
  612. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_coord_web_sse_restart_live.py +0 -0
  613. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_coordinator_machine.py +0 -0
  614. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_cross_platform_imports.py +0 -0
  615. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dao.py +0 -0
  616. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dashboard.py +0 -0
  617. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dashboard_api.py +0 -0
  618. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dashboard_fixture.py +0 -0
  619. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dashboard_server.py +0 -0
  620. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dashboard_terminal.py +0 -0
  621. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dashboard_terminal_live.py +0 -0
  622. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_db.py +0 -0
  623. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dead_end.py +0 -0
  624. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_decomposition_chat.py +0 -0
  625. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_deploy_coord_db_backup.py +0 -0
  626. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_deploy_coord_web_dist.py +0 -0
  627. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_deploy_coord_web_rollback.py +0 -0
  628. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_deploy_db_backup_unit.py +0 -0
  629. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_deploy_drive_queue_unit.py +0 -0
  630. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_deploy_failure_notify_unit.py +0 -0
  631. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_deploy_manifest.py +0 -0
  632. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_deploy_notify_unit.py +0 -0
  633. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_deploy_units_lane.py +0 -0
  634. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_deploy_web_unit.py +0 -0
  635. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_deprecation_telemetry.py +0 -0
  636. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_deps.py +0 -0
  637. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_diagnose.py +0 -0
  638. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dispatch.py +0 -0
  639. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dispatch_liveness.py +0 -0
  640. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dispatch_target_validation.py +0 -0
  641. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dispatch_workers.py +0 -0
  642. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dist_name.py +0 -0
  643. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_done_housekeeping.py +0 -0
  644. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dr_azure_scripts.py +0 -0
  645. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dr_promote.py +0 -0
  646. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_dr_verify.py +0 -0
  647. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_drive.py +0 -0
  648. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_drive_machine_fault.py +0 -0
  649. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_drive_queue.py +0 -0
  650. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_drive_queue_blocked_rendering.py +0 -0
  651. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_drive_queue_launch_argv.py +0 -0
  652. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  653. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_drive_queue_roll_pending.py +0 -0
  654. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  655. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_drive_state.py +0 -0
  656. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_drive_tmux.py +0 -0
  657. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_epic_up_capability_detection.py +0 -0
  658. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  659. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_epic_up_image_provenance.py +0 -0
  660. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_errors.py +0 -0
  661. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_events.py +0 -0
  662. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_failure_class.py +0 -0
  663. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_failure_classifier.py +0 -0
  664. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_filelock.py +0 -0
  665. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  666. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_fix_escalation_classifier.py +0 -0
  667. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_fix_of_force_override.py +0 -0
  668. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_fleet_config_health.py +0 -0
  669. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_fleet_health_probes.py +0 -0
  670. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_fleet_health_snapshot.py +0 -0
  671. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_fleet_watchdog.py +0 -0
  672. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_forge_availability.py +0 -0
  673. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_freshness.py +0 -0
  674. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_gate_a.py +0 -0
  675. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_gate_b.py +0 -0
  676. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_gate_snapshot_staleness.py +0 -0
  677. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_gates.py +0 -0
  678. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  679. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_gen_mock_index.py +0 -0
  680. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_generated_rust_fixture.py +0 -0
  681. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_generated_rust_requests.py +0 -0
  682. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_generated_types_fixture.py +0 -0
  683. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_github_ops.py +0 -0
  684. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_github_throttle.py +0 -0
  685. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_goal.py +0 -0
  686. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_graph_health.py +0 -0
  687. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_graph_selfheal_absent_2237.py +0 -0
  688. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_handoff.py +0 -0
  689. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_checks.py +0 -0
  690. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_cli.py +0 -0
  691. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_cli_graph.py +0 -0
  692. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_config.py +0 -0
  693. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_context.py +0 -0
  694. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_coord_tui_ci_pin.py +0 -0
  695. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_coord_web_ci_pin.py +0 -0
  696. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_deploy_lane_facts.py +0 -0
  697. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_fix.py +0 -0
  698. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_incident_regression.py +0 -0
  699. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_issues_sync_staleness.py +0 -0
  700. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_pr_churn.py +0 -0
  701. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_pypi.py +0 -0
  702. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_registry.py +0 -0
  703. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_release_cordon_probe.py +0 -0
  704. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_timer_active.py +0 -0
  705. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_toolchain.py +0 -0
  706. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_unit_drift.py +0 -0
  707. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_unit_enablement.py +0 -0
  708. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_health_wedged_drive_queue.py +0 -0
  709. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_hooks.py +0 -0
  710. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_housekeeping.py +0 -0
  711. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_human_attended_437.py +0 -0
  712. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_init.py +0 -0
  713. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_install_agent_venv_2911.py +0 -0
  714. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_integration.py +0 -0
  715. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_interactive_briefing_echo.py +0 -0
  716. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_interactive_pane_log_2541.py +0 -0
  717. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_interactive_prefill_state.py +0 -0
  718. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_interactive_session_relaunch.py +0 -0
  719. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_interactive_test_verdict_backstop.py +0 -0
  720. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_interactive_token_attribution.py +0 -0
  721. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_interactive_worktree.py +0 -0
  722. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_invariant_alarms.py +0 -0
  723. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_issue_store_seam.py +0 -0
  724. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_issues_sync_status.py +0 -0
  725. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_liveness_auditor.py +0 -0
  726. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_liveness_notify.py +0 -0
  727. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_lock_contention_ratchet.py +0 -0
  728. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_machine_fault.py +0 -0
  729. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_machine_metrics.py +0 -0
  730. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_machine_onboard.py +0 -0
  731. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_machine_pause.py +0 -0
  732. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_machine_stats.py +0 -0
  733. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_merge_queue.py +0 -0
  734. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_merge_verify.py +0 -0
  735. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_milestone_chat.py +0 -0
  736. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_milestone_dispatch.py +0 -0
  737. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_milestone_gate.py +0 -0
  738. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_milestone_order.py +0 -0
  739. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_milestone_seam.py +0 -0
  740. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_mock_author.py +0 -0
  741. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_model_tiering.py +0 -0
  742. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_models.py +0 -0
  743. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_models_config_labels.py +0 -0
  744. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_needs_attention.py +0 -0
  745. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_network.py +0 -0
  746. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_new_issue_chat.py +0 -0
  747. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_next_release_tag.py +0 -0
  748. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_node_shim.py +0 -0
  749. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_notifier_baseline.py +0 -0
  750. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_notifier_cli.py +0 -0
  751. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_notifier_collect.py +0 -0
  752. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_notifier_config.py +0 -0
  753. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_notifier_drive_seam.py +0 -0
  754. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_notifier_isolation.py +0 -0
  755. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_notifier_predicate.py +0 -0
  756. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_notifier_quiet_hours.py +0 -0
  757. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_notifier_service.py +0 -0
  758. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_notify.py +0 -0
  759. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_notify_drain.py +0 -0
  760. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_openapi.py +0 -0
  761. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_operational_defaults.py +0 -0
  762. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_overlap_fence.py +0 -0
  763. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_overlap_predict.py +0 -0
  764. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_packaged_deploy_units.py +0 -0
  765. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_parentage.py +0 -0
  766. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_paste_landed.py +0 -0
  767. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  768. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_pipeline.py +0 -0
  769. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_plan_followup_approve_plan_command.py +0 -0
  770. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_plan_followup_pr_command.py +0 -0
  771. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_plan_followup_review_command.py +0 -0
  772. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_plan_only.py +0 -0
  773. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_plan_parser.py +0 -0
  774. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_platform_paths.py +0 -0
  775. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_portal_bridge.py +0 -0
  776. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_portal_config.py +0 -0
  777. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_portal_store.py +0 -0
  778. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_portal_sync.py +0 -0
  779. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_pr_body_lint.py +0 -0
  780. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_prereqs.py +0 -0
  781. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_production_db_guard.py +0 -0
  782. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_progress.py +0 -0
  783. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_provider_seam.py +0 -0
  784. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_providers.py +0 -0
  785. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_providers_config_labels.py +0 -0
  786. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_providers_pty.py +0 -0
  787. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_provision_core.py +0 -0
  788. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_provision_machine.py +0 -0
  789. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_py_rust_mirror_inventory.py +0 -0
  790. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_quiet_hours.py +0 -0
  791. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_quiet_hours_store_2146.py +0 -0
  792. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_reap_merged_sessions.py +0 -0
  793. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_reap_stale_interactive_tick.py +0 -0
  794. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_reconcile.py +0 -0
  795. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_reconcile_branch.py +0 -0
  796. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_reconcile_completions.py +0 -0
  797. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  798. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_reconcile_merges.py +0 -0
  799. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_reconcile_no_agent_record.py +0 -0
  800. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_reconcile_tick.py +0 -0
  801. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_reconcile_usage_limit_done.py +0 -0
  802. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_refine_chat.py +0 -0
  803. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_release_cordon_2101.py +0 -0
  804. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  805. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_release_cordon_deadlock_2240.py +0 -0
  806. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  807. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_release_cordon_stuck_2490.py +0 -0
  808. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_release_propagate.py +0 -0
  809. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_release_propagate_threshold.py +0 -0
  810. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_release_roll_between_legs_2854.py +0 -0
  811. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_release_roll_window_handoff.py +0 -0
  812. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_release_unified_1242.py +0 -0
  813. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_release_verify.py +0 -0
  814. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_release_window.py +0 -0
  815. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_remote_auto_prune.py +0 -0
  816. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_remote_interactive_reaper.py +0 -0
  817. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_repo_add.py +0 -0
  818. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_repo_dormancy.py +0 -0
  819. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_repo_edit_2220.py +0 -0
  820. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_repo_graph_fleet_2237.py +0 -0
  821. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_repo_onboard_2220.py +0 -0
  822. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_report_result_push.py +0 -0
  823. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_reports.py +0 -0
  824. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_retry.py +0 -0
  825. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_retry_advisory_1606.py +0 -0
  826. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_retry_escalation_classify_3360.py +0 -0
  827. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_retry_type_1636.py +0 -0
  828. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_revalidate.py +0 -0
  829. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_review.py +0 -0
  830. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_review_end_review_without_verdict.py +0 -0
  831. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_review_parse_failure_diagnostic.py +0 -0
  832. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_review_reaffirm.py +0 -0
  833. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_review_state.py +0 -0
  834. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_review_verdict_backstop.py +0 -0
  835. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_review_verdict_override_audit.py +0 -0
  836. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_review_verdict_relay.py +0 -0
  837. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_review_zero_commits.py +0 -0
  838. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_scoped_review_wiring.py +0 -0
  839. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_scorecard.py +0 -0
  840. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_self_health.py +0 -0
  841. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_serve.py +0 -0
  842. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_serve_app.py +0 -0
  843. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_serve_app_board_trim.py +0 -0
  844. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_serve_rest_routes.py +0 -0
  845. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_session.py +0 -0
  846. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_slice_issue_attribution.py +0 -0
  847. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_smoke.py +0 -0
  848. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  849. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_smoke_live_checkout_restore.py +0 -0
  850. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_smoke_workflow.py +0 -0
  851. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_spend_ceiling.py +0 -0
  852. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_spend_ceiling_coordinator.py +0 -0
  853. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_split.py +0 -0
  854. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_split_work.py +0 -0
  855. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_sql_dialect.py +0 -0
  856. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_sqlite_connect_ratchet.py +0 -0
  857. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_stage_projection.py +0 -0
  858. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_stale_busy_reviewer_697.py +0 -0
  859. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_stalled_pipeline.py +0 -0
  860. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_state.py +0 -0
  861. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_state_review_findings_daemon.py +0 -0
  862. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_status_fleet_footer.py +0 -0
  863. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_stop_1567.py +0 -0
  864. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_store_contract.py +0 -0
  865. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_store_migrate.py +0 -0
  866. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_stuck.py +0 -0
  867. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  868. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_terminal_command.py +0 -0
  869. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_test_author.py +0 -0
  870. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_test_chat.py +0 -0
  871. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_test_orchestrator.py +0 -0
  872. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_test_report.py +0 -0
  873. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_test_verdict_parsing.py +0 -0
  874. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_test_verdict_transcript_floor.py +0 -0
  875. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_text_io_encoding_audit.py +0 -0
  876. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_thin_client_board_audit.py +0 -0
  877. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_thin_client_config_load_1080.py +0 -0
  878. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_thin_client_daemon_routing_906.py +0 -0
  879. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_throwaway_vm.py +0 -0
  880. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_tmux_host.py +0 -0
  881. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_tmux_session.py +0 -0
  882. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_transcript_floor.py +0 -0
  883. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_uat_checks.py +0 -0
  884. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_usage.py +0 -0
  885. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_usage_limits.py +0 -0
  886. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_usage_rollup.py +0 -0
  887. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_venv_live_install_2121.py +0 -0
  888. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_version_single_source.py +0 -0
  889. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_watch.py +0 -0
  890. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  891. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_worker_env_venv_isolation.py +0 -0
  892. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_worker_events.py +0 -0
  893. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_worker_image_pin_sync.py +0 -0
  894. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_worker_safety.py +0 -0
  895. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_worker_test_scoping.py +0 -0
  896. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_worktree.py +0 -0
  897. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  898. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/tests/test_write_parity.py +0 -0
  899. {code_coordinator-0.5.495 → code_coordinator-0.5.496}/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.495
3
+ Version: 0.5.496
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.495
3
+ Version: 0.5.496
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
@@ -613,6 +613,7 @@ tests/test_drive_machine_fault.py
613
613
  tests/test_drive_queue.py
614
614
  tests/test_drive_queue_blocked_rendering.py
615
615
  tests/test_drive_queue_launch_argv.py
616
+ tests/test_drive_queue_max_parallel_config.py
616
617
  tests/test_drive_queue_max_parallel_per_repo_config.py
617
618
  tests/test_drive_queue_roll_pending.py
618
619
  tests/test_drive_queue_self_cordon_escalation.py
@@ -639,6 +639,7 @@
639
639
  "tests/test_drive_queue.py",
640
640
  "tests/test_drive_queue_blocked_rendering.py",
641
641
  "tests/test_drive_queue_launch_argv.py",
642
+ "tests/test_drive_queue_max_parallel_config.py",
642
643
  "tests/test_drive_queue_max_parallel_per_repo_config.py",
643
644
  "tests/test_drive_queue_roll_pending.py",
644
645
  "tests/test_drive_queue_self_cordon_escalation.py",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.5.496",
3
+ "distance": 0,
4
+ "node": "gdcf7e4331cfa3d1b0c95e0e3450402c3c49a6723",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-09-19"
8
+ }
@@ -46,6 +46,7 @@ from coord.drive_queue import (
46
46
  APPLY_APPLIED,
47
47
  APPLY_FAILED,
48
48
  DEFAULT_MAX_ATTEMPTS,
49
+ DEFAULT_MAX_PARALLEL,
49
50
  DEFAULT_MAX_PARALLEL_PER_REPO,
50
51
  HOLD_FIRED,
51
52
  HOLD_RELEASED,
@@ -77,6 +78,7 @@ from coord.drive_queue import (
77
78
  add_preflight_notice,
78
79
  apply_gate_status,
79
80
  build_board_view,
81
+ default_max_parallel,
80
82
  detect_unreachable_waits,
81
83
  diagnose_blocked_after,
82
84
  effective_max_fix_rounds,
@@ -5248,12 +5250,25 @@ def _blocked_escalation_command(entry: QueueEntry | None, key: str, reason: str)
5248
5250
  @click.option(
5249
5251
  "--max-parallel",
5250
5252
  type=int,
5251
- default=1,
5252
- show_default=True,
5253
+ default=None,
5253
5254
  help=(
5254
- "Concurrency ceiling. Capacity is counted from BOARD state, not from a "
5255
- "session count, so a drive whose observer hit its deadline (#1660) "
5256
- "still occupies a slot."
5255
+ "Global concurrency ceiling. Capacity is counted from BOARD state, "
5256
+ "not from a session count, so a drive whose observer hit its "
5257
+ "deadline (#1660) still occupies a slot. Omit this flag to use "
5258
+ "pipeline.max_parallel from coordinator.yml (or, absent that, a "
5259
+ "derivation from the fleet's own shape — repo count times the "
5260
+ "resolved --max-parallel-per-repo, clamped to "
5261
+ "concurrency.max_workers, see coord.drive_queue."
5262
+ "default_max_parallel; falling back further, if the config itself "
5263
+ f"can't be read, to {DEFAULT_MAX_PARALLEL}, #3388) — passing it "
5264
+ "explicitly always wins over both. #3388: a hardcoded constant here "
5265
+ "(coord-drive-queue.service used to pin --max-parallel 4) silently "
5266
+ "starves every repo but the first couple once "
5267
+ "--max-parallel-per-repo can exceed 1 — prefer the config setting "
5268
+ "over a systemd drop-in for the same reason #2573 gives for "
5269
+ "--max-parallel-per-repo: a drop-in has to restate the packaged "
5270
+ "unit's whole ExecStart= to change just this flag, and that copy "
5271
+ "silently drifts from the packaged unit's other flags over time."
5257
5272
  ),
5258
5273
  )
5259
5274
  @click.option(
@@ -5301,7 +5316,7 @@ def _blocked_escalation_command(entry: QueueEntry | None, key: str, reason: str)
5301
5316
  )
5302
5317
  @_CONFIG_OPTION
5303
5318
  def drive_queue_tick(
5304
- max_parallel: int,
5319
+ max_parallel: int | None,
5305
5320
  max_parallel_per_repo: int | None,
5306
5321
  dry_run: bool,
5307
5322
  reconcile_only: bool,
@@ -5338,6 +5353,20 @@ def drive_queue_tick(
5338
5353
  reverted #2314's pinned-venv `ExecStart=` right back to a
5339
5354
  worker-overwritable path as an unnoticed side effect).
5340
5355
 
5356
+ #3388: `--max-parallel` resolves the SAME way, one level up — the flag on
5357
+ THIS invocation, when given; else `pipeline.max_parallel` from
5358
+ `coordinator.yml`; else `coord.drive_queue.default_max_parallel`'s
5359
+ derivation from the fleet's own shape (repo count times the
5360
+ ALREADY-RESOLVED `--max-parallel-per-repo` above, clamped to
5361
+ `concurrency.max_workers`); else, only if the config itself could not be
5362
+ read at all, `coord.drive_queue.DEFAULT_MAX_PARALLEL` (1). A hardcoded
5363
+ `--max-parallel` on the deployed systemd unit is exactly the failure mode
5364
+ this closes: #2012 set it to the repo count when `--max-parallel-per-repo`
5365
+ always defaulted to 1, #2057 raised it once by hand for a fifth repo, and
5366
+ neither update survived #2573 letting the per-repo ceiling exceed 1 — two
5367
+ repos alone then reach a stale global ceiling and starve every other repo
5368
+ in the fleet, forever, however deep their own queues are.
5369
+
5341
5370
  `--max-parallel 0` (or `--reconcile-only`, the readable spelling of the
5342
5371
  same thing — #2110) reconciles every `running` entry against the board and
5343
5372
  then stops: no capacity walk, no deferrals, no queue-level alert, no
@@ -5369,24 +5398,37 @@ def drive_queue_tick(
5369
5398
  from coord.filelock import FileLock, LockBusy, drive_queue_lock_path # noqa: PLC0415
5370
5399
  from coord.state import list_drive_queue, update_drive_queue_entry # noqa: PLC0415
5371
5400
 
5372
- if max_parallel < 0:
5373
- raise click.ClickException(
5374
- "--max-parallel must be at least 0 (0 = reconcile-only, launch "
5375
- "nothing this run — see --reconcile-only)"
5376
- )
5401
+ # Loaded at most once, shared by both ceilings' config-default resolution
5402
+ # below (#3388's `max_parallel` derivation needs the same config
5403
+ # `max_parallel_per_repo` already reads, plus `repos`/`concurrency`) —
5404
+ # `None` on the documented fail-open path, same posture as every other
5405
+ # best-effort config read on this path (an unreadable config must never
5406
+ # abort the tick).
5407
+ _resolved_config: Config | None = None
5408
+ _config_load_attempted = False
5409
+
5410
+ def _config_for_defaults() -> Config | None:
5411
+ nonlocal _resolved_config, _config_load_attempted
5412
+ if not _config_load_attempted:
5413
+ _config_load_attempted = True
5414
+ try:
5415
+ from coord.commands._common import _load_config # noqa: PLC0415
5416
+
5417
+ _resolved_config = _load_config(config_path)
5418
+ except Exception: # noqa: BLE001 — an unreadable config must not abort the tick
5419
+ _resolved_config = None
5420
+ return _resolved_config
5377
5421
 
5378
5422
  # #2573: an explicit `--max-parallel-per-repo` always wins; otherwise
5379
5423
  # fall back to the fleet-wide `pipeline.max_parallel_per_repo` in
5380
5424
  # coordinator.yml, and only then to the hardcoded default. Resolved
5381
- # BEFORE validation below so a bad value from either source is caught
5382
- # the same way regardless of which one supplied it.
5425
+ # BEFORE `--max-parallel` (#3388's derivation multiplies BY this
5426
+ # already-resolved value) and before validation below, so a bad value
5427
+ # from either source is caught the same way regardless of which one
5428
+ # supplied it.
5383
5429
  if max_parallel_per_repo is None:
5384
- try:
5385
- from coord.commands._common import _load_config # noqa: PLC0415
5386
-
5387
- config_default = _load_config(config_path).pipeline.max_parallel_per_repo
5388
- except Exception: # noqa: BLE001 — an unreadable config must not abort the tick
5389
- config_default = None
5430
+ _cfg = _config_for_defaults()
5431
+ config_default = None if _cfg is None else _cfg.pipeline.max_parallel_per_repo
5390
5432
  max_parallel_per_repo = (
5391
5433
  DEFAULT_MAX_PARALLEL_PER_REPO if config_default is None else config_default
5392
5434
  )
@@ -5396,6 +5438,35 @@ def drive_queue_tick(
5396
5438
  "--max-parallel-per-repo must be 0 (no per-repo ceiling) or more"
5397
5439
  )
5398
5440
 
5441
+ # #3388: an explicit `--max-parallel` always wins; otherwise
5442
+ # `pipeline.max_parallel` from coordinator.yml; otherwise derive it from
5443
+ # the fleet's own shape (repo count * the per-repo ceiling just resolved
5444
+ # above, clamped to the fleet's real worker capacity) rather than fall
5445
+ # back to a hand-maintained constant that goes stale the moment either
5446
+ # side changes — see `coord.drive_queue.default_max_parallel`. Only when
5447
+ # the config itself could not be read at all (so neither the fleet
5448
+ # default nor the fleet shape is known) does this fall back to the
5449
+ # hardcoded `DEFAULT_MAX_PARALLEL`.
5450
+ if max_parallel is None:
5451
+ _cfg = _config_for_defaults()
5452
+ config_max_parallel = None if _cfg is None else _cfg.pipeline.max_parallel
5453
+ if config_max_parallel is not None:
5454
+ max_parallel = config_max_parallel
5455
+ elif _cfg is not None:
5456
+ max_parallel = default_max_parallel(
5457
+ repo_count=len(_cfg.repos),
5458
+ max_parallel_per_repo=max_parallel_per_repo,
5459
+ max_workers_cap=_cfg.concurrency.max_workers,
5460
+ )
5461
+ else:
5462
+ max_parallel = DEFAULT_MAX_PARALLEL
5463
+
5464
+ if max_parallel < 0:
5465
+ raise click.ClickException(
5466
+ "--max-parallel must be at least 0 (0 = reconcile-only, launch "
5467
+ "nothing this run — see --reconcile-only)"
5468
+ )
5469
+
5399
5470
  # #2110: `--reconcile-only` and `--max-parallel 0` are the same request —
5400
5471
  # one flag is a mnemonic for the other rather than a second code path, so
5401
5472
  # there is exactly one way this behaves, not two that could drift apart.
@@ -1232,6 +1232,21 @@ class PipelineConfig:
1232
1232
  :data:`_DEFAULT_STALL_THRESHOLDS` for the shape and the evidence behind
1233
1233
  its two seeded entries, and :meth:`stall_threshold_secs` for how a type
1234
1234
  absent from the table falls back to the drive's flat ``--stall`` value.
1235
+
1236
+ ``max_parallel`` (#3388) is the fleet-wide default for ``coord
1237
+ drive-queue tick``'s GLOBAL concurrency ceiling (``--max-parallel``) —
1238
+ the sibling of ``max_parallel_per_repo`` above, added for the same
1239
+ reason: a systemd unit's hardcoded ``--max-parallel 4`` encoded a fact
1240
+ about the fleet (repo count times per-repo ceiling) that nobody revisited
1241
+ when either side changed, and two repos alone starved the other twelve
1242
+ once ``max_parallel_per_repo`` could exceed 1 (#2012, #2057, #2573).
1243
+ ``None`` (the default) leaves the ceiling at
1244
+ ``coord.drive_queue.default_max_parallel``'s derivation — ``repo_count *
1245
+ max_parallel_per_repo``, clamped to ``concurrency.max_workers`` — rather
1246
+ than a hand-maintained constant. An explicit ``coord drive-queue tick
1247
+ --max-parallel N`` on the command line always wins over this, exactly
1248
+ mirroring ``max_parallel_per_repo``'s own resolution order — see
1249
+ ``coord.commands.drive_queue.drive_queue_tick``.
1235
1250
  """
1236
1251
 
1237
1252
  default_gates: list[str] = field(default_factory=lambda: ["test", "review", "merge"])
@@ -1267,6 +1282,9 @@ class PipelineConfig:
1267
1282
  stall_thresholds: dict[str, float] = field(
1268
1283
  default_factory=lambda: dict(_DEFAULT_STALL_THRESHOLDS)
1269
1284
  )
1285
+ # #3388 — None means "derive from the fleet shape", see
1286
+ # coord.drive_queue.default_max_parallel. See the class docstring.
1287
+ max_parallel: int | None = None
1270
1288
 
1271
1289
  def attention_threshold_for(
1272
1290
  self,
@@ -3641,6 +3659,17 @@ def _parse_pipeline(raw: Any) -> PipelineConfig:
3641
3659
  )
3642
3660
  cfg.max_parallel_per_repo = value
3643
3661
 
3662
+ if "max_parallel" in raw:
3663
+ value = raw["max_parallel"]
3664
+ if value is not None and (
3665
+ not isinstance(value, int) or isinstance(value, bool) or value < 0
3666
+ ):
3667
+ raise ConfigError(
3668
+ "pipeline.max_parallel must be a non-negative integer or "
3669
+ "null (0 = reconcile-only, launch nothing)"
3670
+ )
3671
+ cfg.max_parallel = value
3672
+
3644
3673
  if "stall_thresholds" in raw:
3645
3674
  value = raw["stall_thresholds"]
3646
3675
  if not isinstance(value, dict):
@@ -165,46 +165,58 @@ KillMode=process
165
165
  # stays so nobody re-derives the (wrong) theory that narrowing THIS PATH
166
166
  # would have prevented it.
167
167
  Environment=PATH=%h/.coord-venv/bin:%h/.cargo/bin:%h/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
168
- # --max-parallel 4 (#2012, raised from 3 in #2057) — the global ceiling,
169
- # ONE SLOT PER REPO IN THE FLEET: claude-coordinator, quadraui, vimcode,
170
- # coord-portal. It was 3 because the fleet had three repos when #2012 set
171
- # it; coord-portal joined afterwards and the number was never revisited, so
172
- # the fourth repo could never drive concurrently no matter what was queued.
173
- #
174
- # KEEP THIS EQUAL TO THE REPO COUNT. It is not a tuning knob for how hard
175
- # the fleet works — that is what the per-repo ceiling and machine capacity
176
- # decide. Set it lower and a repo silently loses its lane; set it higher
177
- # and it does nothing, because the per-repo ceiling still admits only one
178
- # drive per repo.
179
- #
180
- # #1972 added the SECOND ceiling, --max-parallel-per-repo (default 1),
181
- # which is what keeps two drives off the same repo; without raising this
182
- # outer one the per-repo ceiling can never bind, because the walk stops at
183
- # the global limit first and never reaches an entry from a different repo.
184
- #
185
- # Raise this ONLY on a host whose coord actually enforces the per-repo
186
- # ceiling (>= the release carrying #1972). A higher global ceiling on an
187
- # older coord launches two same-repo drives, which stale each other's
188
- # Test verdicts (#1479) — the exact collision #1972 exists to prevent.
168
+ # --max-parallel USED TO be hardcoded here (#2012 set it to 3 — the repo
169
+ # count at the time, one slot per repo; #2057 raised it to 4 when a fourth
170
+ # repo joined and it was never revisited again). #3388: that invariant
171
+ # (global == repo count) only held while --max-parallel-per-repo always
172
+ # defaulted to 1. Once #2573 gave the per-repo ceiling its own
173
+ # coordinator.yml knob and an operator raised it past 1, the real invariant
174
+ # became `global >= repo_count * max_parallel_per_repo` — and at 14 repos
175
+ # with max_parallel_per_repo=2 against a global ceiling still stuck at 4,
176
+ # TWO repos alone reached the global ceiling and every other repo in the
177
+ # fleet was starved, permanently, no matter what was queued (2026-09-18).
178
+ #
179
+ # So --max-parallel is deliberately ABSENT below, the same way
180
+ # --max-parallel-per-repo already is (#2573's rationale, restated below
181
+ # applies verbatim here). Omitting it lets `coord drive-queue tick` resolve
182
+ # it itself, in this order: an explicit --max-parallel on this ExecStart=
183
+ # (none is set here on purpose) > `pipeline.max_parallel` in
184
+ # ~/.coord/coordinator.yml, if an operator wants to pin a fleet-wide value >
185
+ # `coord.drive_queue.default_max_parallel`'s DERIVATION from the fleet's own
186
+ # shape — repo count times the (already-resolved) per-repo ceiling, clamped
187
+ # to `concurrency.max_workers` — which is self-maintaining across repo
188
+ # additions instead of a constant nobody remembers to revisit. See
189
+ # `coord.commands.drive_queue.drive_queue_tick` for the exact order and
190
+ # `coord.config.PipelineConfig.max_parallel` for the field.
191
+ #
192
+ # #1972's SECOND ceiling, --max-parallel-per-repo, is what keeps two drives
193
+ # off the same repo once the global ceiling admits more than one launch at
194
+ # once; the derived global ceiling above only ever multiplies BY whatever
195
+ # that ceiling resolves to, so raising --max-parallel-per-repo in
196
+ # coordinator.yml raises this fleet's derived global ceiling right along
197
+ # with it — no separate edit needed here.
198
+ #
199
+ # Raise pipeline.max_parallel_per_repo (or let it stay derived) ONLY on a
200
+ # fleet whose coord actually enforces the per-repo ceiling (>= the release
201
+ # carrying #1972). A higher global ceiling on an older coord launches two
202
+ # same-repo drives, which stale each other's Test verdicts (#1479) — the
203
+ # exact collision #1972 exists to prevent.
189
204
  #
190
205
  # #2573: the per-repo ceiling deliberately does NOT appear as a
191
- # --max-parallel-per-repo flag below. It has a THIRD source now — set it as
192
- # `pipeline.max_parallel_per_repo` in ~/.coord/coordinator.yml instead of a
193
- # `systemctl --user edit` drop-in. A drop-in has to restate this entire
206
+ # --max-parallel-per-repo flag below either, for the identical reason: set it
207
+ # as `pipeline.max_parallel_per_repo` in ~/.coord/coordinator.yml instead of
208
+ # a `systemctl --user edit` drop-in. A drop-in has to restate this entire
194
209
  # ExecStart= line to change one flag on it, and that restated copy silently
195
210
  # drifts from THIS file forever after — dellserver's live drop-in, built
196
211
  # solely to carry --max-parallel-per-repo 2, was found resetting ExecStart=
197
212
  # back to %h/.local/bin/coord, silently reverting #2314's pinned-venv path
198
213
  # above as an unnoticed side effect (see docs/DRIVE_QUEUE.md §9 and #2573).
199
- # coordinator.yml has no such coupling — it is read fresh by the flag's own
200
- # resolution (an explicit --max-parallel-per-repo on this ExecStart= would
201
- # still win, but none is set here on purpose) — see
202
- # `coord.commands.drive_queue.drive_queue_tick` for the exact order and
203
- # `coord.config.PipelineConfig.max_parallel_per_repo` for the field. If a
204
- # `coord-drive-queue.service.d/override.conf` still exists on a host purely
205
- # to carry --max-parallel-per-repo, move that value into coordinator.yml and
206
- # delete the drop-in — an empty override directory cannot drift.
207
- ExecStart=%h/.coord-venv/bin/coord drive-queue tick --max-parallel 4 --config %h/.coord/coordinator.yml
214
+ # coordinator.yml has no such coupling — it is read fresh by each flag's own
215
+ # resolution. If a `coord-drive-queue.service.d/override.conf` still exists
216
+ # on a host purely to carry --max-parallel/--max-parallel-per-repo, move
217
+ # that value into coordinator.yml and delete the drop-in — an empty
218
+ # override directory cannot drift.
219
+ ExecStart=%h/.coord-venv/bin/coord drive-queue tick --config %h/.coord/coordinator.yml
208
220
  # Generous relative to the tick's own ~120s launch-subprocess timeout
209
221
  # (_LAUNCH_TIMEOUT_SECONDS in coord/commands/drive_queue.py), but well below
210
222
  # the timer's 15-minute cadence (coord-drive-queue.timer) so a genuinely
@@ -538,6 +538,64 @@ DISPATCH_FAILURE_MIN_BACKOFF_SECONDS = 660.0
538
538
  # why `render_plan` prints the per-repo breakdown and says where it came from.
539
539
  DEFAULT_MAX_PARALLEL_PER_REPO = 1
540
540
 
541
+ # ── the global ceiling's own fleet-shape default (#3388) ────────────────────
542
+ #
543
+ # `--max-parallel` (the OTHER ceiling, applied before the per-repo one above)
544
+ # used to be a constant an operator hand-set in `coord-drive-queue.service` —
545
+ # #2012 set it to 3 (the repo count at the time), #2057 raised it to 4 when a
546
+ # fourth repo joined and was never touched again. That was tolerable only
547
+ # because `--max-parallel-per-repo` defaulted to 1: with one slot per repo,
548
+ # `global == repo_count` was the whole invariant, and it was self-evidently
549
+ # wrong the moment a repo count changed (a quick `git log` question).
550
+ #
551
+ # #2573 gave the per-repo ceiling its own `coordinator.yml` knob, which can
552
+ # now be raised past 1 — and the invariant silently became
553
+ # `global >= repo_count * max_parallel_per_repo` without any constant
554
+ # anywhere saying so. At 14 repos and `max_parallel_per_repo=2` against a
555
+ # `--max-parallel` still stuck at 4, two repos alone reach the global
556
+ # ceiling and every other repo in the fleet is starved, permanently,
557
+ # regardless of what is queued (the exact fleet state observed 2026-09-18).
558
+ #
559
+ # `default_max_parallel` below is that invariant computed fresh every tick
560
+ # instead of remembered by a human: enough global room for every repo to
561
+ # reach its OWN per-repo ceiling at once. See
562
+ # `coord.commands.drive_queue.drive_queue_tick` for where this feeds into
563
+ # the flag's actual resolution order (explicit flag > `coordinator.yml`
564
+ # `pipeline.max_parallel` > this derivation > `DEFAULT_MAX_PARALLEL` as a
565
+ # last-resort fallback when the config itself can't be read).
566
+ DEFAULT_MAX_PARALLEL = 1
567
+
568
+
569
+ def default_max_parallel(
570
+ *, repo_count: int, max_parallel_per_repo: int, max_workers_cap: int
571
+ ) -> int:
572
+ """Derive the drive-queue tick's global ceiling from the fleet's shape.
573
+
574
+ ``repo_count * max_parallel_per_repo`` is the smallest global ceiling
575
+ that lets every repo reach its own per-repo ceiling at the same time —
576
+ the invariant #2012/#2057 tried to maintain by hand and lost each time
577
+ either the fleet or the per-repo ceiling changed (see the module-level
578
+ comment above this function for the incident, #3388).
579
+
580
+ ``max_parallel_per_repo <= 0`` means the per-repo ceiling is itself
581
+ disabled (one global counter, pre-#1972 behaviour) — there is no
582
+ per-repo figure to multiply by, so this falls back to *max_workers_cap*
583
+ alone. Either way the result is clamped to *max_workers_cap*
584
+ (``concurrency.max_workers``, the fleet's actual worker capacity across
585
+ every stage, not just drive-queue launches) so a large fleet gets a
586
+ saner DEFAULT, not a promise the machines behind it can't keep — a
587
+ ``max_workers_cap`` of 0 or less is "no cap known" and is not applied.
588
+ Always at least 1: a derivation must never produce a ceiling that
589
+ admits nothing.
590
+ """
591
+ if max_parallel_per_repo > 0 and repo_count > 0:
592
+ derived = repo_count * max_parallel_per_repo
593
+ else:
594
+ derived = max_workers_cap
595
+ if max_workers_cap > 0:
596
+ derived = min(derived, max_workers_cap)
597
+ return max(1, derived)
598
+
541
599
  # ── the startup grace window (#1794) ─────────────────────────────────────────
542
600
  #
543
601
  # A drive is NOT established the instant `coord drive --tmux` exits 0. #1606's
@@ -165,46 +165,58 @@ KillMode=process
165
165
  # stays so nobody re-derives the (wrong) theory that narrowing THIS PATH
166
166
  # would have prevented it.
167
167
  Environment=PATH=%h/.coord-venv/bin:%h/.cargo/bin:%h/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
168
- # --max-parallel 4 (#2012, raised from 3 in #2057) — the global ceiling,
169
- # ONE SLOT PER REPO IN THE FLEET: claude-coordinator, quadraui, vimcode,
170
- # coord-portal. It was 3 because the fleet had three repos when #2012 set
171
- # it; coord-portal joined afterwards and the number was never revisited, so
172
- # the fourth repo could never drive concurrently no matter what was queued.
173
- #
174
- # KEEP THIS EQUAL TO THE REPO COUNT. It is not a tuning knob for how hard
175
- # the fleet works — that is what the per-repo ceiling and machine capacity
176
- # decide. Set it lower and a repo silently loses its lane; set it higher
177
- # and it does nothing, because the per-repo ceiling still admits only one
178
- # drive per repo.
179
- #
180
- # #1972 added the SECOND ceiling, --max-parallel-per-repo (default 1),
181
- # which is what keeps two drives off the same repo; without raising this
182
- # outer one the per-repo ceiling can never bind, because the walk stops at
183
- # the global limit first and never reaches an entry from a different repo.
184
- #
185
- # Raise this ONLY on a host whose coord actually enforces the per-repo
186
- # ceiling (>= the release carrying #1972). A higher global ceiling on an
187
- # older coord launches two same-repo drives, which stale each other's
188
- # Test verdicts (#1479) — the exact collision #1972 exists to prevent.
168
+ # --max-parallel USED TO be hardcoded here (#2012 set it to 3 — the repo
169
+ # count at the time, one slot per repo; #2057 raised it to 4 when a fourth
170
+ # repo joined and it was never revisited again). #3388: that invariant
171
+ # (global == repo count) only held while --max-parallel-per-repo always
172
+ # defaulted to 1. Once #2573 gave the per-repo ceiling its own
173
+ # coordinator.yml knob and an operator raised it past 1, the real invariant
174
+ # became `global >= repo_count * max_parallel_per_repo` — and at 14 repos
175
+ # with max_parallel_per_repo=2 against a global ceiling still stuck at 4,
176
+ # TWO repos alone reached the global ceiling and every other repo in the
177
+ # fleet was starved, permanently, no matter what was queued (2026-09-18).
178
+ #
179
+ # So --max-parallel is deliberately ABSENT below, the same way
180
+ # --max-parallel-per-repo already is (#2573's rationale, restated below
181
+ # applies verbatim here). Omitting it lets `coord drive-queue tick` resolve
182
+ # it itself, in this order: an explicit --max-parallel on this ExecStart=
183
+ # (none is set here on purpose) > `pipeline.max_parallel` in
184
+ # ~/.coord/coordinator.yml, if an operator wants to pin a fleet-wide value >
185
+ # `coord.drive_queue.default_max_parallel`'s DERIVATION from the fleet's own
186
+ # shape — repo count times the (already-resolved) per-repo ceiling, clamped
187
+ # to `concurrency.max_workers` — which is self-maintaining across repo
188
+ # additions instead of a constant nobody remembers to revisit. See
189
+ # `coord.commands.drive_queue.drive_queue_tick` for the exact order and
190
+ # `coord.config.PipelineConfig.max_parallel` for the field.
191
+ #
192
+ # #1972's SECOND ceiling, --max-parallel-per-repo, is what keeps two drives
193
+ # off the same repo once the global ceiling admits more than one launch at
194
+ # once; the derived global ceiling above only ever multiplies BY whatever
195
+ # that ceiling resolves to, so raising --max-parallel-per-repo in
196
+ # coordinator.yml raises this fleet's derived global ceiling right along
197
+ # with it — no separate edit needed here.
198
+ #
199
+ # Raise pipeline.max_parallel_per_repo (or let it stay derived) ONLY on a
200
+ # fleet whose coord actually enforces the per-repo ceiling (>= the release
201
+ # carrying #1972). A higher global ceiling on an older coord launches two
202
+ # same-repo drives, which stale each other's Test verdicts (#1479) — the
203
+ # exact collision #1972 exists to prevent.
189
204
  #
190
205
  # #2573: the per-repo ceiling deliberately does NOT appear as a
191
- # --max-parallel-per-repo flag below. It has a THIRD source now — set it as
192
- # `pipeline.max_parallel_per_repo` in ~/.coord/coordinator.yml instead of a
193
- # `systemctl --user edit` drop-in. A drop-in has to restate this entire
206
+ # --max-parallel-per-repo flag below either, for the identical reason: set it
207
+ # as `pipeline.max_parallel_per_repo` in ~/.coord/coordinator.yml instead of
208
+ # a `systemctl --user edit` drop-in. A drop-in has to restate this entire
194
209
  # ExecStart= line to change one flag on it, and that restated copy silently
195
210
  # drifts from THIS file forever after — dellserver's live drop-in, built
196
211
  # solely to carry --max-parallel-per-repo 2, was found resetting ExecStart=
197
212
  # back to %h/.local/bin/coord, silently reverting #2314's pinned-venv path
198
213
  # above as an unnoticed side effect (see docs/DRIVE_QUEUE.md §9 and #2573).
199
- # coordinator.yml has no such coupling — it is read fresh by the flag's own
200
- # resolution (an explicit --max-parallel-per-repo on this ExecStart= would
201
- # still win, but none is set here on purpose) — see
202
- # `coord.commands.drive_queue.drive_queue_tick` for the exact order and
203
- # `coord.config.PipelineConfig.max_parallel_per_repo` for the field. If a
204
- # `coord-drive-queue.service.d/override.conf` still exists on a host purely
205
- # to carry --max-parallel-per-repo, move that value into coordinator.yml and
206
- # delete the drop-in — an empty override directory cannot drift.
207
- ExecStart=%h/.coord-venv/bin/coord drive-queue tick --max-parallel 4 --config %h/.coord/coordinator.yml
214
+ # coordinator.yml has no such coupling — it is read fresh by each flag's own
215
+ # resolution. If a `coord-drive-queue.service.d/override.conf` still exists
216
+ # on a host purely to carry --max-parallel/--max-parallel-per-repo, move
217
+ # that value into coordinator.yml and delete the drop-in — an empty
218
+ # override directory cannot drift.
219
+ ExecStart=%h/.coord-venv/bin/coord drive-queue tick --config %h/.coord/coordinator.yml
208
220
  # Generous relative to the tick's own ~120s launch-subprocess timeout
209
221
  # (_LAUNCH_TIMEOUT_SECONDS in coord/commands/drive_queue.py), but well below
210
222
  # the timer's 15-minute cadence (coord-drive-queue.timer) so a genuinely
@@ -2331,7 +2331,14 @@ def test_back_to_back_ticks_launch_exactly_one_drive(cli, seed, launches):
2331
2331
  assert "died without landing the work" not in second.output
2332
2332
  assert "retry" not in second.output
2333
2333
  assert "starting" in second.output
2334
- assert "1/1 occupied" in second.output
2334
+ # #3388: no `--max-parallel` given, so the global ceiling is derived from
2335
+ # this config's fleet shape — 2 repos * the default 1/repo ceiling,
2336
+ # clamped to `concurrency.max_workers` (2) — rather than the old
2337
+ # hardcoded 1. One entry occupying a slot out of that derived capacity
2338
+ # of 2 is exactly what "exactly one drive, and the ceiling did not
2339
+ # collapse to 1 just because only one repo has anything queued" looks
2340
+ # like; see coord.drive_queue.default_max_parallel.
2341
+ assert "1/2 occupied" in second.output
2335
2342
 
2336
2343
 
2337
2344
  def test_a_still_starting_drive_is_reported_not_escalated(cli, seed, launches):