code-coordinator 0.5.494__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.494 → code_coordinator-0.5.496}/.github/workflows/test.yml +17 -0
  2. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/PKG-INFO +1 -1
  3. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/code_coordinator.egg-info/PKG-INFO +1 -1
  4. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/code_coordinator.egg-info/SOURCES.txt +1 -0
  5. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/code_coordinator.egg-info/scm_file_list.json +1 -0
  6. code_coordinator-0.5.496/code_coordinator.egg-info/scm_version.json +8 -0
  7. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/board_schema.py +11 -0
  8. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/board_wire.py +57 -0
  9. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/drive_queue.py +99 -20
  10. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/config.py +29 -0
  11. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/db.py +21 -1
  12. {code_coordinator-0.5.494 → code_coordinator-0.5.496/coord}/deploy/coord-drive-queue.service +45 -33
  13. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/drive_queue.py +93 -1
  14. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/drive_state.py +8 -1
  15. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/github_ops.py +8 -1
  16. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/state.py +11 -3
  17. {code_coordinator-0.5.494/coord → code_coordinator-0.5.496}/deploy/coord-drive-queue.service +45 -33
  18. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_board_wire.py +169 -0
  19. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_drive_queue.py +8 -1
  20. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_db.py +4 -1
  21. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_drive_queue.py +93 -2
  22. code_coordinator-0.5.496/tests/test_drive_queue_max_parallel_config.py +371 -0
  23. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_github_ops.py +12 -0
  24. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_state.py +63 -0
  25. code_coordinator-0.5.494/code_coordinator.egg-info/scm_version.json +0 -8
  26. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/.claude/commands/board.md +0 -0
  27. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/.claude/commands/complete-session.md +0 -0
  28. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/.claude/commands/coordinator.md +0 -0
  29. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/.githooks/_lib.sh +0 -0
  30. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/.githooks/post-checkout +0 -0
  31. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/.githooks/post-commit +0 -0
  32. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/.githooks/post-merge +0 -0
  33. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  34. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/.github/coord-ci-acceptance.yml +0 -0
  35. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/.github/workflows/auto-release.yml +0 -0
  36. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/.github/workflows/publish.yml +0 -0
  37. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/.gitignore +0 -0
  38. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/CLAUDE.md +0 -0
  39. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/GOAL.md +0 -0
  40. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/LICENSE +0 -0
  41. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/MANIFEST.in +0 -0
  42. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/README.md +0 -0
  43. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/code_coordinator.egg-info/dependency_links.txt +0 -0
  44. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/code_coordinator.egg-info/entry_points.txt +0 -0
  45. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/code_coordinator.egg-info/requires.txt +0 -0
  46. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/code_coordinator.egg-info/top_level.txt +0 -0
  47. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/__init__.py +0 -0
  48. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/_board_mapping.py +0 -0
  49. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/acceptance.py +0 -0
  50. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/acceptance_drivers.py +0 -0
  51. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/agent.py +0 -0
  52. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/agent_app.py +0 -0
  53. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/agent_update.py +0 -0
  54. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/agents/opencode/.gitignore +0 -0
  55. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/agents/opencode/agents/work.md +0 -0
  56. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/agents/opencode/routing.jsonc +0 -0
  57. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/approved_work.py +0 -0
  58. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/audit.py +0 -0
  59. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/auto_loop.py +0 -0
  60. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/backup.py +0 -0
  61. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/block_log.py +0 -0
  62. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/board_service.py +0 -0
  63. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/brain.py +0 -0
  64. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/branch_model.py +0 -0
  65. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/bug_intake.py +0 -0
  66. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/cargo_cache.py +0 -0
  67. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/ci_fix.py +0 -0
  68. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/ci_github.py +0 -0
  69. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/ci_gitlab.py +0 -0
  70. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/ci_store.py +0 -0
  71. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/claim.py +0 -0
  72. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/claude_setup_token.py +0 -0
  73. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/cli.py +0 -0
  74. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/client.py +0 -0
  75. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/codegen.py +0 -0
  76. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/__init__.py +0 -0
  77. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/_common.py +0 -0
  78. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/acceptance.py +0 -0
  79. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/agent_ops.py +0 -0
  80. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/audit.py +0 -0
  81. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/backup.py +0 -0
  82. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/chat.py +0 -0
  83. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/codegen.py +0 -0
  84. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/dispatch.py +0 -0
  85. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/dispatch_workers.py +0 -0
  86. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/dr.py +0 -0
  87. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/drive.py +0 -0
  88. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/gate_a.py +0 -0
  89. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/gates.py +0 -0
  90. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/issues.py +0 -0
  91. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/lifecycle.py +0 -0
  92. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/machine.py +0 -0
  93. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/merge.py +0 -0
  94. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/milestone.py +0 -0
  95. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/plan_followup.py +0 -0
  96. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/plans.py +0 -0
  97. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/portal.py +0 -0
  98. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/pr.py +0 -0
  99. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/release.py +0 -0
  100. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/repo.py +0 -0
  101. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/report.py +0 -0
  102. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/review.py +0 -0
  103. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/scorecard.py +0 -0
  104. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/sessions.py +0 -0
  105. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/setup.py +0 -0
  106. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/status.py +0 -0
  107. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/store_migrate.py +0 -0
  108. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/terminal.py +0 -0
  109. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/test_gate.py +0 -0
  110. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/commands/tui.py +0 -0
  111. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/comments.py +0 -0
  112. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/config_reload.py +0 -0
  113. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/confirm_test.py +0 -0
  114. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/conflict_fix.py +0 -0
  115. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/dao.py +0 -0
  116. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/dashboard/__init__.py +0 -0
  117. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/dashboard/fixture.py +0 -0
  118. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/dashboard/index.html +0 -0
  119. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/dashboard/server.py +0 -0
  120. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/dashboard/terminal.py +0 -0
  121. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/dead_end.py +0 -0
  122. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/decomposition_chat.py +0 -0
  123. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/README.md +0 -0
  124. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-agent.service +0 -0
  125. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-backup.service +0 -0
  126. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-backup.timer +0 -0
  127. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-db-backup.service +0 -0
  128. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-db-backup.sh +0 -0
  129. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-db-backup.timer +0 -0
  130. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-dr-verify.service +0 -0
  131. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-dr-verify.timer +0 -0
  132. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-drive-queue.timer +0 -0
  133. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-failure-notify.service +0 -0
  134. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-fleet-watchdog.service +0 -0
  135. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  136. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-notify.service +0 -0
  137. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-notify.timer +0 -0
  138. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-release-propagate.service +0 -0
  139. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-release-propagate.timer +0 -0
  140. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-release-window.service +0 -0
  141. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-release-window.timer +0 -0
  142. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-serve.service +0 -0
  143. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-web-dist-build.service +0 -0
  144. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-web-dist-build.timer +0 -0
  145. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy/coord-web.service +0 -0
  146. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy_manifest.py +0 -0
  147. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deploy_units.py +0 -0
  148. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deprecation_telemetry.py +0 -0
  149. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/deps.py +0 -0
  150. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/diagnose.py +0 -0
  151. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/dispatch.py +0 -0
  152. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/dispatch_liveness.py +0 -0
  153. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/dist_name.py +0 -0
  154. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/dr_promote.py +0 -0
  155. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/dr_verify.py +0 -0
  156. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/drive.py +0 -0
  157. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/events.py +0 -0
  158. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/failure_class.py +0 -0
  159. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/failure_classifier.py +0 -0
  160. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/filelock.py +0 -0
  161. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/fleet_config_health.py +0 -0
  162. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/forge_availability.py +0 -0
  163. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/freshness.py +0 -0
  164. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/gate_a.py +0 -0
  165. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/gate_b.py +0 -0
  166. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/gate_snapshot.py +0 -0
  167. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/gates.py +0 -0
  168. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/gen_board_fixture.py +0 -0
  169. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/github_throttle.py +0 -0
  170. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/goal.py +0 -0
  171. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/graph_health.py +0 -0
  172. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/__init__.py +0 -0
  173. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/aggregate.py +0 -0
  174. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/__init__.py +0 -0
  175. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/_ci_pin.py +0 -0
  176. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/agent_install.py +0 -0
  177. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/cargo_targets.py +0 -0
  178. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/claude_binary.py +0 -0
  179. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/config_drift.py +0 -0
  180. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  181. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/coord_web_ci_pin.py +0 -0
  182. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/deploy_lane_facts.py +0 -0
  183. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/disk.py +0 -0
  184. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/fleet_board.py +0 -0
  185. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  186. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/fleet_phantom.py +0 -0
  187. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/fleet_unit_drift.py +0 -0
  188. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/graph.py +0 -0
  189. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/graphify_cli.py +0 -0
  190. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/index_lock.py +0 -0
  191. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/issues_sync_staleness.py +0 -0
  192. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/plan_usage.py +0 -0
  193. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/pr_churn.py +0 -0
  194. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/release_cordon.py +0 -0
  195. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/repo_state.py +0 -0
  196. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/spawned_coord.py +0 -0
  197. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/stalled_pipeline.py +0 -0
  198. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/timer_active.py +0 -0
  199. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/toolchain.py +0 -0
  200. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/unit_drift.py +0 -0
  201. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/unit_enablement.py +0 -0
  202. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/wedged_drive_queue.py +0 -0
  203. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/checks/worktrees.py +0 -0
  204. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/cli.py +0 -0
  205. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/context.py +0 -0
  206. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/fleet_snapshot.py +0 -0
  207. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/models.py +0 -0
  208. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/pypi.py +0 -0
  209. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/registry.py +0 -0
  210. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/render.py +0 -0
  211. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/health/units.py +0 -0
  212. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/hooks.py +0 -0
  213. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/housekeeping.py +0 -0
  214. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/interactive.py +0 -0
  215. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/invariant_alarms.py +0 -0
  216. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/issue_store.py +0 -0
  217. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/issues_sync_status.py +0 -0
  218. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/liveness_auditor.py +0 -0
  219. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/machine_fault.py +0 -0
  220. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/machine_metrics.py +0 -0
  221. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/machine_onboard.py +0 -0
  222. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/machine_pause.py +0 -0
  223. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/machine_stats.py +0 -0
  224. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/merge_queue.py +0 -0
  225. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/milestone_chat.py +0 -0
  226. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/milestone_dispatch.py +0 -0
  227. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/milestone_gate.py +0 -0
  228. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/milestone_order.py +0 -0
  229. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/mock_author.py +0 -0
  230. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/models.py +0 -0
  231. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/network.py +0 -0
  232. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/new_issue_chat.py +0 -0
  233. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/notifier/__init__.py +0 -0
  234. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/notifier/baseline.py +0 -0
  235. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/notifier/cli.py +0 -0
  236. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/notifier/collect.py +0 -0
  237. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/notifier/digest.py +0 -0
  238. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/notifier/models.py +0 -0
  239. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/notifier/predicate.py +0 -0
  240. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/notifier/service.py +0 -0
  241. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/notifier/store.py +0 -0
  242. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/notifier/transport.py +0 -0
  243. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/notify.py +0 -0
  244. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/openapi.py +0 -0
  245. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/overlap_fence.py +0 -0
  246. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/overlap_predict.py +0 -0
  247. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/parentage.py +0 -0
  248. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/parentage_github.py +0 -0
  249. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/pipeline.py +0 -0
  250. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/plan_parser.py +0 -0
  251. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/plans.py +0 -0
  252. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/platform_paths.py +0 -0
  253. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/portal_bridge.py +0 -0
  254. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/portal_store.py +0 -0
  255. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/portal_sync.py +0 -0
  256. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/pr_body_lint.py +0 -0
  257. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/prereqs.py +0 -0
  258. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/progress.py +0 -0
  259. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/providers/__init__.py +0 -0
  260. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/providers/base.py +0 -0
  261. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/providers/claude.py +0 -0
  262. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/providers/claude_pty.py +0 -0
  263. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/providers/opencode.py +0 -0
  264. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/queue_diagnose.py +0 -0
  265. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/reconcile.py +0 -0
  266. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/reconcile_tick.py +0 -0
  267. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/refine_chat.py +0 -0
  268. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/release_cordon.py +0 -0
  269. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/release_propagate.py +0 -0
  270. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/release_verify.py +0 -0
  271. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/release_window.py +0 -0
  272. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/repo_dormancy.py +0 -0
  273. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/repo_edit.py +0 -0
  274. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/repo_onboard.py +0 -0
  275. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/reports.py +0 -0
  276. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/rest_schema.py +0 -0
  277. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/revalidate.py +0 -0
  278. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/review.py +0 -0
  279. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/scorecard.py +0 -0
  280. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/self_health.py +0 -0
  281. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/serve_app.py +0 -0
  282. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  283. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  284. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  285. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  286. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  287. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/skills/portal-followup/SKILL.md +0 -0
  288. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/skills/release-now/SKILL.md +0 -0
  289. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  290. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  291. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/skills/update-issue/SKILL.md +0 -0
  292. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/smoke.py +0 -0
  293. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/spend_ceiling.py +0 -0
  294. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/split_work.py +0 -0
  295. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/sql.py +0 -0
  296. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/stage_projection.py +0 -0
  297. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/store_migrate.py +0 -0
  298. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/store_parity.py +0 -0
  299. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/templates/deploy-cloudflare.node.yml +0 -0
  300. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/test_author.py +0 -0
  301. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/test_chat.py +0 -0
  302. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/test_orchestrator.py +0 -0
  303. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/test_report.py +0 -0
  304. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/tui_release.py +0 -0
  305. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/uat_checks.py +0 -0
  306. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/usage.py +0 -0
  307. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/usage_limits.py +0 -0
  308. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/usage_rollup.py +0 -0
  309. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coord/worker_events.py +0 -0
  310. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/coordinator.example.yml +0 -0
  311. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-agent.service +0 -0
  312. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-backup.service +0 -0
  313. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-backup.timer +0 -0
  314. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-db-backup.service +0 -0
  315. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-db-backup.sh +0 -0
  316. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-db-backup.timer +0 -0
  317. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-dr-verify.service +0 -0
  318. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-dr-verify.timer +0 -0
  319. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-drive-queue.timer +0 -0
  320. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-failure-notify.service +0 -0
  321. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-failure-notify.sh +0 -0
  322. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-fleet-watchdog.service +0 -0
  323. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-fleet-watchdog.timer +0 -0
  324. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-notify.service +0 -0
  325. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-notify.timer +0 -0
  326. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-release-propagate.service +0 -0
  327. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-release-propagate.timer +0 -0
  328. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-release-window.service +0 -0
  329. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-release-window.timer +0 -0
  330. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-serve.service +0 -0
  331. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-web-dist-build.service +0 -0
  332. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-web-dist-build.sh +0 -0
  333. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-web-dist-build.timer +0 -0
  334. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-web-rollback.sh +0 -0
  335. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/coord-web.service +0 -0
  336. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/deploy/node-shim.sh +0 -0
  337. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/ADR_COORD_TUI_CI.md +0 -0
  338. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  339. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/ADR_COORD_WEB_CI.md +0 -0
  340. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/ADR_COORD_WEB_DIST.md +0 -0
  341. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  342. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/AGENT_OPERATIONS.md +0 -0
  343. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/ARCHITECTURE.md +0 -0
  344. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/ARCH_SECURITY_GATES.md +0 -0
  345. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/COCKPIT.md +0 -0
  346. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/CONTROL_CENTER.md +0 -0
  347. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/COST_DISCIPLINE.md +0 -0
  348. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/CROSS_PLATFORM.md +0 -0
  349. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/CUSTOMER_FACING_APPS.md +0 -0
  350. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/CUSTOMER_PORTAL.md +0 -0
  351. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/DATA_STORE_SELECTION.md +0 -0
  352. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/DISASTER_RECOVERY.md +0 -0
  353. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/DRIVE_QUEUE.md +0 -0
  354. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/EPHEMERAL_WORKERS.md +0 -0
  355. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/FORGE_MIGRATION.md +0 -0
  356. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/GRAPHIFY_SETUP.md +0 -0
  357. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/ISSUE_GUIDANCE.md +0 -0
  358. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/MAC_MINI.md +0 -0
  359. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  360. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/NOTIFIER.md +0 -0
  361. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/OPENCODE_VERIFICATION.md +0 -0
  362. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/OPERATING_GOTCHAS.md +0 -0
  363. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/OPERATOR_GUIDES.md +0 -0
  364. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/ORACLE_LOOP.md +0 -0
  365. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/PHONE_WEBAPP.md +0 -0
  366. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/PIPELINE_V2.md +0 -0
  367. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/PLATFORM_EVOLUTION.md +0 -0
  368. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/SECOND_BACKEND.md +0 -0
  369. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/STORE_SERVICE.md +0 -0
  370. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  371. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/WEB_CONTROL_CENTER.md +0 -0
  372. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/WSL_WINDOWS_WORKER.md +0 -0
  373. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/mocks/web/README.md +0 -0
  374. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/mocks/web/_tokens.css +0 -0
  375. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/mocks/web/issue-detail.html +0 -0
  376. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/mocks/web/pipeline-narrow.html +0 -0
  377. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/docs/mocks/web/pipeline-wide.html +0 -0
  378. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/graphify-out/.gitignore +0 -0
  379. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/install-agent.sh +0 -0
  380. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/pyproject.toml +0 -0
  381. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/audit_review_verdict_overrides.py +0 -0
  382. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  383. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/azure-workers/build-worker-image.sh +0 -0
  384. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/azure-workers/coordinator-machine.py +0 -0
  385. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/azure-workers/dr-down.sh +0 -0
  386. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/azure-workers/dr-up.sh +0 -0
  387. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/azure-workers/epic-down.sh +0 -0
  388. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/azure-workers/epic-up.sh +0 -0
  389. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/azure-workers/preflight.sh +0 -0
  390. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/azure-workers/provision-server.sh +0 -0
  391. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/azure-workers/provision-worker.sh +0 -0
  392. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  393. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  394. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/azure-workers/throwaway-vm.sh +0 -0
  395. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/azure-workers/verify-github-token.sh +0 -0
  396. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/check_gh_argv_containment.py +0 -0
  397. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/codegen.py +0 -0
  398. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/coord-test-runner.sh +0 -0
  399. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  400. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  401. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  402. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  403. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/coord-venv-rollback.sh +0 -0
  404. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/drive-batch.sh +0 -0
  405. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/extract-coord-tui.sh +0 -0
  406. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/fleet_watchdog.py +0 -0
  407. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/gen_board_fixture.py +0 -0
  408. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/gen_mock_index.py +0 -0
  409. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/lib/provision-core.sh +0 -0
  410. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/next_release_tag.py +0 -0
  411. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/provision-machine.sh +0 -0
  412. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/run_tests_in_populated_home.sh +0 -0
  413. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/run_tests_without_gh.sh +0 -0
  414. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/setup-macmini.sh +0 -0
  415. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/smoke_437_interactive.py +0 -0
  416. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/verify-provision-noble.sh +0 -0
  417. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/verify_878_review_capture.py +0 -0
  418. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/verify_release_published.py +0 -0
  419. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/scripts/verify_release_wheel.py +0 -0
  420. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/setup.cfg +0 -0
  421. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/SMOKE_SET.md +0 -0
  422. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/__init__.py +0 -0
  423. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/acceptance/ms-37/conftest.py +0 -0
  424. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/acceptance/ms-37/contract.md +0 -0
  425. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/acceptance/ms-37/manifest.yml +0 -0
  426. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  427. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  428. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/acceptance/ms-51/contract.md +0 -0
  429. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  430. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  431. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/acceptance/ms-51/manifest.yml +0 -0
  432. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  433. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/acceptance/ms-51/tsconfig.json +0 -0
  434. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  435. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/backends.py +0 -0
  436. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/conftest.py +0 -0
  437. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/board-pipeline-basic.json +0 -0
  438. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  439. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  440. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  441. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  442. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/playwright/all_pass.json +0 -0
  443. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  444. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/playwright/mixed_fail.json +0 -0
  445. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  446. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  447. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/playwright/skip.json +0 -0
  448. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/playwright/truncated.json +0 -0
  449. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  450. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  451. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  452. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  453. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  454. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  455. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  456. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  457. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_acceptance.py +0 -0
  458. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_acceptance_drivers.py +0 -0
  459. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent.py +0 -0
  460. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_api_error.py +0 -0
  461. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_app.py +0 -0
  462. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_branch_base.py +0 -0
  463. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_branch_capture.py +0 -0
  464. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_config_free_1712.py +0 -0
  465. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_deploy_units_endpoint.py +0 -0
  466. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_dirty_worktree.py +0 -0
  467. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  468. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_graph_self_heal.py +0 -0
  469. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_health_h3.py +0 -0
  470. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_idle_restart.py +0 -0
  471. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_push_failure.py +0 -0
  472. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_reap.py +0 -0
  473. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_repos_and_pull.py +0 -0
  474. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_restart_services_endpoint.py +0 -0
  475. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_skills_self_heal.py +0 -0
  476. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_startup_diagnostics.py +0 -0
  477. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_update.py +0 -0
  478. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_update_bluegreen.py +0 -0
  479. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_usage_limit.py +0 -0
  480. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_agent_zero_commit.py +0 -0
  481. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_ambient_home_isolation.py +0 -0
  482. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_approve_capability_reroute_3241.py +0 -0
  483. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_approve_dependency_busy_2804.py +0 -0
  484. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_approve_reject_plan.py +0 -0
  485. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_approve_usage_gate.py +0 -0
  486. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_approved_work_2532.py +0 -0
  487. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_approved_work_2996.py +0 -0
  488. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_assignment_already_recorded_daemon.py +0 -0
  489. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_audit_log.py +0 -0
  490. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_audit_outcome.py +0 -0
  491. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_audit_query.py +0 -0
  492. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_auto_loop.py +0 -0
  493. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_auto_release_publish_2035.py +0 -0
  494. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_backend_selection.py +0 -0
  495. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_backup.py +0 -0
  496. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_base_checkout_restore.py +0 -0
  497. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_block_log.py +0 -0
  498. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_board_cap_762.py +0 -0
  499. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_board_fixture.py +0 -0
  500. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_board_read_path.py +0 -0
  501. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_board_schema.py +0 -0
  502. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_board_service.py +0 -0
  503. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_board_state.py +0 -0
  504. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_brain.py +0 -0
  505. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_branch_model.py +0 -0
  506. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_bug_intake.py +0 -0
  507. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_build_worker_image_env_update.py +0 -0
  508. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cargo_cache.py +0 -0
  509. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_check_gh_argv_containment.py +0 -0
  510. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_ci_acceptance_gate_1950.py +0 -0
  511. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_ci_fix.py +0 -0
  512. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_ci_github.py +0 -0
  513. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_ci_gitlab.py +0 -0
  514. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_ci_parity_2091.py +0 -0
  515. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_ci_store.py +0 -0
  516. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_claim.py +0 -0
  517. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_claude_md_budget.py +0 -0
  518. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_claude_setup_token.py +0 -0
  519. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_acceptance.py +0 -0
  520. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_assign.py +0 -0
  521. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  522. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_assign_interactive_remote.py +0 -0
  523. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_assign_provider.py +0 -0
  524. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  525. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_audit.py +0 -0
  526. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_chat_continue.py +0 -0
  527. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_codegen.py +0 -0
  528. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_decide.py +0 -0
  529. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_diagnose_capability_rules.py +0 -0
  530. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_diagnose_config_provenance.py +0 -0
  531. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_diagnose_forge_availability.py +0 -0
  532. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_diagnose_graph.py +0 -0
  533. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_diagnose_self.py +0 -0
  534. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_diagnose_test_coverage.py +0 -0
  535. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_doctor.py +0 -0
  536. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_doctor_config_free_1801.py +0 -0
  537. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  538. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  539. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_drive.py +0 -0
  540. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_escalate.py +0 -0
  541. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_fix_headless_review.py +0 -0
  542. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_gate_a.py +0 -0
  543. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_install_drift.py +0 -0
  544. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_install_skills.py +0 -0
  545. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_issue_comment.py +0 -0
  546. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_issue_create_label.py +0 -0
  547. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_issue_reopen.py +0 -0
  548. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_issue_view_list.py +0 -0
  549. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_merge.py +0 -0
  550. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_milestone_assign.py +0 -0
  551. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_milestone_capture.py +0 -0
  552. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_milestone_chat_add_child.py +0 -0
  553. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_milestone_dispatch.py +0 -0
  554. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_milestone_gate_b.py +0 -0
  555. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_milestone_gate_c.py +0 -0
  556. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_milestone_order.py +0 -0
  557. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  558. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_milestone_ship.py +0 -0
  559. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_network.py +0 -0
  560. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_new_issue_chat.py +0 -0
  561. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_plans.py +0 -0
  562. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_portal.py +0 -0
  563. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_pr.py +0 -0
  564. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_pull_artifact.py +0 -0
  565. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_queue.py +0 -0
  566. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_reattach_sessions.py +0 -0
  567. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_refine_board.py +0 -0
  568. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_release_preflight.py +0 -0
  569. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_release_propagate.py +0 -0
  570. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_release_window.py +0 -0
  571. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_repo_2220.py +0 -0
  572. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  573. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_scorecard.py +0 -0
  574. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_serve_store_backend_3084.py +0 -0
  575. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_set_review_findings.py +0 -0
  576. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_status_advisory_terminal.py +0 -0
  577. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_status_contested_tag.py +0 -0
  578. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_status_invariant_alarms.py +0 -0
  579. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_status_machine_fault.py +0 -0
  580. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_status_merge_queue.py +0 -0
  581. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_status_provider.py +0 -0
  582. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_status_retried_3340.py +0 -0
  583. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_status_review_finalizing.py +0 -0
  584. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_status_test_failed_tag.py +0 -0
  585. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_status_usage_limit.py +0 -0
  586. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_sync_comments_873.py +0 -0
  587. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_test_plan.py +0 -0
  588. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_track.py +0 -0
  589. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_tui_update.py +0 -0
  590. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cli_wait.py +0 -0
  591. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_client.py +0 -0
  592. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_client_base_install.py +0 -0
  593. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_client_config_cache_atomic_3052.py +0 -0
  594. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_client_resource_migration_1946.py +0 -0
  595. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_commands_common.py +0 -0
  596. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_comments.py +0 -0
  597. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_completion_summary.py +0 -0
  598. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_config.py +0 -0
  599. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_config_acceptance.py +0 -0
  600. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_config_audit.py +0 -0
  601. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_config_drift_check.py +0 -0
  602. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_config_pricing.py +0 -0
  603. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  604. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_config_usage_gate.py +0 -0
  605. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_confirm_test.py +0 -0
  606. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_conflict_fix.py +0 -0
  607. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_conflict_fix_semantic.py +0 -0
  608. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  609. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_coord_test.py +0 -0
  610. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  611. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_coord_test_runner_baseline.py +0 -0
  612. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_coord_test_runner_populated_home.py +0 -0
  613. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_coord_test_runner_routing.py +0 -0
  614. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_coord_test_runner_toolchain.py +0 -0
  615. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_coord_uat.py +0 -0
  616. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_coord_web_sse_restart_live.py +0 -0
  617. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_coordinator_machine.py +0 -0
  618. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_cross_platform_imports.py +0 -0
  619. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dao.py +0 -0
  620. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dashboard.py +0 -0
  621. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dashboard_api.py +0 -0
  622. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dashboard_fixture.py +0 -0
  623. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dashboard_server.py +0 -0
  624. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dashboard_terminal.py +0 -0
  625. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dashboard_terminal_live.py +0 -0
  626. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dead_end.py +0 -0
  627. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_decomposition_chat.py +0 -0
  628. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_deploy_coord_db_backup.py +0 -0
  629. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_deploy_coord_web_dist.py +0 -0
  630. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_deploy_coord_web_rollback.py +0 -0
  631. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_deploy_db_backup_unit.py +0 -0
  632. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_deploy_drive_queue_unit.py +0 -0
  633. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_deploy_failure_notify_unit.py +0 -0
  634. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_deploy_manifest.py +0 -0
  635. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_deploy_notify_unit.py +0 -0
  636. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_deploy_units_lane.py +0 -0
  637. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_deploy_web_unit.py +0 -0
  638. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_deprecation_telemetry.py +0 -0
  639. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_deps.py +0 -0
  640. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_diagnose.py +0 -0
  641. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dispatch.py +0 -0
  642. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dispatch_liveness.py +0 -0
  643. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dispatch_target_validation.py +0 -0
  644. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dispatch_workers.py +0 -0
  645. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dist_name.py +0 -0
  646. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_done_housekeeping.py +0 -0
  647. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dr_azure_scripts.py +0 -0
  648. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dr_promote.py +0 -0
  649. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_dr_verify.py +0 -0
  650. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_drive.py +0 -0
  651. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_drive_machine_fault.py +0 -0
  652. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_drive_queue_blocked_rendering.py +0 -0
  653. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_drive_queue_launch_argv.py +0 -0
  654. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  655. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_drive_queue_roll_pending.py +0 -0
  656. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  657. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_drive_state.py +0 -0
  658. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_drive_tmux.py +0 -0
  659. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_epic_up_capability_detection.py +0 -0
  660. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  661. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_epic_up_image_provenance.py +0 -0
  662. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_errors.py +0 -0
  663. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_events.py +0 -0
  664. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_failure_class.py +0 -0
  665. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_failure_classifier.py +0 -0
  666. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_filelock.py +0 -0
  667. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  668. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_fix_escalation_classifier.py +0 -0
  669. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_fix_of_force_override.py +0 -0
  670. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_fleet_config_health.py +0 -0
  671. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_fleet_health_probes.py +0 -0
  672. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_fleet_health_snapshot.py +0 -0
  673. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_fleet_watchdog.py +0 -0
  674. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_forge_availability.py +0 -0
  675. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_freshness.py +0 -0
  676. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_gate_a.py +0 -0
  677. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_gate_b.py +0 -0
  678. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_gate_snapshot_staleness.py +0 -0
  679. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_gates.py +0 -0
  680. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  681. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_gen_mock_index.py +0 -0
  682. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_generated_rust_fixture.py +0 -0
  683. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_generated_rust_requests.py +0 -0
  684. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_generated_types_fixture.py +0 -0
  685. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_github_throttle.py +0 -0
  686. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_goal.py +0 -0
  687. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_graph_health.py +0 -0
  688. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_graph_selfheal_absent_2237.py +0 -0
  689. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_handoff.py +0 -0
  690. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_checks.py +0 -0
  691. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_cli.py +0 -0
  692. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_cli_graph.py +0 -0
  693. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_config.py +0 -0
  694. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_context.py +0 -0
  695. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_coord_tui_ci_pin.py +0 -0
  696. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_coord_web_ci_pin.py +0 -0
  697. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_deploy_lane_facts.py +0 -0
  698. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_fix.py +0 -0
  699. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_incident_regression.py +0 -0
  700. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_issues_sync_staleness.py +0 -0
  701. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_pr_churn.py +0 -0
  702. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_pypi.py +0 -0
  703. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_registry.py +0 -0
  704. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_release_cordon_probe.py +0 -0
  705. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_timer_active.py +0 -0
  706. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_toolchain.py +0 -0
  707. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_unit_drift.py +0 -0
  708. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_unit_enablement.py +0 -0
  709. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_health_wedged_drive_queue.py +0 -0
  710. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_hooks.py +0 -0
  711. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_housekeeping.py +0 -0
  712. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_human_attended_437.py +0 -0
  713. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_init.py +0 -0
  714. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_install_agent_venv_2911.py +0 -0
  715. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_integration.py +0 -0
  716. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_interactive_briefing_echo.py +0 -0
  717. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_interactive_pane_log_2541.py +0 -0
  718. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_interactive_prefill_state.py +0 -0
  719. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_interactive_session_relaunch.py +0 -0
  720. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_interactive_test_verdict_backstop.py +0 -0
  721. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_interactive_token_attribution.py +0 -0
  722. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_interactive_worktree.py +0 -0
  723. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_invariant_alarms.py +0 -0
  724. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_issue_store_seam.py +0 -0
  725. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_issues_sync_status.py +0 -0
  726. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_liveness_auditor.py +0 -0
  727. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_liveness_notify.py +0 -0
  728. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_lock_contention_ratchet.py +0 -0
  729. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_machine_fault.py +0 -0
  730. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_machine_metrics.py +0 -0
  731. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_machine_onboard.py +0 -0
  732. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_machine_pause.py +0 -0
  733. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_machine_stats.py +0 -0
  734. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_merge_queue.py +0 -0
  735. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_merge_verify.py +0 -0
  736. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_milestone_chat.py +0 -0
  737. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_milestone_dispatch.py +0 -0
  738. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_milestone_gate.py +0 -0
  739. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_milestone_order.py +0 -0
  740. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_milestone_seam.py +0 -0
  741. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_mock_author.py +0 -0
  742. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_model_tiering.py +0 -0
  743. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_models.py +0 -0
  744. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_models_config_labels.py +0 -0
  745. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_needs_attention.py +0 -0
  746. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_network.py +0 -0
  747. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_new_issue_chat.py +0 -0
  748. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_next_release_tag.py +0 -0
  749. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_node_shim.py +0 -0
  750. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_notifier_baseline.py +0 -0
  751. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_notifier_cli.py +0 -0
  752. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_notifier_collect.py +0 -0
  753. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_notifier_config.py +0 -0
  754. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_notifier_drive_seam.py +0 -0
  755. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_notifier_isolation.py +0 -0
  756. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_notifier_predicate.py +0 -0
  757. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_notifier_quiet_hours.py +0 -0
  758. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_notifier_service.py +0 -0
  759. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_notify.py +0 -0
  760. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_notify_drain.py +0 -0
  761. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_openapi.py +0 -0
  762. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_operational_defaults.py +0 -0
  763. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_overlap_fence.py +0 -0
  764. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_overlap_predict.py +0 -0
  765. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_packaged_deploy_units.py +0 -0
  766. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_parentage.py +0 -0
  767. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_paste_landed.py +0 -0
  768. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  769. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_pipeline.py +0 -0
  770. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_plan_followup_approve_plan_command.py +0 -0
  771. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_plan_followup_pr_command.py +0 -0
  772. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_plan_followup_review_command.py +0 -0
  773. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_plan_only.py +0 -0
  774. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_plan_parser.py +0 -0
  775. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_platform_paths.py +0 -0
  776. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_portal_bridge.py +0 -0
  777. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_portal_config.py +0 -0
  778. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_portal_store.py +0 -0
  779. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_portal_sync.py +0 -0
  780. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_pr_body_lint.py +0 -0
  781. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_prereqs.py +0 -0
  782. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_production_db_guard.py +0 -0
  783. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_progress.py +0 -0
  784. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_provider_seam.py +0 -0
  785. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_providers.py +0 -0
  786. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_providers_config_labels.py +0 -0
  787. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_providers_pty.py +0 -0
  788. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_provision_core.py +0 -0
  789. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_provision_machine.py +0 -0
  790. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_py_rust_mirror_inventory.py +0 -0
  791. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_quiet_hours.py +0 -0
  792. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_quiet_hours_store_2146.py +0 -0
  793. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_reap_merged_sessions.py +0 -0
  794. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_reap_stale_interactive_tick.py +0 -0
  795. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_reconcile.py +0 -0
  796. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_reconcile_branch.py +0 -0
  797. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_reconcile_completions.py +0 -0
  798. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  799. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_reconcile_merges.py +0 -0
  800. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_reconcile_no_agent_record.py +0 -0
  801. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_reconcile_tick.py +0 -0
  802. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_reconcile_usage_limit_done.py +0 -0
  803. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_refine_chat.py +0 -0
  804. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_release_cordon_2101.py +0 -0
  805. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  806. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_release_cordon_deadlock_2240.py +0 -0
  807. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  808. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_release_cordon_stuck_2490.py +0 -0
  809. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_release_propagate.py +0 -0
  810. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_release_propagate_threshold.py +0 -0
  811. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_release_roll_between_legs_2854.py +0 -0
  812. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_release_roll_window_handoff.py +0 -0
  813. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_release_unified_1242.py +0 -0
  814. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_release_verify.py +0 -0
  815. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_release_window.py +0 -0
  816. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_remote_auto_prune.py +0 -0
  817. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_remote_interactive_reaper.py +0 -0
  818. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_repo_add.py +0 -0
  819. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_repo_dormancy.py +0 -0
  820. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_repo_edit_2220.py +0 -0
  821. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_repo_graph_fleet_2237.py +0 -0
  822. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_repo_onboard_2220.py +0 -0
  823. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_report_result_push.py +0 -0
  824. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_reports.py +0 -0
  825. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_retry.py +0 -0
  826. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_retry_advisory_1606.py +0 -0
  827. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_retry_escalation_classify_3360.py +0 -0
  828. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_retry_type_1636.py +0 -0
  829. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_revalidate.py +0 -0
  830. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_review.py +0 -0
  831. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_review_end_review_without_verdict.py +0 -0
  832. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_review_parse_failure_diagnostic.py +0 -0
  833. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_review_reaffirm.py +0 -0
  834. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_review_state.py +0 -0
  835. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_review_verdict_backstop.py +0 -0
  836. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_review_verdict_override_audit.py +0 -0
  837. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_review_verdict_relay.py +0 -0
  838. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_review_zero_commits.py +0 -0
  839. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_scoped_review_wiring.py +0 -0
  840. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_scorecard.py +0 -0
  841. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_self_health.py +0 -0
  842. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_serve.py +0 -0
  843. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_serve_app.py +0 -0
  844. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_serve_app_board_trim.py +0 -0
  845. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_serve_rest_routes.py +0 -0
  846. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_session.py +0 -0
  847. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_slice_issue_attribution.py +0 -0
  848. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_smoke.py +0 -0
  849. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  850. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_smoke_live_checkout_restore.py +0 -0
  851. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_smoke_workflow.py +0 -0
  852. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_spend_ceiling.py +0 -0
  853. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_spend_ceiling_coordinator.py +0 -0
  854. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_split.py +0 -0
  855. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_split_work.py +0 -0
  856. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_sql_dialect.py +0 -0
  857. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_sqlite_connect_ratchet.py +0 -0
  858. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_stage_projection.py +0 -0
  859. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_stale_busy_reviewer_697.py +0 -0
  860. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_stalled_pipeline.py +0 -0
  861. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_state_review_findings_daemon.py +0 -0
  862. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_status_fleet_footer.py +0 -0
  863. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_stop_1567.py +0 -0
  864. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_store_contract.py +0 -0
  865. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_store_migrate.py +0 -0
  866. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_stuck.py +0 -0
  867. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  868. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_terminal_command.py +0 -0
  869. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_test_author.py +0 -0
  870. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_test_chat.py +0 -0
  871. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_test_orchestrator.py +0 -0
  872. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_test_report.py +0 -0
  873. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_test_verdict_parsing.py +0 -0
  874. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_test_verdict_transcript_floor.py +0 -0
  875. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_text_io_encoding_audit.py +0 -0
  876. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_thin_client_board_audit.py +0 -0
  877. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_thin_client_config_load_1080.py +0 -0
  878. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_thin_client_daemon_routing_906.py +0 -0
  879. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_throwaway_vm.py +0 -0
  880. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_tmux_host.py +0 -0
  881. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_tmux_session.py +0 -0
  882. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_transcript_floor.py +0 -0
  883. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_uat_checks.py +0 -0
  884. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_usage.py +0 -0
  885. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_usage_limits.py +0 -0
  886. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_usage_rollup.py +0 -0
  887. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_venv_live_install_2121.py +0 -0
  888. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_version_single_source.py +0 -0
  889. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_watch.py +0 -0
  890. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  891. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_worker_env_venv_isolation.py +0 -0
  892. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_worker_events.py +0 -0
  893. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_worker_image_pin_sync.py +0 -0
  894. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_worker_safety.py +0 -0
  895. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_worker_test_scoping.py +0 -0
  896. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_worktree.py +0 -0
  897. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  898. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/test_write_parity.py +0 -0
  899. {code_coordinator-0.5.494 → code_coordinator-0.5.496}/tests/write_parity.py +0 -0
@@ -5,6 +5,8 @@ on:
5
5
  branches: [main]
6
6
  pull_request:
7
7
  branches: [main]
8
+ # #3392: the `postgres` job below is opt-in and runs ONLY from here.
9
+ workflow_dispatch:
8
10
 
9
11
  jobs:
10
12
  test:
@@ -371,6 +373,21 @@ jobs:
371
373
  # what every other job's `pip install -e ".[dev]"` pulls in.
372
374
  postgres:
373
375
  runs-on: ubuntu-latest
376
+ # #3392, 2026-09-18: taken out of automatic CI by operator decision -- the
377
+ # Postgres migration is not current work, and until it is this job is pure
378
+ # noise. It gates nothing (`continue-on-error: true` below, and it is not a
379
+ # required check in branch protection), emits ~3700
380
+ # ProductionDatabaseGuardError that dominate every `--log-failed` read of
381
+ # this workflow, and costs 65-70 min of runner time per push to main. It
382
+ # misdirected #3378 item 1, #3380 and #3385 -- all three were scoped as
383
+ # "make main green" against a job that cannot redden main.
384
+ #
385
+ # RESTORE by deleting this one `if:` line when the migration becomes active
386
+ # work. Everything below is unchanged and still correct. Sequence then is:
387
+ # remove the `if:`, work the failure list down, THEN remove
388
+ # `continue-on-error` -- that last step is what turns this into a real gate
389
+ # and it is the deliberate END of that work, not the start.
390
+ if: github.event_name == 'workflow_dispatch'
374
391
  continue-on-error: true
375
392
  services:
376
393
  postgres:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.494
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.494
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
+ }
@@ -245,6 +245,17 @@ class BoardIssue:
245
245
  synced_at: float | None = None
246
246
  milestone_number: int | None = None
247
247
  milestone_title: str | None = None
248
+ # #3384: GitHub's own `stateReason` — `"reopened"` when a human explicitly
249
+ # reopened this issue via `gh issue reopen`, `""` for an issue that has
250
+ # never been closed. See `coord.drive_queue.IssueFacts.reopened`.
251
+ #
252
+ # ABSENT, not `""`, on the wire when it is the empty default: it would
253
+ # otherwise cost ~20 bytes on every issue row of every poll to say nothing
254
+ # (`coord.board_wire._drop_default_state_reason`, which is also why it is
255
+ # not in this DTO's `required` list — it has a default). Read it as
256
+ # `row.get("state_reason") or ""`; the Rust side gets `#[serde(default)]`
257
+ # from `coord.codegen`.
258
+ state_reason: str = ""
248
259
 
249
260
 
250
261
  @dataclasses.dataclass(kw_only=True)
@@ -65,6 +65,19 @@ Rust call site of ``OpenIssue.body`` / ``PipelineIssue.body`` first. So the
65
65
  body now leaves the collection wire for open issues too, and
66
66
  :func:`bound_issue_row` keeps only the machine-parsed *residue* a client
67
67
  cannot re-fetch in time — see :data:`ALLOWED_GLOB_MARKER`.
68
+
69
+ **#3384: a defaulted flag costs its bytes on EVERY row.** The reopen witness
70
+ ``issues.state_reason`` carries a value on the handful of rows GitHub
71
+ actually set one on, and the empty default on every other issue on the
72
+ board — and an empty-but-present key is ~20 bytes of wire per row per poll,
73
+ which on the #1791 guard's 3000-row seed is ~57 KB and pushed the payload
74
+ straight through :data:`BOARD_PAYLOAD_BYTE_BUDGET`. So the default is
75
+ dropped from the wire entirely (:func:`_drop_default_state_reason`) and the
76
+ key is present only when it says something. This is the same additive-only
77
+ convention the ``<field>_truncated`` flags already follow, and it is the
78
+ rule to apply to the NEXT defaulted field somebody adds to
79
+ ``coord/board_schema.py``: an always-present default is a per-row tax on a
80
+ payload that is polled every few seconds and whose ETag never matches.
68
81
  """
69
82
 
70
83
  from __future__ import annotations
@@ -253,9 +266,52 @@ def _machine_readable_residue(body: str) -> str:
253
266
  )
254
267
 
255
268
 
269
+ def _drop_default_state_reason(row: dict) -> None:
270
+ """#3384: drop ``state_reason`` from the wire when it is the empty default.
271
+
272
+ ``issues.state_reason`` is GitHub's own ``stateReason``: ``"reopened"``
273
+ on an issue a human explicitly reopened, and ``''`` on every issue that
274
+ has never been closed — i.e. on essentially the whole board. Shipping
275
+ the empty default costs ~20 bytes on EVERY issue row of EVERY poll (~57 KB
276
+ on the #1791 guard's 3000-row seed, enough on its own to breach
277
+ :data:`BOARD_PAYLOAD_BYTE_BUDGET`) to tell a client something it already
278
+ assumes.
279
+
280
+ Safe because absent and empty are the SAME answer to every consumer, by
281
+ construction rather than by luck:
282
+
283
+ * ``coord.drive_queue.build_board_view`` reads it as
284
+ ``str(row.get("state_reason") or "").lower() == "reopened"`` — the one
285
+ question anything asks of this field — so a missing key and an empty
286
+ one both yield ``IssueFacts.reopened is False``. That is also what
287
+ keeps this wire cut from splitting the answer in two: the daemon-host
288
+ local path (``coord.drive_state._local_issue_rows``, which never runs
289
+ through this module) still carries ``''``, and both paths land on the
290
+ identical fact.
291
+ * The Rust ``OpenIssue.state_reason`` is generated with
292
+ ``#[serde(default)]`` (``coord.codegen._rust_auto_field``), so an
293
+ absent key deserializes to ``String::new()``.
294
+ * ``state_reason`` is not in ``BoardIssue``'s ``required`` list in
295
+ ``/openapi.json`` (it has a dataclass default), so omitting it stays
296
+ inside the published contract.
297
+
298
+ A NON-empty value is always kept — this drops the default, it does not
299
+ filter for ``"reopened"`` specifically, so a value GitHub starts sending
300
+ that we do not yet interpret still reaches clients intact.
301
+ """
302
+ if not row.get("state_reason"):
303
+ row.pop("state_reason", None)
304
+
305
+
256
306
  def bound_issue_row(row: dict) -> None:
257
307
  """Apply the wire policy to one ``/board`` issue row (mutates).
258
308
 
309
+ **The empty ``state_reason`` default is dropped from every issue row**
310
+ (#3384), tracking issues included — see
311
+ :func:`_drop_default_state_reason`. Deliberately above the epic
312
+ early-return below, so the wire shape of that field does not depend on
313
+ which kind of issue a row happens to be.
314
+
259
315
  **Tracking (epic) issues are exempt from the body cap.** The TUI's
260
316
  Milestone DAG parses ``## Work order`` out of the tracking issue's body
261
317
  *client-side* (`milestone_dag.rs::milestones_with_work_orders` — it does
@@ -282,6 +338,7 @@ def bound_issue_row(row: dict) -> None:
282
338
  exactly as for a closed issue, which is what arms that hydration
283
339
  (``pipeline.rs::issue_body_fetch_target``).
284
340
  """
341
+ _drop_default_state_reason(row)
285
342
  if _is_tracking_issue(row):
286
343
  return
287
344
  if _is_closed_issue(row):
@@ -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,
@@ -2815,13 +2817,21 @@ def _local_issue_rows() -> list[dict]:
2815
2817
 
2816
2818
  Fail-soft: an unreadable/absent table degrades to ``[]``, which puts the
2817
2819
  daemon host back on the assignment-only signals rather than aborting.
2820
+
2821
+ #3384: ``state_reason`` selected alongside ``state`` — this IS the
2822
+ ``coord drive-queue tick`` daemon-host path, so without it
2823
+ ``coord.drive_queue.IssueFacts.reopened`` would never populate on the
2824
+ one host that actually ticks the queue, and a reopened issue's stale
2825
+ ``merged`` witness would keep short-circuiting entries straight to
2826
+ ``done`` there regardless of the fix in ``build_board_view``.
2818
2827
  """
2819
2828
  from coord import sql # noqa: PLC0415
2820
2829
  from coord.db import get_connection # noqa: PLC0415
2821
2830
 
2822
2831
  try:
2823
2832
  rows = sql.execute(
2824
- get_connection(), "SELECT repo_name, number, state FROM issues"
2833
+ get_connection(),
2834
+ "SELECT repo_name, number, state, state_reason FROM issues",
2825
2835
  ).fetchall()
2826
2836
  except Exception: # noqa: BLE001 — see the fail-soft note above
2827
2837
  return []
@@ -5240,12 +5250,25 @@ def _blocked_escalation_command(entry: QueueEntry | None, key: str, reason: str)
5240
5250
  @click.option(
5241
5251
  "--max-parallel",
5242
5252
  type=int,
5243
- default=1,
5244
- show_default=True,
5253
+ default=None,
5245
5254
  help=(
5246
- "Concurrency ceiling. Capacity is counted from BOARD state, not from a "
5247
- "session count, so a drive whose observer hit its deadline (#1660) "
5248
- "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."
5249
5272
  ),
5250
5273
  )
5251
5274
  @click.option(
@@ -5293,7 +5316,7 @@ def _blocked_escalation_command(entry: QueueEntry | None, key: str, reason: str)
5293
5316
  )
5294
5317
  @_CONFIG_OPTION
5295
5318
  def drive_queue_tick(
5296
- max_parallel: int,
5319
+ max_parallel: int | None,
5297
5320
  max_parallel_per_repo: int | None,
5298
5321
  dry_run: bool,
5299
5322
  reconcile_only: bool,
@@ -5330,6 +5353,20 @@ def drive_queue_tick(
5330
5353
  reverted #2314's pinned-venv `ExecStart=` right back to a
5331
5354
  worker-overwritable path as an unnoticed side effect).
5332
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
+
5333
5370
  `--max-parallel 0` (or `--reconcile-only`, the readable spelling of the
5334
5371
  same thing — #2110) reconciles every `running` entry against the board and
5335
5372
  then stops: no capacity walk, no deferrals, no queue-level alert, no
@@ -5361,24 +5398,37 @@ def drive_queue_tick(
5361
5398
  from coord.filelock import FileLock, LockBusy, drive_queue_lock_path # noqa: PLC0415
5362
5399
  from coord.state import list_drive_queue, update_drive_queue_entry # noqa: PLC0415
5363
5400
 
5364
- if max_parallel < 0:
5365
- raise click.ClickException(
5366
- "--max-parallel must be at least 0 (0 = reconcile-only, launch "
5367
- "nothing this run — see --reconcile-only)"
5368
- )
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
5369
5421
 
5370
5422
  # #2573: an explicit `--max-parallel-per-repo` always wins; otherwise
5371
5423
  # fall back to the fleet-wide `pipeline.max_parallel_per_repo` in
5372
5424
  # coordinator.yml, and only then to the hardcoded default. Resolved
5373
- # BEFORE validation below so a bad value from either source is caught
5374
- # 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.
5375
5429
  if max_parallel_per_repo is None:
5376
- try:
5377
- from coord.commands._common import _load_config # noqa: PLC0415
5378
-
5379
- config_default = _load_config(config_path).pipeline.max_parallel_per_repo
5380
- except Exception: # noqa: BLE001 — an unreadable config must not abort the tick
5381
- config_default = None
5430
+ _cfg = _config_for_defaults()
5431
+ config_default = None if _cfg is None else _cfg.pipeline.max_parallel_per_repo
5382
5432
  max_parallel_per_repo = (
5383
5433
  DEFAULT_MAX_PARALLEL_PER_REPO if config_default is None else config_default
5384
5434
  )
@@ -5388,6 +5438,35 @@ def drive_queue_tick(
5388
5438
  "--max-parallel-per-repo must be 0 (no per-repo ceiling) or more"
5389
5439
  )
5390
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
+
5391
5470
  # #2110: `--reconcile-only` and `--max-parallel 0` are the same request —
5392
5471
  # one flag is a mnemonic for the other rather than a second code path, so
5393
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):
@@ -1049,7 +1049,16 @@ def retry_on_locked(
1049
1049
  # ("confirmed"/"unconfirmed"/"refuted"/"baseline_red") for a `test_state`
1050
1050
  # write, alongside `coord.state._record_test_verdict_local`. See
1051
1051
  # coord.models.Assignment.test_confirmation.
1052
- _DB_SCHEMA_VERSION = 18
1052
+ #
1053
+ # #3384: bumped 18 -> 19 for the new `issues.state_reason` column appended
1054
+ # to `_migrate_add_columns` below — carries GitHub's own `stateReason`
1055
+ # (`"reopened"` when a human explicitly reopened a closed issue) so
1056
+ # `coord.drive_queue.IssueFacts.reopened`/`.landed` can tell "this issue was
1057
+ # reopened for incomplete work" apart from "this issue never closed in the
1058
+ # first place" (a quadraui-style merge into a non-default branch) — both
1059
+ # read identically as `merged=True, issue_state="open"` otherwise. See
1060
+ # `coord.drive_queue.IssueFacts.landed`'s docstring.
1061
+ _DB_SCHEMA_VERSION = 19
1053
1062
 
1054
1063
 
1055
1064
  def _read_schema_version(conn: sqlite3.Connection) -> int:
@@ -2490,6 +2499,17 @@ _MIGRATE_ADD_COLUMNS: list[str] = [
2490
2499
  # See coord.models.Assignment.test_confirmation and
2491
2500
  # coord.confirm_test.TEST_CONFIRMATION_VALUES for the exhaustive set.
2492
2501
  "ALTER TABLE assignments ADD COLUMN test_confirmation TEXT",
2502
+ # #3384: GitHub's own `stateReason` for this issue — `''`/NULL for every
2503
+ # row predating this migration and for an issue that has never closed,
2504
+ # `"reopened"` (lowercased on write — see
2505
+ # `coord.state._upsert_open_issues_local`) when a human explicitly
2506
+ # reopened a previously-closed issue via `gh issue reopen`. This is the
2507
+ # ONLY witness that lets `coord.drive_queue.IssueFacts.landed` tell a
2508
+ # genuine reopen (the work is NOT done, no matter what an earlier PR
2509
+ # merge recorded) apart from a quadraui-style repo whose merged PRs never
2510
+ # auto-close the linked issue at all — both look identical as
2511
+ # `merged=True, issue_state="open"` without it.
2512
+ "ALTER TABLE issues ADD COLUMN state_reason TEXT NOT NULL DEFAULT ''",
2493
2513
  ]
2494
2514
 
2495
2515
 
@@ -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