code-coordinator 0.5.246__tar.gz → 0.5.248__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 (867) hide show
  1. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/code_coordinator.egg-info/SOURCES.txt +3 -0
  4. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/code_coordinator.egg-info/scm_file_list.json +3 -0
  5. code_coordinator-0.5.248/code_coordinator.egg-info/scm_version.json +8 -0
  6. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/agent.py +84 -29
  7. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/_common.py +52 -21
  8. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/dispatch.py +40 -2
  9. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/dispatch_workers.py +21 -2
  10. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/drive_queue.py +140 -18
  11. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/lifecycle.py +31 -2
  12. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/release.py +30 -2
  13. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/comments.py +61 -0
  14. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/config.py +29 -0
  15. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy_units.py +106 -6
  16. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/diagnose.py +268 -0
  17. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/drive.py +160 -40
  18. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/drive_queue.py +104 -36
  19. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/drive_state.py +130 -4
  20. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/freshness.py +75 -6
  21. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/github_ops.py +111 -5
  22. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/merge_queue.py +54 -11
  23. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/notify.py +145 -14
  24. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/providers/claude.py +27 -10
  25. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/providers/claude_pty.py +31 -0
  26. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/review.py +61 -43
  27. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/serve_app.py +53 -8
  28. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/skills/tui-quadraui-workflow/SKILL.md +5 -1
  29. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/smoke.py +20 -4
  30. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coordinator.example.yml +7 -3
  31. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/coord-test-runner.sh +27 -22
  32. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent.py +34 -0
  33. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_graph_self_heal.py +58 -12
  34. code_coordinator-0.5.248/tests/test_approve_dependency_busy_2804.py +155 -0
  35. code_coordinator-0.5.248/tests/test_claude_md_budget.py +50 -0
  36. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_drive_queue.py +248 -0
  37. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_release_propagate.py +51 -0
  38. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_commands_common.py +48 -0
  39. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_coord_test_runner_toolchain.py +28 -5
  40. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_deploy_units_lane.py +94 -6
  41. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_drive.py +157 -49
  42. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_drive_queue.py +131 -0
  43. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_drive_state.py +201 -0
  44. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_freshness.py +119 -0
  45. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_notify.py +21 -17
  46. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_providers.py +11 -0
  47. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_review.py +174 -1
  48. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_serve.py +246 -0
  49. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_stalled_pipeline.py +1 -1
  50. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_stuck.py +4 -4
  51. code_coordinator-0.5.248/tests/test_stuck_test_state_watchdog_2803.py +440 -0
  52. code_coordinator-0.5.246/code_coordinator.egg-info/scm_version.json +0 -8
  53. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/.claude/commands/board.md +0 -0
  54. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/.claude/commands/complete-session.md +0 -0
  55. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/.claude/commands/coordinator.md +0 -0
  56. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/.githooks/_lib.sh +0 -0
  57. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/.githooks/post-checkout +0 -0
  58. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/.githooks/post-commit +0 -0
  59. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/.githooks/post-merge +0 -0
  60. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  61. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/.github/coord-ci-acceptance.yml +0 -0
  62. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/.github/workflows/auto-release.yml +0 -0
  63. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/.github/workflows/cargo-test.yml +0 -0
  64. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/.github/workflows/publish.yml +0 -0
  65. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/.github/workflows/release-tui.yml +0 -0
  66. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/.github/workflows/test.yml +0 -0
  67. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/.gitignore +0 -0
  68. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/CLAUDE.md +0 -0
  69. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/GOAL.md +0 -0
  70. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/LICENSE +0 -0
  71. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/MANIFEST.in +0 -0
  72. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/README.md +0 -0
  73. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/code_coordinator.egg-info/dependency_links.txt +0 -0
  74. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/code_coordinator.egg-info/entry_points.txt +0 -0
  75. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/code_coordinator.egg-info/requires.txt +0 -0
  76. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/code_coordinator.egg-info/top_level.txt +0 -0
  77. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/__init__.py +0 -0
  78. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/_board_mapping.py +0 -0
  79. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/acceptance.py +0 -0
  80. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/acceptance_drivers.py +0 -0
  81. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/agent_app.py +0 -0
  82. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/agent_update.py +0 -0
  83. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/agents/opencode/.gitignore +0 -0
  84. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/agents/opencode/agents/work.md +0 -0
  85. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/agents/opencode/routing.jsonc +0 -0
  86. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/approved_work.py +0 -0
  87. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/audit.py +0 -0
  88. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/auto_loop.py +0 -0
  89. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/block_log.py +0 -0
  90. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/board_bool_guard.py +0 -0
  91. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/board_schema.py +0 -0
  92. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/board_service.py +0 -0
  93. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/board_wire.py +0 -0
  94. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/brain.py +0 -0
  95. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/branch_model.py +0 -0
  96. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/bug_intake.py +0 -0
  97. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/cargo_cache.py +0 -0
  98. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/ci_fix.py +0 -0
  99. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/ci_github.py +0 -0
  100. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/ci_gitlab.py +0 -0
  101. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/ci_store.py +0 -0
  102. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/claim.py +0 -0
  103. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/cli.py +0 -0
  104. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/client.py +0 -0
  105. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/__init__.py +0 -0
  106. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/acceptance.py +0 -0
  107. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/agent_ops.py +0 -0
  108. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/audit.py +0 -0
  109. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/chat.py +0 -0
  110. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/drive.py +0 -0
  111. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/gate_a.py +0 -0
  112. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/gates.py +0 -0
  113. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/issues.py +0 -0
  114. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/merge.py +0 -0
  115. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/milestone.py +0 -0
  116. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/plan_followup.py +0 -0
  117. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/plans.py +0 -0
  118. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/portal.py +0 -0
  119. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/pr.py +0 -0
  120. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/repo.py +0 -0
  121. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/report.py +0 -0
  122. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/review.py +0 -0
  123. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/scorecard.py +0 -0
  124. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/sessions.py +0 -0
  125. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/setup.py +0 -0
  126. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/status.py +0 -0
  127. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/terminal.py +0 -0
  128. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/test_gate.py +0 -0
  129. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/commands/tui.py +0 -0
  130. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/config_reload.py +0 -0
  131. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/confirm_test.py +0 -0
  132. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/conflict_fix.py +0 -0
  133. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/dao.py +0 -0
  134. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/dashboard/__init__.py +0 -0
  135. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/dashboard/fixture.py +0 -0
  136. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/dashboard/index.html +0 -0
  137. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/dashboard/server.py +0 -0
  138. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/dashboard/terminal.py +0 -0
  139. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/db.py +0 -0
  140. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/dead_end.py +0 -0
  141. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/decomposition_chat.py +0 -0
  142. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/README.md +0 -0
  143. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-agent.service +0 -0
  144. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-db-backup.service +0 -0
  145. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-db-backup.sh +0 -0
  146. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-db-backup.timer +0 -0
  147. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-drive-queue.service +0 -0
  148. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-drive-queue.timer +0 -0
  149. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-failure-notify.service +0 -0
  150. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-fleet-watchdog.service +0 -0
  151. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  152. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-notify.service +0 -0
  153. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-notify.timer +0 -0
  154. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-release-propagate.service +0 -0
  155. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-release-propagate.timer +0 -0
  156. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-release-window.service +0 -0
  157. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-release-window.timer +0 -0
  158. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-serve.service +0 -0
  159. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-web-dist-build.service +0 -0
  160. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-web-dist-build.timer +0 -0
  161. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy/coord-web.service +0 -0
  162. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deploy_manifest.py +0 -0
  163. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/deps.py +0 -0
  164. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/dispatch.py +0 -0
  165. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/dist_name.py +0 -0
  166. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/events.py +0 -0
  167. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/failure_class.py +0 -0
  168. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/filelock.py +0 -0
  169. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/fleet_config_health.py +0 -0
  170. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/forge_availability.py +0 -0
  171. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/gate_a.py +0 -0
  172. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/gate_b.py +0 -0
  173. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/gate_snapshot.py +0 -0
  174. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/gates.py +0 -0
  175. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/github_throttle.py +0 -0
  176. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/goal.py +0 -0
  177. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/graph_health.py +0 -0
  178. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/__init__.py +0 -0
  179. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/aggregate.py +0 -0
  180. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/__init__.py +0 -0
  181. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/agent_install.py +0 -0
  182. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/cargo_targets.py +0 -0
  183. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/claude_binary.py +0 -0
  184. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/coord_web_ci_pin.py +0 -0
  185. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/deploy_lane_facts.py +0 -0
  186. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/disk.py +0 -0
  187. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/fleet_board.py +0 -0
  188. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  189. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/fleet_phantom.py +0 -0
  190. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/fleet_unit_drift.py +0 -0
  191. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/graph.py +0 -0
  192. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/graphify_cli.py +0 -0
  193. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/index_lock.py +0 -0
  194. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/plan_usage.py +0 -0
  195. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/release_cordon.py +0 -0
  196. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/repo_state.py +0 -0
  197. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/spawned_coord.py +0 -0
  198. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/stalled_pipeline.py +0 -0
  199. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/timer_active.py +0 -0
  200. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/toolchain.py +0 -0
  201. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/unit_drift.py +0 -0
  202. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/unit_enablement.py +0 -0
  203. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/checks/worktrees.py +0 -0
  204. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/cli.py +0 -0
  205. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/context.py +0 -0
  206. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/fleet_snapshot.py +0 -0
  207. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/models.py +0 -0
  208. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/pypi.py +0 -0
  209. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/registry.py +0 -0
  210. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/render.py +0 -0
  211. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/health/units.py +0 -0
  212. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/hooks.py +0 -0
  213. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/housekeeping.py +0 -0
  214. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/interactive.py +0 -0
  215. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/issue_store.py +0 -0
  216. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/liveness_auditor.py +0 -0
  217. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/machine_pause.py +0 -0
  218. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/milestone_chat.py +0 -0
  219. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/milestone_dispatch.py +0 -0
  220. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/milestone_gate.py +0 -0
  221. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/milestone_order.py +0 -0
  222. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/mock_author.py +0 -0
  223. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/models.py +0 -0
  224. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/network.py +0 -0
  225. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/new_issue_chat.py +0 -0
  226. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/notifier/__init__.py +0 -0
  227. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/notifier/baseline.py +0 -0
  228. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/notifier/cli.py +0 -0
  229. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/notifier/collect.py +0 -0
  230. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/notifier/digest.py +0 -0
  231. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/notifier/models.py +0 -0
  232. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/notifier/predicate.py +0 -0
  233. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/notifier/service.py +0 -0
  234. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/notifier/store.py +0 -0
  235. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/notifier/transport.py +0 -0
  236. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/openapi.py +0 -0
  237. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/overlap_fence.py +0 -0
  238. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/overlap_predict.py +0 -0
  239. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/parentage.py +0 -0
  240. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/parentage_github.py +0 -0
  241. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/pipeline.py +0 -0
  242. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/plan_parser.py +0 -0
  243. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/plans.py +0 -0
  244. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/platform_paths.py +0 -0
  245. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/portal_bridge.py +0 -0
  246. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/portal_store.py +0 -0
  247. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/portal_sync.py +0 -0
  248. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/pr_body_lint.py +0 -0
  249. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/prereqs.py +0 -0
  250. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/progress.py +0 -0
  251. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/providers/__init__.py +0 -0
  252. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/providers/base.py +0 -0
  253. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/providers/opencode.py +0 -0
  254. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/queue_diagnose.py +0 -0
  255. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/reconcile.py +0 -0
  256. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/reconcile_tick.py +0 -0
  257. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/refine_chat.py +0 -0
  258. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/release_cordon.py +0 -0
  259. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/release_propagate.py +0 -0
  260. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/release_verify.py +0 -0
  261. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/release_window.py +0 -0
  262. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/repo_edit.py +0 -0
  263. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/repo_onboard.py +0 -0
  264. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/reports.py +0 -0
  265. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/revalidate.py +0 -0
  266. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/scorecard.py +0 -0
  267. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/self_health.py +0 -0
  268. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  269. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  270. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  271. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  272. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  273. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/skills/portal-followup/SKILL.md +0 -0
  274. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  275. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/skills/update-issue/SKILL.md +0 -0
  276. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/spend_ceiling.py +0 -0
  277. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/split_work.py +0 -0
  278. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/sql.py +0 -0
  279. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/stage_projection.py +0 -0
  280. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/state.py +0 -0
  281. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/test_author.py +0 -0
  282. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/test_chat.py +0 -0
  283. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/test_orchestrator.py +0 -0
  284. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/test_report.py +0 -0
  285. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/tui_release.py +0 -0
  286. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/usage.py +0 -0
  287. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/usage_limits.py +0 -0
  288. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/usage_rollup.py +0 -0
  289. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/coord/worker_events.py +0 -0
  290. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-agent.service +0 -0
  291. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-db-backup.service +0 -0
  292. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-db-backup.sh +0 -0
  293. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-db-backup.timer +0 -0
  294. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-drive-queue.service +0 -0
  295. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-drive-queue.timer +0 -0
  296. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-failure-notify.service +0 -0
  297. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-failure-notify.sh +0 -0
  298. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-fleet-watchdog.service +0 -0
  299. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-fleet-watchdog.timer +0 -0
  300. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-notify.service +0 -0
  301. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-notify.timer +0 -0
  302. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-release-propagate.service +0 -0
  303. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-release-propagate.timer +0 -0
  304. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-release-window.service +0 -0
  305. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-release-window.timer +0 -0
  306. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-serve.service +0 -0
  307. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-web-dist-build.service +0 -0
  308. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-web-dist-build.sh +0 -0
  309. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-web-dist-build.timer +0 -0
  310. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-web-rollback.sh +0 -0
  311. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/coord-web.service +0 -0
  312. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/deploy/node-shim.sh +0 -0
  313. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  314. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/ADR_COORD_WEB_CI.md +0 -0
  315. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/ADR_COORD_WEB_DIST.md +0 -0
  316. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/AGENT_OPERATIONS.md +0 -0
  317. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/ARCHITECTURE.md +0 -0
  318. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/ARCH_SECURITY_GATES.md +0 -0
  319. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/COCKPIT.md +0 -0
  320. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/CONTROL_CENTER.md +0 -0
  321. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/COST_DISCIPLINE.md +0 -0
  322. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/CROSS_PLATFORM.md +0 -0
  323. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/CUSTOMER_FACING_APPS.md +0 -0
  324. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/CUSTOMER_PORTAL.md +0 -0
  325. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/DRIVE_QUEUE.md +0 -0
  326. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/EPHEMERAL_WORKERS.md +0 -0
  327. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/FORGE_MIGRATION.md +0 -0
  328. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/GRAPHIFY_SETUP.md +0 -0
  329. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/ISSUE_GUIDANCE.md +0 -0
  330. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/MAC_MINI.md +0 -0
  331. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  332. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/NOTIFIER.md +0 -0
  333. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/OPENCODE_VERIFICATION.md +0 -0
  334. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/OPERATING_GOTCHAS.md +0 -0
  335. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/OPERATOR_GUIDES.md +0 -0
  336. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/ORACLE_LOOP.md +0 -0
  337. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/PHONE_WEBAPP.md +0 -0
  338. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/PIPELINE_V2.md +0 -0
  339. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/PLATFORM_EVOLUTION.md +0 -0
  340. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/SECOND_BACKEND.md +0 -0
  341. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/STORE_SERVICE.md +0 -0
  342. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  343. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/WEB_CONTROL_CENTER.md +0 -0
  344. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/WSL_WINDOWS_WORKER.md +0 -0
  345. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/mocks/web/README.md +0 -0
  346. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/mocks/web/_tokens.css +0 -0
  347. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/mocks/web/issue-detail.html +0 -0
  348. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/mocks/web/pipeline-narrow.html +0 -0
  349. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/docs/mocks/web/pipeline-wide.html +0 -0
  350. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/graphify-out/.gitignore +0 -0
  351. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/install-agent.sh +0 -0
  352. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/pyproject.toml +0 -0
  353. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/audit_review_verdict_overrides.py +0 -0
  354. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  355. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/azure-workers/build-worker-image.sh +0 -0
  356. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/azure-workers/coordinator-machine.py +0 -0
  357. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/azure-workers/epic-down.sh +0 -0
  358. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/azure-workers/epic-up.sh +0 -0
  359. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/azure-workers/preflight.sh +0 -0
  360. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/azure-workers/provision-worker.sh +0 -0
  361. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  362. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  363. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/azure-workers/verify-github-token.sh +0 -0
  364. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/check_gh_argv_containment.py +0 -0
  365. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/codegen.py +0 -0
  366. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/coord-venv-rollback.sh +0 -0
  367. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/drive-batch.sh +0 -0
  368. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/fleet_watchdog.py +0 -0
  369. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/gen_board_fixture.py +0 -0
  370. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/gen_mock_index.py +0 -0
  371. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/next_release_tag.py +0 -0
  372. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/run_tests_in_populated_home.sh +0 -0
  373. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/run_tests_without_gh.sh +0 -0
  374. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/smoke_437_interactive.py +0 -0
  375. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/verify_878_review_capture.py +0 -0
  376. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/verify_release_published.py +0 -0
  377. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/scripts/verify_release_wheel.py +0 -0
  378. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/setup.cfg +0 -0
  379. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/SMOKE_SET.md +0 -0
  380. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/__init__.py +0 -0
  381. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  382. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-33/contract.md +0 -0
  383. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-33/manifest.yml +0 -0
  384. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  385. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  386. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  387. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  388. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-37/conftest.py +0 -0
  389. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-37/contract.md +0 -0
  390. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-37/manifest.yml +0 -0
  391. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  392. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  393. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-38/contract.md +0 -0
  394. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-38/manifest.yml +0 -0
  395. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  396. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  397. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  398. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  399. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  400. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  401. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  402. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  403. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  404. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  405. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-51/contract.md +0 -0
  406. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  407. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  408. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-51/manifest.yml +0 -0
  409. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  410. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-51/tsconfig.json +0 -0
  411. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  412. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  413. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  414. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/contract.md +0 -0
  415. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  416. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/manifest.yml +0 -0
  417. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  418. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  419. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  420. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  421. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  422. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  423. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  424. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  425. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  426. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  427. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  428. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
  429. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-67/contract.md +0 -0
  430. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
  431. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-67/manifest.yml +0 -0
  432. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
  433. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
  434. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
  435. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
  436. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
  437. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
  438. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  439. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/conftest.py +0 -0
  440. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/board-pipeline-basic.json +0 -0
  441. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  442. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  443. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  444. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  445. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/playwright/all_pass.json +0 -0
  446. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  447. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/playwright/mixed_fail.json +0 -0
  448. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  449. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  450. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/playwright/skip.json +0 -0
  451. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/playwright/truncated.json +0 -0
  452. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  453. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  454. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  455. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  456. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  457. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  458. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  459. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  460. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_acceptance.py +0 -0
  461. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_acceptance_drivers.py +0 -0
  462. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_api_error.py +0 -0
  463. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_app.py +0 -0
  464. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_branch_base.py +0 -0
  465. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_branch_capture.py +0 -0
  466. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_config_free_1712.py +0 -0
  467. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_deploy_units_endpoint.py +0 -0
  468. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_dirty_worktree.py +0 -0
  469. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  470. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_health_h3.py +0 -0
  471. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_idle_restart.py +0 -0
  472. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_push_failure.py +0 -0
  473. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_reap.py +0 -0
  474. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_repos_and_pull.py +0 -0
  475. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_restart_services_endpoint.py +0 -0
  476. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_skills_self_heal.py +0 -0
  477. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_startup_diagnostics.py +0 -0
  478. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_update.py +0 -0
  479. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_update_bluegreen.py +0 -0
  480. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_usage_limit.py +0 -0
  481. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_agent_zero_commit.py +0 -0
  482. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_ambient_home_isolation.py +0 -0
  483. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_approve_reject_plan.py +0 -0
  484. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_approve_usage_gate.py +0 -0
  485. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_approved_work_2532.py +0 -0
  486. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_assignment_already_recorded_daemon.py +0 -0
  487. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_audit_log.py +0 -0
  488. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_audit_outcome.py +0 -0
  489. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_audit_query.py +0 -0
  490. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_auto_loop.py +0 -0
  491. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_auto_release_publish_2035.py +0 -0
  492. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_base_checkout_restore.py +0 -0
  493. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_block_log.py +0 -0
  494. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_board_cap_762.py +0 -0
  495. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_board_fixture.py +0 -0
  496. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_board_read_path.py +0 -0
  497. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_board_schema.py +0 -0
  498. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_board_service.py +0 -0
  499. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_board_state.py +0 -0
  500. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_board_wire.py +0 -0
  501. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_brain.py +0 -0
  502. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_branch_model.py +0 -0
  503. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_bug_intake.py +0 -0
  504. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_build_worker_image_env_update.py +0 -0
  505. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cargo_cache.py +0 -0
  506. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_check_gh_argv_containment.py +0 -0
  507. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_ci_acceptance_gate_1950.py +0 -0
  508. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_ci_fix.py +0 -0
  509. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_ci_gitlab.py +0 -0
  510. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_ci_parity_2091.py +0 -0
  511. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_ci_store.py +0 -0
  512. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_claim.py +0 -0
  513. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_acceptance.py +0 -0
  514. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_assign.py +0 -0
  515. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  516. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_assign_interactive_remote.py +0 -0
  517. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_assign_provider.py +0 -0
  518. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  519. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_audit.py +0 -0
  520. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_chat_continue.py +0 -0
  521. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_decide.py +0 -0
  522. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_diagnose_config_provenance.py +0 -0
  523. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_diagnose_forge_availability.py +0 -0
  524. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_diagnose_graph.py +0 -0
  525. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_diagnose_self.py +0 -0
  526. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_doctor.py +0 -0
  527. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_doctor_config_free_1801.py +0 -0
  528. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  529. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_drive.py +0 -0
  530. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_escalate.py +0 -0
  531. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_fix_headless_review.py +0 -0
  532. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_gate_a.py +0 -0
  533. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_install_drift.py +0 -0
  534. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_install_skills.py +0 -0
  535. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_issue_comment.py +0 -0
  536. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_issue_create_label.py +0 -0
  537. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_issue_reopen.py +0 -0
  538. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_issue_view_list.py +0 -0
  539. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_merge.py +0 -0
  540. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_milestone_assign.py +0 -0
  541. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_milestone_capture.py +0 -0
  542. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_milestone_chat_add_child.py +0 -0
  543. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_milestone_dispatch.py +0 -0
  544. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_milestone_gate_b.py +0 -0
  545. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_milestone_gate_c.py +0 -0
  546. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_milestone_order.py +0 -0
  547. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  548. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_milestone_ship.py +0 -0
  549. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_network.py +0 -0
  550. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_new_issue_chat.py +0 -0
  551. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_plans.py +0 -0
  552. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_portal.py +0 -0
  553. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_pr.py +0 -0
  554. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_pull_artifact.py +0 -0
  555. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_queue.py +0 -0
  556. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_reattach_sessions.py +0 -0
  557. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_refine_board.py +0 -0
  558. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_release_preflight.py +0 -0
  559. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_release_window.py +0 -0
  560. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_repo_2220.py +0 -0
  561. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  562. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_scorecard.py +0 -0
  563. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_set_review_findings.py +0 -0
  564. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_status_advisory_terminal.py +0 -0
  565. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_status_contested_tag.py +0 -0
  566. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_status_merge_queue.py +0 -0
  567. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_status_provider.py +0 -0
  568. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_status_review_finalizing.py +0 -0
  569. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_status_test_failed_tag.py +0 -0
  570. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_status_usage_limit.py +0 -0
  571. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_sync_comments_873.py +0 -0
  572. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_test_plan.py +0 -0
  573. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_track.py +0 -0
  574. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_tui_update.py +0 -0
  575. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cli_wait.py +0 -0
  576. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_client_base_install.py +0 -0
  577. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_comments.py +0 -0
  578. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_completion_summary.py +0 -0
  579. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_config.py +0 -0
  580. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_config_acceptance.py +0 -0
  581. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_config_audit.py +0 -0
  582. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_config_pricing.py +0 -0
  583. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  584. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_config_usage_gate.py +0 -0
  585. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_confirm_test.py +0 -0
  586. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_conflict_fix.py +0 -0
  587. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_conflict_fix_semantic.py +0 -0
  588. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  589. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_coord_test.py +0 -0
  590. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_coord_test_runner_baseline.py +0 -0
  591. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_coord_test_runner_populated_home.py +0 -0
  592. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_coord_test_runner_routing.py +0 -0
  593. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_coord_uat.py +0 -0
  594. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_coord_web_sse_restart_live.py +0 -0
  595. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_coordinator_machine.py +0 -0
  596. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_cross_platform_imports.py +0 -0
  597. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_dao.py +0 -0
  598. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_dashboard.py +0 -0
  599. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_dashboard_fixture.py +0 -0
  600. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_dashboard_terminal.py +0 -0
  601. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_dashboard_terminal_live.py +0 -0
  602. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_db.py +0 -0
  603. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_dead_end.py +0 -0
  604. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_decomposition_chat.py +0 -0
  605. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_deploy_coord_db_backup.py +0 -0
  606. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_deploy_coord_web_dist.py +0 -0
  607. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_deploy_coord_web_rollback.py +0 -0
  608. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_deploy_drive_queue_unit.py +0 -0
  609. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_deploy_failure_notify_unit.py +0 -0
  610. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_deploy_manifest.py +0 -0
  611. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_deploy_notify_unit.py +0 -0
  612. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_deploy_web_unit.py +0 -0
  613. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_deps.py +0 -0
  614. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_diagnose.py +0 -0
  615. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_dispatch.py +0 -0
  616. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_dispatch_target_validation.py +0 -0
  617. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_dist_name.py +0 -0
  618. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_done_housekeeping.py +0 -0
  619. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_drive_queue_blocked_rendering.py +0 -0
  620. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_drive_queue_launch_argv.py +0 -0
  621. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  622. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_drive_queue_roll_pending.py +0 -0
  623. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  624. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_drive_tmux.py +0 -0
  625. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_epic_up_capability_detection.py +0 -0
  626. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  627. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_epic_up_image_provenance.py +0 -0
  628. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_errors.py +0 -0
  629. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_events.py +0 -0
  630. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_failure_class.py +0 -0
  631. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_filelock.py +0 -0
  632. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  633. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_fix_of_force_override.py +0 -0
  634. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_fleet_config_health.py +0 -0
  635. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_fleet_health_probes.py +0 -0
  636. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_fleet_health_snapshot.py +0 -0
  637. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_fleet_watchdog.py +0 -0
  638. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_forge_availability.py +0 -0
  639. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_gate_a.py +0 -0
  640. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_gate_b.py +0 -0
  641. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_gate_snapshot_staleness.py +0 -0
  642. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_gates.py +0 -0
  643. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  644. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_gen_mock_index.py +0 -0
  645. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_generated_rust_fixture.py +0 -0
  646. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_generated_types_fixture.py +0 -0
  647. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_github_ops.py +0 -0
  648. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_github_throttle.py +0 -0
  649. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_goal.py +0 -0
  650. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_graph_health.py +0 -0
  651. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_graph_selfheal_absent_2237.py +0 -0
  652. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_handoff.py +0 -0
  653. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_checks.py +0 -0
  654. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_cli.py +0 -0
  655. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_cli_graph.py +0 -0
  656. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_config.py +0 -0
  657. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_context.py +0 -0
  658. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_coord_web_ci_pin.py +0 -0
  659. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_deploy_lane_facts.py +0 -0
  660. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_fix.py +0 -0
  661. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_incident_regression.py +0 -0
  662. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_pypi.py +0 -0
  663. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_registry.py +0 -0
  664. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_release_cordon_probe.py +0 -0
  665. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_timer_active.py +0 -0
  666. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_toolchain.py +0 -0
  667. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_unit_drift.py +0 -0
  668. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_health_unit_enablement.py +0 -0
  669. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_hooks.py +0 -0
  670. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_human_attended_437.py +0 -0
  671. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_init.py +0 -0
  672. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_integration.py +0 -0
  673. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_interactive_briefing_echo.py +0 -0
  674. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_interactive_pane_log_2541.py +0 -0
  675. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_interactive_prefill_state.py +0 -0
  676. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_interactive_session_relaunch.py +0 -0
  677. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_interactive_test_verdict_backstop.py +0 -0
  678. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_interactive_token_attribution.py +0 -0
  679. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_interactive_worktree.py +0 -0
  680. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_issue_store_seam.py +0 -0
  681. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_liveness_auditor.py +0 -0
  682. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_liveness_notify.py +0 -0
  683. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_machine_pause.py +0 -0
  684. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_merge_queue.py +0 -0
  685. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_merge_verify.py +0 -0
  686. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_milestone_chat.py +0 -0
  687. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_milestone_dispatch.py +0 -0
  688. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_milestone_gate.py +0 -0
  689. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_milestone_order.py +0 -0
  690. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_milestone_seam.py +0 -0
  691. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_mock_author.py +0 -0
  692. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_model_tiering.py +0 -0
  693. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_models.py +0 -0
  694. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_models_config_labels.py +0 -0
  695. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_needs_attention.py +0 -0
  696. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_network.py +0 -0
  697. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_new_issue_chat.py +0 -0
  698. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_next_release_tag.py +0 -0
  699. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_node_shim.py +0 -0
  700. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_notifier_baseline.py +0 -0
  701. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_notifier_cli.py +0 -0
  702. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_notifier_collect.py +0 -0
  703. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_notifier_config.py +0 -0
  704. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_notifier_drive_seam.py +0 -0
  705. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_notifier_isolation.py +0 -0
  706. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_notifier_predicate.py +0 -0
  707. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_notifier_quiet_hours.py +0 -0
  708. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_notifier_service.py +0 -0
  709. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_notify_drain.py +0 -0
  710. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_openapi.py +0 -0
  711. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_operational_defaults.py +0 -0
  712. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_overlap_fence.py +0 -0
  713. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_overlap_predict.py +0 -0
  714. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_packaged_deploy_units.py +0 -0
  715. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_parentage.py +0 -0
  716. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_paste_landed.py +0 -0
  717. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  718. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_pipeline.py +0 -0
  719. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_plan_followup_approve_plan_command.py +0 -0
  720. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_plan_followup_pr_command.py +0 -0
  721. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_plan_followup_review_command.py +0 -0
  722. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_plan_only.py +0 -0
  723. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_plan_parser.py +0 -0
  724. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_platform_paths.py +0 -0
  725. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_portal_bridge.py +0 -0
  726. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_portal_config.py +0 -0
  727. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_portal_store.py +0 -0
  728. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_portal_sync.py +0 -0
  729. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_pr_body_lint.py +0 -0
  730. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_prereqs.py +0 -0
  731. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_production_db_guard.py +0 -0
  732. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_progress.py +0 -0
  733. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_provider_seam.py +0 -0
  734. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_providers_config_labels.py +0 -0
  735. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_providers_pty.py +0 -0
  736. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_quiet_hours.py +0 -0
  737. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_quiet_hours_store_2146.py +0 -0
  738. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_reap_merged_sessions.py +0 -0
  739. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_reap_stale_interactive_tick.py +0 -0
  740. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_reconcile.py +0 -0
  741. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_reconcile_branch.py +0 -0
  742. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_reconcile_completions.py +0 -0
  743. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  744. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_reconcile_merges.py +0 -0
  745. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_reconcile_no_agent_record.py +0 -0
  746. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_reconcile_tick.py +0 -0
  747. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_reconcile_usage_limit_done.py +0 -0
  748. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_refine_chat.py +0 -0
  749. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_release_cordon_2101.py +0 -0
  750. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  751. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_release_cordon_deadlock_2240.py +0 -0
  752. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_release_cordon_stuck_2490.py +0 -0
  753. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_release_propagate.py +0 -0
  754. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_release_propagate_threshold.py +0 -0
  755. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_release_roll_window_handoff.py +0 -0
  756. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_release_unified_1242.py +0 -0
  757. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_release_verify.py +0 -0
  758. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_release_window.py +0 -0
  759. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_remote_auto_prune.py +0 -0
  760. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_remote_interactive_reaper.py +0 -0
  761. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_repo_add.py +0 -0
  762. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_repo_edit_2220.py +0 -0
  763. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_repo_graph_fleet_2237.py +0 -0
  764. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_repo_onboard_2220.py +0 -0
  765. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_report_result_push.py +0 -0
  766. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_reports.py +0 -0
  767. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_retry.py +0 -0
  768. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_retry_advisory_1606.py +0 -0
  769. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_retry_type_1636.py +0 -0
  770. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_revalidate.py +0 -0
  771. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_review_end_review_without_verdict.py +0 -0
  772. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_review_parse_failure_diagnostic.py +0 -0
  773. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_review_reaffirm.py +0 -0
  774. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_review_state.py +0 -0
  775. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_review_verdict_backstop.py +0 -0
  776. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_review_verdict_override_audit.py +0 -0
  777. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_review_verdict_relay.py +0 -0
  778. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_review_zero_commits.py +0 -0
  779. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_scoped_review_wiring.py +0 -0
  780. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_scorecard.py +0 -0
  781. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_self_health.py +0 -0
  782. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_serve_app_board_trim.py +0 -0
  783. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_session.py +0 -0
  784. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_slice_issue_attribution.py +0 -0
  785. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_smoke.py +0 -0
  786. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_smoke_live_checkout_restore.py +0 -0
  787. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_smoke_workflow.py +0 -0
  788. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_spend_ceiling.py +0 -0
  789. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_spend_ceiling_coordinator.py +0 -0
  790. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_split.py +0 -0
  791. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_split_work.py +0 -0
  792. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_sql_dialect.py +0 -0
  793. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_stage_projection.py +0 -0
  794. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_state.py +0 -0
  795. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_state_review_findings_daemon.py +0 -0
  796. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_status_fleet_footer.py +0 -0
  797. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_stop_1567.py +0 -0
  798. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_store_contract.py +0 -0
  799. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_terminal_command.py +0 -0
  800. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_test_author.py +0 -0
  801. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_test_chat.py +0 -0
  802. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_test_orchestrator.py +0 -0
  803. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_test_report.py +0 -0
  804. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_test_verdict_parsing.py +0 -0
  805. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_test_verdict_transcript_floor.py +0 -0
  806. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_text_io_encoding_audit.py +0 -0
  807. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_thin_client_board_audit.py +0 -0
  808. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_thin_client_config_load_1080.py +0 -0
  809. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_thin_client_daemon_routing_906.py +0 -0
  810. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_tmux_host.py +0 -0
  811. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_tmux_session.py +0 -0
  812. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_transcript_floor.py +0 -0
  813. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_usage.py +0 -0
  814. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_usage_limits.py +0 -0
  815. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_usage_rollup.py +0 -0
  816. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_venv_live_install_2121.py +0 -0
  817. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_version_single_source.py +0 -0
  818. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_watch.py +0 -0
  819. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  820. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_worker_env_venv_isolation.py +0 -0
  821. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_worker_events.py +0 -0
  822. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_worker_image_pin_sync.py +0 -0
  823. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_worker_safety.py +0 -0
  824. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_worker_test_scoping.py +0 -0
  825. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_worktree.py +0 -0
  826. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  827. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/Cargo.lock +0 -0
  828. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/Cargo.toml +0 -0
  829. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/cargo-config-local-quadraui.toml.example +0 -0
  830. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/approved.rs +0 -0
  831. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/audit.rs +0 -0
  832. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/chat.rs +0 -0
  833. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/data.rs +0 -0
  834. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/dialogs.rs +0 -0
  835. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/doc_tabs.rs +0 -0
  836. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/drive.rs +0 -0
  837. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/drive_queue.rs +0 -0
  838. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/escalation.rs +0 -0
  839. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/events.rs +0 -0
  840. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/fixtures.rs +0 -0
  841. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/fleet_health.rs +0 -0
  842. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/fleet_sessions.rs +0 -0
  843. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/fleet_terminals.rs +0 -0
  844. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/format.rs +0 -0
  845. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/milestone_dag.rs +0 -0
  846. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/mod.rs +0 -0
  847. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/msv.rs +0 -0
  848. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/pipeline.rs +0 -0
  849. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/plans.rs +0 -0
  850. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/render.rs +0 -0
  851. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/reports.rs +0 -0
  852. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/sessions.rs +0 -0
  853. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/settings_ui.rs +0 -0
  854. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/sidebar.rs +0 -0
  855. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/terminal.rs +0 -0
  856. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/tests.rs +0 -0
  857. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/types/generated.rs +0 -0
  858. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/types.rs +0 -0
  859. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/app/workspace.rs +0 -0
  860. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/bin/gtk.rs +0 -0
  861. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/commands.rs +0 -0
  862. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/lib.rs +0 -0
  863. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/main.rs +0 -0
  864. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/src/settings.rs +0 -0
  865. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/tests/acceptance.rs +0 -0
  866. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/tests/cli.rs +0 -0
  867. {code_coordinator-0.5.246 → code_coordinator-0.5.248}/tui/tests/fixtures/board_sample.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.246
3
+ Version: 0.5.248
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.246
3
+ Version: 0.5.248
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
@@ -381,6 +381,7 @@ tests/test_agent_update_bluegreen.py
381
381
  tests/test_agent_usage_limit.py
382
382
  tests/test_agent_zero_commit.py
383
383
  tests/test_ambient_home_isolation.py
384
+ tests/test_approve_dependency_busy_2804.py
384
385
  tests/test_approve_reject_plan.py
385
386
  tests/test_approve_usage_gate.py
386
387
  tests/test_approved_work_2532.py
@@ -411,6 +412,7 @@ tests/test_ci_gitlab.py
411
412
  tests/test_ci_parity_2091.py
412
413
  tests/test_ci_store.py
413
414
  tests/test_claim.py
415
+ tests/test_claude_md_budget.py
414
416
  tests/test_cli_acceptance.py
415
417
  tests/test_cli_assign.py
416
418
  tests/test_cli_assign_interactive_oracle_gate.py
@@ -712,6 +714,7 @@ tests/test_status_fleet_footer.py
712
714
  tests/test_stop_1567.py
713
715
  tests/test_store_contract.py
714
716
  tests/test_stuck.py
717
+ tests/test_stuck_test_state_watchdog_2803.py
715
718
  tests/test_terminal_command.py
716
719
  tests/test_test_author.py
717
720
  tests/test_test_chat.py
@@ -453,6 +453,7 @@
453
453
  "tests/test_agent_usage_limit.py",
454
454
  "tests/test_agent_zero_commit.py",
455
455
  "tests/test_ambient_home_isolation.py",
456
+ "tests/test_approve_dependency_busy_2804.py",
456
457
  "tests/test_approve_reject_plan.py",
457
458
  "tests/test_approve_usage_gate.py",
458
459
  "tests/test_approved_work_2532.py",
@@ -483,6 +484,7 @@
483
484
  "tests/test_ci_parity_2091.py",
484
485
  "tests/test_ci_store.py",
485
486
  "tests/test_claim.py",
487
+ "tests/test_claude_md_budget.py",
486
488
  "tests/test_cli_acceptance.py",
487
489
  "tests/test_cli_assign.py",
488
490
  "tests/test_cli_assign_interactive_oracle_gate.py",
@@ -784,6 +786,7 @@
784
786
  "tests/test_stop_1567.py",
785
787
  "tests/test_store_contract.py",
786
788
  "tests/test_stuck.py",
789
+ "tests/test_stuck_test_state_watchdog_2803.py",
787
790
  "tests/test_terminal_command.py",
788
791
  "tests/test_test_author.py",
789
792
  "tests/test_test_chat.py",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.5.248",
3
+ "distance": 0,
4
+ "node": "g698bc8431c005f357304c6d6731da95766129363",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-08-27"
8
+ }
@@ -4525,11 +4525,14 @@ def _base_checkout_write_guard_tools(repo_path: str) -> list[str]:
4525
4525
  # dispatch on every machine started failing at turn 1 with "Not logged in"
4526
4526
  # within the hour it went live (misreported fleet-wide as generic
4527
4527
  # `api_error`). Reverted back to `--setting-sources user` to restore
4528
- # dispatch immediately. The hooks/.mcp.json leak this was meant to close is
4529
- # real and still open — re-closing it needs a fix that doesn't require
4528
+ # dispatch immediately. The hooks/.mcp.json leak this was meant to close was
4529
+ # real; #2820 closed the `.mcp.json`/MCP-server half of it via
4530
+ # `--strict-mcp-config` in `default_worker_command` (no OAuth side-effect —
4531
+ # it only strips MCP server definitions, not hooks). The hooks half is
4532
+ # still open — re-closing it needs a fix that doesn't require
4530
4533
  # `ANTHROPIC_API_KEY`/an `apiKeyHelper` (e.g. explicit `--settings '{}'`
4531
- # plus verifying whether hooks/.mcp.json can be suppressed without full
4532
- # `--bare`), tracked as a fresh follow-up rather than re-landing this as-is.
4534
+ # plus verifying whether hooks can be suppressed without full `--bare`),
4535
+ # tracked as a fresh follow-up rather than re-landing this as-is.
4533
4536
  _DENY_PATTERN_RE = re.compile(r"^(Edit|Write)\(//(.+)\)$")
4534
4537
 
4535
4538
 
@@ -4676,14 +4679,25 @@ def check_worktree_writable(
4676
4679
  def _claude_md_system_prompt_suffix(repo_path: str) -> str:
4677
4680
  """Return a system-prompt suffix embedding the target repo's CLAUDE.md.
4678
4681
 
4679
- #2462: worker dispatch below passes ``--bare``, which disables Claude
4680
- Code's own automatic CLAUDE.md auto-discovery (along with hooks,
4681
- ``.mcp.json``, and settings — see the ``--bare`` comment in
4682
- :func:`default_worker_command`). Nothing else in a work-shaped leg's
4683
- briefing embeds the target repo's actual CLAUDE.md text, so without this
4684
- a worker would silently lose every per-repo convention, testing rule,
4685
- and sealed-path note that isn't hardcoded into the repo-agnostic
4686
- ``WORKER_SYSTEM_PROMPT``.
4682
+ Worker dispatch below passes ``--setting-sources user`` — **not**
4683
+ ``--bare``, which #2462 tried and reverted same-day (see the long
4684
+ comment in :func:`default_worker_command`). ``--setting-sources user``
4685
+ suppresses Claude Code's own project-level CLAUDE.md auto-discovery
4686
+ (along with project/local settings.json) just as thoroughly as
4687
+ ``--bare`` would have, for this one mechanism. #2820 measured it
4688
+ directly with four controlled probes: an empty dir and a real repo
4689
+ checkout, both under ``--setting-sources user``, differ by only ~200
4690
+ prompt-framing tokens (22,489 vs 22,686) — essentially no CLAUDE.md
4691
+ content leaking through. The same repo under Claude Code's *default*
4692
+ setting sources adds ~7,675 tokens (30,361) for the auto-discovered
4693
+ file. So this function is **not** defense-in-depth alongside some
4694
+ still-running ambient auto-discovery — it is the **only** mechanism
4695
+ that delivers the target repo's CLAUDE.md to a work-shaped ``-p`` leg.
4696
+ Nothing else in a work-shaped leg's briefing embeds the target repo's
4697
+ actual CLAUDE.md text, so without this a worker would silently lose
4698
+ every per-repo convention, testing rule, and sealed-path note that
4699
+ isn't hardcoded into the repo-agnostic ``WORKER_SYSTEM_PROMPT`` — with
4700
+ no error and no test failing to surface the loss.
4687
4701
 
4688
4702
  Mirrors :func:`coord.review.read_repo_claude_md`, which the review leg
4689
4703
  already uses for the same reason (a review must never run blind to
@@ -4723,8 +4737,10 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4723
4737
  """
4724
4738
  if spec.type == "plan":
4725
4739
  system_prompt = spec.system_prompt if spec.system_prompt else WORKER_PLAN_PROMPT
4726
- # #2462: --bare drops CLAUDE.md auto-discovery; a plan leg still
4727
- # needs the target repo's conventions to plan against.
4740
+ # `--setting-sources user` (below) drops CLAUDE.md auto-discovery; a
4741
+ # plan leg still needs the target repo's conventions to plan
4742
+ # against. See _claude_md_system_prompt_suffix for what the flag
4743
+ # actually does and the measured numbers behind it.
4728
4744
  system_prompt += _claude_md_system_prompt_suffix(spec.repo_path)
4729
4745
  allowed_tools = "Read,Bash"
4730
4746
  elif spec.type == "refinement":
@@ -4793,7 +4809,8 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4793
4809
  # and deny list instead of the generic WORKER_SYSTEM_PROMPT.
4794
4810
  system_prompt = spec.system_prompt if spec.system_prompt else MOCK_AUTHOR_SYSTEM_PROMPT
4795
4811
  system_prompt += build_deny_prompt(MOCK_AUTHOR_DENY_COMMANDS)
4796
- # #2462: --bare drops CLAUDE.md auto-discovery.
4812
+ # `--setting-sources user` (below) drops CLAUDE.md auto-discovery —
4813
+ # see _claude_md_system_prompt_suffix.
4797
4814
  system_prompt += _claude_md_system_prompt_suffix(spec.repo_path)
4798
4815
  allowed_tools = "Read,Edit,Write,Bash"
4799
4816
  elif spec.type == "smoke":
@@ -4846,10 +4863,11 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4846
4863
  else:
4847
4864
  system_prompt = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
4848
4865
  system_prompt += build_deny_prompt(spec.deny_commands)
4849
- # #2462: --bare drops CLAUDE.md auto-discovery for this catch-all
4850
- # branch too — it covers "work", "fix", "conflict-fix", and
4851
- # "test-author", every one of which edits code and needs the
4852
- # target repo's conventions. See _claude_md_system_prompt_suffix.
4866
+ # `--setting-sources user` (below) drops CLAUDE.md auto-discovery
4867
+ # for this catch-all branch too — it covers "work", "fix",
4868
+ # "conflict-fix", and "test-author", every one of which edits code
4869
+ # and needs the target repo's conventions. See
4870
+ # _claude_md_system_prompt_suffix.
4853
4871
  system_prompt += _claude_md_system_prompt_suffix(spec.repo_path)
4854
4872
  # #2169: `Monitor` is the sanctioned way to poll a backgrounded
4855
4873
  # long-running command in bounded steps (see the ONE-SHOT section of
@@ -4900,7 +4918,11 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4900
4918
  # (coord.providers.claude_pty.ClaudePtyProvider) intentionally keeps
4901
4919
  # the default sources so an operator's own `coord init`-configured
4902
4920
  # convenience allow-list still applies to a session they're
4903
- # attached to and watching.
4921
+ # attached to and watching. #2821: that tradeoff also means the PTY
4922
+ # path pays for CLAUDE.md via ambient auto-discovery (~7.7k tok)
4923
+ # instead of the explicit `_claude_md_system_prompt_suffix` embed
4924
+ # below (~5.2k tok) — a deliberately accepted, documented cost; see
4925
+ # the argv comment in ClaudePtyProvider.build_command.
4904
4926
  #
4905
4927
  # #2462 tried `--bare` here (closes settings + hooks + .mcp.json +
4906
4928
  # CLAUDE.md auto-discovery at once, vs. this flag's settings.json-only
@@ -4911,19 +4933,52 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4911
4933
  # OAuth"). It went live and broke every worker dispatch fleet-wide
4912
4934
  # within the hour ("Not logged in · Please run /login", misreported
4913
4935
  # as generic `api_error`) — reverted back to `--setting-sources user`
4914
- # same-day. The hooks/.mcp.json leak `--bare` closed is real and
4915
- # still open; re-closing it needs an approach that doesn't require
4916
- # `ANTHROPIC_API_KEY`/an `apiKeyHelper`, tracked as a fresh
4917
- # follow-up rather than re-landing `--bare` as-is.
4936
+ # same-day. The hooks/.mcp.json leak `--bare` would have closed was
4937
+ # real; #2820 closed the `.mcp.json`/MCP-server half of it below
4938
+ # with `--strict-mcp-config`, which has no OAuth side-effect (it
4939
+ # only strips project/user-scope MCP server definitions, nothing
4940
+ # else `--bare` touched). The hooks half is still open; re-closing
4941
+ # it needs an approach that doesn't require `ANTHROPIC_API_KEY`/an
4942
+ # `apiKeyHelper`, tracked as a fresh follow-up rather than
4943
+ # re-landing `--bare` as-is.
4918
4944
  #
4919
4945
  # `_claude_md_system_prompt_suffix` (see the "plan", "mock-author",
4920
4946
  # and catch-all "else" branches above) explicitly embeds the target
4921
- # repo's CLAUDE.md into --system-prompt regardless — kept as
4922
- # defense-in-depth (the same double-load pattern
4923
- # coord.review.read_repo_claude_md already used for review legs)
4924
- # even though `--setting-sources user` alone still lets CLAUDE.md's
4925
- # own ambient auto-discovery run too.
4947
+ # repo's CLAUDE.md into --system-prompt — this is NOT defense-in-
4948
+ # depth alongside some still-running ambient auto-discovery.
4949
+ # #2820 measured that `--setting-sources user` *suppresses* Claude
4950
+ # Code's own project CLAUDE.md auto-discovery: a real repo checkout
4951
+ # under `--setting-sources user` costs ~22,686 prompt tokens vs.
4952
+ # ~30,361 under Claude Code's *default* setting sources — a
4953
+ # ~7,675-token gap that is almost entirely the auto-discovered
4954
+ # file. So `_claude_md_system_prompt_suffix` is the ONLY mechanism
4955
+ # that delivers the target repo's CLAUDE.md to a work-shaped `-p`
4956
+ # leg; treating it as redundant and dropping it would silently
4957
+ # strip every per-repo convention, with no error and no test
4958
+ # failing to surface the loss.
4926
4959
  "--setting-sources", "user",
4960
+ # #2820: every `-p` leg otherwise also loads the OPERATOR's
4961
+ # personal user-scope MCP servers — observed across the 120 most
4962
+ # recent worker sessions as 20 Google Drive/Calendar tool defs plus
4963
+ # a Gmail server on 111/120 legs, a smaller subset on 3 more, and 0
4964
+ # on the remaining 6 (i.e. non-deterministic: the same dispatch
4965
+ # shape gets a different tool surface depending on whether the
4966
+ # operator's MCP servers happened to connect by the time the
4967
+ # session started). No worker can ever use any of those tools.
4968
+ # `--strict-mcp-config` ignores all project/user `.mcp.json`
4969
+ # servers for this invocation (with no `--mcp-config` passed, that
4970
+ # means none load) — `--setting-sources user` above does NOT cover
4971
+ # this, it only gates settings.json. Measured cost of leaving this
4972
+ # open is small — two controlled `claude -p` probes with the
4973
+ # production flags went from 47 tools / 23,096 prompt tokens
4974
+ # without this flag to 27 tools / 22,483 tokens with it, i.e.
4975
+ # ~600 tokens, not the several-thousand a raw tool-count drop
4976
+ # suggests (MCP tool schemas are deferred behind ToolSearch in
4977
+ # current Claude Code, so an unused server costs a name, not a
4978
+ # schema). Worth doing anyway: one flag, no OAuth side-effect, and
4979
+ # it makes the worker tool surface deterministic — not worth doing
4980
+ # as a cost measure on its own.
4981
+ "--strict-mcp-config",
4927
4982
  ]
4928
4983
  if spec.model:
4929
4984
  argv.extend(["--model", spec.model])
@@ -158,7 +158,9 @@ def _note_withheld_snapshot(config: Config, config_path: Path) -> None:
158
158
  )
159
159
 
160
160
 
161
- def _save_config_snapshot(config: Config, config_path: Path | None = None) -> None:
161
+ def _save_config_snapshot(
162
+ config: Config, config_path: Path | None = None, *, allow_thin_client: bool = True
163
+ ) -> None:
162
164
  """Persist machine + pipeline metadata to the DB so dashboards can read it.
163
165
 
164
166
  Writes:
@@ -176,13 +178,22 @@ def _save_config_snapshot(config: Config, config_path: Path | None = None) -> No
176
178
  entirely — see the #2208 guard below. Callers that omit it (mainly
177
179
  direct unit tests exercising the write itself) get the pre-#2208
178
180
  behavior: always write.
181
+
182
+ *allow_thin_client* mirrors ``_load_config``'s flag (#2824) — pass
183
+ ``False`` for ``coord serve``'s own bootstrap so a stray
184
+ ``~/.coord/client.toml``/``$COORD_SERVICE_URL`` on the daemon host can't
185
+ also make the daemon skip writing its OWN machines/board_meta snapshot
186
+ (the same "am I a thin client" question, asked a second time here for
187
+ the DB write rather than the config read — a caller that already knows
188
+ it is the daemon for one must know it for the other).
179
189
  """
180
190
  # #584: a thin client (board_service configured) must not create/write a
181
191
  # local DB — the daemon/host owns the config snapshot. On the host
182
192
  # board_service is unset, so the snapshot is written as before.
183
- from coord.client import resolve_board_service
184
- if resolve_board_service() is not None:
185
- return
193
+ if allow_thin_client:
194
+ from coord.client import resolve_board_service
195
+ if resolve_board_service() is not None:
196
+ return
186
197
  # #2208: an explicit `--config <file>` pointed away from the fleet's real
187
198
  # config (a scratch fixture, a CI-only stub) must not be treated as a
188
199
  # request to redefine the shared `machines` table — that table is global
@@ -316,7 +327,7 @@ def _save_config_snapshot(config: Config, config_path: Path | None = None) -> No
316
327
  pass
317
328
 
318
329
 
319
- def _load_config(path: Path | None) -> Config:
330
+ def _load_config(path: Path | None, *, allow_thin_client: bool = True) -> Config:
320
331
  # Resolve the default location ($COORD_CONFIG → ~/.coord/coordinator.yml →
321
332
  # ./coordinator.yml) when no explicit --config was given, so `coord` works on
322
333
  # a machine without a repo checkout and isn't sensitive to the CWD.
@@ -333,27 +344,47 @@ def _load_config(path: Path | None) -> Config:
333
344
  # config on every command). On a machine with no client.toml/board_service
334
345
  # (svc is None — e.g. the daemon host), this is a no-op and local-file
335
346
  # resolution proceeds exactly as before (#584/#591).
347
+ #
348
+ # #2824: *allow_thin_client=False* opts a caller OUT of that branch
349
+ # entirely — never even calls ``resolve_board_service()``. This is for
350
+ # ``coord serve`` alone: the board daemon does not consume "the board's"
351
+ # config, it MINTS it (every other machine's ``GET /config`` reads come
352
+ # from THIS process's in-memory ``Config``). A leftover/stray
353
+ # ``~/.coord/client.toml`` or ``$COORD_SERVICE_URL`` on the daemon host
354
+ # (e.g. surviving a migration from an old primary) made `coord serve`
355
+ # silently proxy its own boot through `_load_config`'s thin-client branch
356
+ # and boot on *another machine's* ``coordinator.yml`` instead of the
357
+ # ``--config`` path the operator explicitly passed — the daemon then kept
358
+ # re-reading (`_refresh_config`'s mtime-guarded reload) that same wrong,
359
+ # remote-fetched file forever, with no signal anything was wrong: this is
360
+ # exactly how a real, on-disk ``portal.enabled: true`` was never seen by
361
+ # the running daemon while `coord.config.load()` on the same path,
362
+ # standalone, correctly reported it (the #2824 root cause). Every other
363
+ # caller of ``_load_config`` legitimately wants thin-client resolution
364
+ # (they ARE clients of the daemon's board) — this flag exists so ONLY
365
+ # `coord serve`'s own bootstrap can opt out.
336
366
  try:
337
- from coord.client import resolve_board_service # noqa: PLC0415
338
-
339
- svc = resolve_board_service()
340
- if svc is not None:
341
- from coord.client import fetch_remote_config # noqa: PLC0415
342
-
343
- try:
344
- path = fetch_remote_config(svc)
345
- except Exception as exc: # noqa: BLE001 — do NOT fall through to
346
- # load(path): path may point at a local file that happens to
347
- # exist (the exact bypass this issue closes). Fail loudly
348
- # instead of silently trusting whatever is on disk.
349
- raise ConfigError(
350
- f"could not fetch config from {svc.url}: {exc}"
351
- ) from exc
367
+ if allow_thin_client:
368
+ from coord.client import resolve_board_service # noqa: PLC0415
369
+
370
+ svc = resolve_board_service()
371
+ if svc is not None:
372
+ from coord.client import fetch_remote_config # noqa: PLC0415
373
+
374
+ try:
375
+ path = fetch_remote_config(svc)
376
+ except Exception as exc: # noqa: BLE001 — do NOT fall through to
377
+ # load(path): path may point at a local file that happens to
378
+ # exist (the exact bypass this issue closes). Fail loudly
379
+ # instead of silently trusting whatever is on disk.
380
+ raise ConfigError(
381
+ f"could not fetch config from {svc.url}: {exc}"
382
+ ) from exc
352
383
  cfg = load(path)
353
384
  except ConfigError as e:
354
385
  click.echo(f"error: {e}", err=True)
355
386
  sys.exit(2)
356
- _save_config_snapshot(cfg, path)
387
+ _save_config_snapshot(cfg, path, allow_thin_client=allow_thin_client)
357
388
  return cfg
358
389
 
359
390
 
@@ -433,6 +433,15 @@ def approve(
433
433
  )
434
434
  click.echo(format_chunks_summary(chunks))
435
435
 
436
+ # #2804: repos this SAME batch has already dispatched to a given
437
+ # machine, keyed by machine_name. `board` (read once, above) only knows
438
+ # about assignments from a PRIOR `coord approve`/`coord assign` — two
439
+ # proposals in THIS batch that land on the same machine and share a
440
+ # build dependency (e.g. both vimcode and coord-tui pulling quadraui)
441
+ # would otherwise never see each other. Populated as each proposal
442
+ # below is actually dispatched (not on `dry_run`/`continue`).
443
+ dispatched_this_batch: dict[str, set[str]] = {}
444
+
436
445
  for p in selected:
437
446
  click.echo(f"[{p.id}] {p.machine_name} → {p.repo_name} #{p.issue_number}: {p.issue_title}")
438
447
  # Resolve model so the dispatched record and board reflect what ran.
@@ -614,15 +623,44 @@ def approve(
614
623
  + (f" ({f.error})" if f.error else ""),
615
624
  err=True,
616
625
  )
626
+ # #2804: never pull a build dep's single shared checkout out
627
+ # from under some OTHER assignment on the same machine that
628
+ # may be building against it right now — that race is
629
+ # exactly what turned a correct vimcode#555 branch into a
630
+ # phantom red. `busy` names every such repo; both the
631
+ # auto-pull list and the briefing's pull instruction skip it.
632
+ busy = {
633
+ f.repo_name
634
+ for f in needs
635
+ if f.kind == fresh.BUILD
636
+ and fresh.repo_busy_elsewhere(
637
+ f.repo_name,
638
+ p.machine_name,
639
+ cfg,
640
+ board,
641
+ also_running=dispatched_this_batch.get(p.machine_name, ()),
642
+ )
643
+ }
644
+ if busy:
645
+ click.echo(
646
+ f" not pulling (in use by a concurrent assignment "
647
+ f"on {p.machine_name}, #2804): {sorted(busy)}",
648
+ err=True,
649
+ )
617
650
  if auto_pull:
618
- pull_repos = [f.repo_name for f in needs if f.state == fresh.STALE]
651
+ pull_repos = [
652
+ f.repo_name for f in needs
653
+ if f.state == fresh.STALE and f.repo_name not in busy
654
+ ]
619
655
  if pull_repos:
620
656
  click.echo(f" will pull on agent before worker: {pull_repos}")
621
657
  else:
622
- addendum = fresh.format_briefing_addendum(freshness)
658
+ addendum = fresh.format_briefing_addendum(freshness, busy=busy)
623
659
  if addendum:
624
660
  p.briefing = (p.briefing or "") + addendum
625
661
 
662
+ dispatched_this_batch.setdefault(p.machine_name, set()).add(p.repo_name)
663
+
626
664
  def _on_retry(attempt, max_r, state, reason, wait):
627
665
  click.echo(
628
666
  f" retry {attempt}/{max_r} after {state} ({reason}), "
@@ -4845,12 +4845,31 @@ def _dispatch_headless(
4845
4845
  f" dependency {f.repo_name}: {f.state}"
4846
4846
  + (f" ({f.error})" if f.error else ""),
4847
4847
  )
4848
+ # #2804: never pull a build dep's single shared checkout out
4849
+ # from under some OTHER assignment on this machine that may be
4850
+ # building against it right now (see
4851
+ # `coord.freshness.repo_busy_elsewhere`'s docstring — this is
4852
+ # the same guard `coord approve` applies).
4853
+ busy = {
4854
+ f.repo_name
4855
+ for f in needs
4856
+ if f.kind == _fresh.BUILD
4857
+ and _fresh.repo_busy_elsewhere(f.repo_name, proposal.machine_name, cfg, board)
4858
+ }
4859
+ if busy:
4860
+ click.echo(
4861
+ f" not pulling (in use by a concurrent assignment on "
4862
+ f"{proposal.machine_name}, #2804): {sorted(busy)}"
4863
+ )
4848
4864
  if not no_pull:
4849
- pull_repos = [f.repo_name for f in needs if f.state == _fresh.STALE]
4865
+ pull_repos = [
4866
+ f.repo_name for f in needs
4867
+ if f.state == _fresh.STALE and f.repo_name not in busy
4868
+ ]
4850
4869
  if pull_repos:
4851
4870
  click.echo(f" will pull on agent before worker: {pull_repos}")
4852
4871
  else:
4853
- addendum = _fresh.format_briefing_addendum(freshness)
4872
+ addendum = _fresh.format_briefing_addendum(freshness, busy=busy)
4854
4873
  if addendum:
4855
4874
  proposal.briefing = (proposal.briefing or "") + addendum
4856
4875