code-coordinator 0.5.189__tar.gz → 0.5.190__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 (784) hide show
  1. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/agent.py +99 -25
  5. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/dispatch_workers.py +2 -2
  6. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/providers/claude.py +19 -4
  7. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/review.py +8 -2
  8. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent.py +81 -11
  9. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_providers.py +85 -0
  10. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/.claude/commands/board.md +0 -0
  11. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/.claude/commands/complete-session.md +0 -0
  12. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/.claude/commands/coordinator.md +0 -0
  13. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/.githooks/_lib.sh +0 -0
  14. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/.githooks/post-checkout +0 -0
  15. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/.githooks/post-commit +0 -0
  16. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/.githooks/post-merge +0 -0
  17. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  18. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/.github/coord-ci-acceptance.yml +0 -0
  19. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/.github/workflows/auto-release.yml +0 -0
  20. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/.github/workflows/cargo-test.yml +0 -0
  21. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/.github/workflows/publish.yml +0 -0
  22. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/.github/workflows/release-tui.yml +0 -0
  23. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/.github/workflows/test.yml +0 -0
  24. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/.gitignore +0 -0
  25. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/CLAUDE.md +0 -0
  26. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/GOAL.md +0 -0
  27. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/LICENSE +0 -0
  28. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/MANIFEST.in +0 -0
  29. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/README.md +0 -0
  30. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/code_coordinator.egg-info/SOURCES.txt +0 -0
  31. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/code_coordinator.egg-info/dependency_links.txt +0 -0
  32. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/code_coordinator.egg-info/entry_points.txt +0 -0
  33. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/code_coordinator.egg-info/requires.txt +0 -0
  34. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/code_coordinator.egg-info/scm_file_list.json +0 -0
  35. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/code_coordinator.egg-info/top_level.txt +0 -0
  36. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/__init__.py +0 -0
  37. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/_board_mapping.py +0 -0
  38. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/acceptance.py +0 -0
  39. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/acceptance_drivers.py +0 -0
  40. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/agent_app.py +0 -0
  41. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/agent_update.py +0 -0
  42. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/agents/opencode/.gitignore +0 -0
  43. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/agents/opencode/agents/work.md +0 -0
  44. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/agents/opencode/routing.jsonc +0 -0
  45. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/audit.py +0 -0
  46. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/auto_loop.py +0 -0
  47. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/block_log.py +0 -0
  48. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/board_bool_guard.py +0 -0
  49. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/board_service.py +0 -0
  50. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/board_wire.py +0 -0
  51. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/brain.py +0 -0
  52. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/branch_model.py +0 -0
  53. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/bug_intake.py +0 -0
  54. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/cargo_cache.py +0 -0
  55. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/ci_github.py +0 -0
  56. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/ci_store.py +0 -0
  57. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/claim.py +0 -0
  58. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/cli.py +0 -0
  59. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/client.py +0 -0
  60. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/__init__.py +0 -0
  61. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/_common.py +0 -0
  62. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/acceptance.py +0 -0
  63. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/agent_ops.py +0 -0
  64. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/audit.py +0 -0
  65. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/chat.py +0 -0
  66. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/dispatch.py +0 -0
  67. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/drive.py +0 -0
  68. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/drive_queue.py +0 -0
  69. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/gate_a.py +0 -0
  70. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/gates.py +0 -0
  71. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/issues.py +0 -0
  72. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/lifecycle.py +0 -0
  73. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/merge.py +0 -0
  74. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/milestone.py +0 -0
  75. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/plan_followup.py +0 -0
  76. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/plans.py +0 -0
  77. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/portal.py +0 -0
  78. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/release.py +0 -0
  79. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/repo.py +0 -0
  80. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/report.py +0 -0
  81. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/review.py +0 -0
  82. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/scorecard.py +0 -0
  83. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/sessions.py +0 -0
  84. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/setup.py +0 -0
  85. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/status.py +0 -0
  86. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/terminal.py +0 -0
  87. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/test_gate.py +0 -0
  88. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/commands/tui.py +0 -0
  89. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/comments.py +0 -0
  90. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/config.py +0 -0
  91. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/config_reload.py +0 -0
  92. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/conflict_fix.py +0 -0
  93. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/dao.py +0 -0
  94. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/dashboard/__init__.py +0 -0
  95. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/dashboard/fixture.py +0 -0
  96. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/dashboard/index.html +0 -0
  97. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/dashboard/server.py +0 -0
  98. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/dashboard/terminal.py +0 -0
  99. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/db.py +0 -0
  100. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/dead_end.py +0 -0
  101. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/README.md +0 -0
  102. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-agent.service +0 -0
  103. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-db-backup.service +0 -0
  104. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-db-backup.sh +0 -0
  105. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-db-backup.timer +0 -0
  106. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-drive-queue.service +0 -0
  107. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-drive-queue.timer +0 -0
  108. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-notify.service +0 -0
  109. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-notify.timer +0 -0
  110. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-release-propagate.service +0 -0
  111. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-release-propagate.timer +0 -0
  112. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-release-window.service +0 -0
  113. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-release-window.timer +0 -0
  114. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-serve.service +0 -0
  115. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-web-dist-build.service +0 -0
  116. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-web-dist-build.timer +0 -0
  117. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy/coord-web.service +0 -0
  118. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy_manifest.py +0 -0
  119. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deploy_units.py +0 -0
  120. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/deps.py +0 -0
  121. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/diagnose.py +0 -0
  122. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/dispatch.py +0 -0
  123. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/dist_name.py +0 -0
  124. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/drive.py +0 -0
  125. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/drive_queue.py +0 -0
  126. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/drive_state.py +0 -0
  127. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/events.py +0 -0
  128. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/failure_class.py +0 -0
  129. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/filelock.py +0 -0
  130. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/fleet_config_health.py +0 -0
  131. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/freshness.py +0 -0
  132. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/gate_a.py +0 -0
  133. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/gate_b.py +0 -0
  134. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/gate_snapshot.py +0 -0
  135. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/gates.py +0 -0
  136. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/github_ops.py +0 -0
  137. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/goal.py +0 -0
  138. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/graph_health.py +0 -0
  139. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/__init__.py +0 -0
  140. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/aggregate.py +0 -0
  141. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/__init__.py +0 -0
  142. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/agent_install.py +0 -0
  143. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/cargo_targets.py +0 -0
  144. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/claude_binary.py +0 -0
  145. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/coord_web_ci_pin.py +0 -0
  146. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/deploy_lane_facts.py +0 -0
  147. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/disk.py +0 -0
  148. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/fleet_board.py +0 -0
  149. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  150. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/fleet_phantom.py +0 -0
  151. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/fleet_unit_drift.py +0 -0
  152. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/graph.py +0 -0
  153. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/graphify_cli.py +0 -0
  154. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/index_lock.py +0 -0
  155. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/plan_usage.py +0 -0
  156. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/repo_state.py +0 -0
  157. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/spawned_coord.py +0 -0
  158. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/timer_active.py +0 -0
  159. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/toolchain.py +0 -0
  160. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/unit_drift.py +0 -0
  161. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/unit_enablement.py +0 -0
  162. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/checks/worktrees.py +0 -0
  163. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/cli.py +0 -0
  164. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/context.py +0 -0
  165. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/fleet_snapshot.py +0 -0
  166. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/models.py +0 -0
  167. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/pypi.py +0 -0
  168. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/registry.py +0 -0
  169. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/render.py +0 -0
  170. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/health/units.py +0 -0
  171. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/hooks.py +0 -0
  172. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/housekeeping.py +0 -0
  173. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/interactive.py +0 -0
  174. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/issue_store.py +0 -0
  175. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/liveness_auditor.py +0 -0
  176. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/machine_pause.py +0 -0
  177. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/merge_queue.py +0 -0
  178. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/milestone_chat.py +0 -0
  179. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/milestone_dispatch.py +0 -0
  180. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/milestone_gate.py +0 -0
  181. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/milestone_order.py +0 -0
  182. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/mock_author.py +0 -0
  183. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/models.py +0 -0
  184. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/network.py +0 -0
  185. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/new_issue_chat.py +0 -0
  186. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/notifier/__init__.py +0 -0
  187. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/notifier/baseline.py +0 -0
  188. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/notifier/cli.py +0 -0
  189. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/notifier/collect.py +0 -0
  190. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/notifier/digest.py +0 -0
  191. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/notifier/models.py +0 -0
  192. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/notifier/predicate.py +0 -0
  193. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/notifier/service.py +0 -0
  194. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/notifier/store.py +0 -0
  195. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/notifier/transport.py +0 -0
  196. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/notify.py +0 -0
  197. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/openapi.py +0 -0
  198. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/overlap_fence.py +0 -0
  199. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/overlap_predict.py +0 -0
  200. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/parentage.py +0 -0
  201. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/parentage_github.py +0 -0
  202. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/pipeline.py +0 -0
  203. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/plan_parser.py +0 -0
  204. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/plans.py +0 -0
  205. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/platform_paths.py +0 -0
  206. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/portal_bridge.py +0 -0
  207. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/portal_store.py +0 -0
  208. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/portal_sync.py +0 -0
  209. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/pr_body_lint.py +0 -0
  210. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/prereqs.py +0 -0
  211. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/progress.py +0 -0
  212. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/providers/__init__.py +0 -0
  213. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/providers/base.py +0 -0
  214. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/providers/claude_pty.py +0 -0
  215. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/providers/opencode.py +0 -0
  216. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/queue_diagnose.py +0 -0
  217. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/reconcile.py +0 -0
  218. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/reconcile_tick.py +0 -0
  219. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/refine_chat.py +0 -0
  220. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/release_cordon.py +0 -0
  221. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/release_propagate.py +0 -0
  222. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/release_verify.py +0 -0
  223. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/release_window.py +0 -0
  224. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/repo_edit.py +0 -0
  225. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/repo_onboard.py +0 -0
  226. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/reports.py +0 -0
  227. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/revalidate.py +0 -0
  228. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/scorecard.py +0 -0
  229. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/self_health.py +0 -0
  230. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/serve_app.py +0 -0
  231. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  232. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  233. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  234. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  235. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  236. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/skills/portal-followup/SKILL.md +0 -0
  237. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  238. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  239. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/skills/update-issue/SKILL.md +0 -0
  240. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/smoke.py +0 -0
  241. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/spend_ceiling.py +0 -0
  242. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/split_work.py +0 -0
  243. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/stage_projection.py +0 -0
  244. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/state.py +0 -0
  245. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/test_author.py +0 -0
  246. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/test_chat.py +0 -0
  247. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/test_orchestrator.py +0 -0
  248. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/test_report.py +0 -0
  249. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/tui_release.py +0 -0
  250. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/usage.py +0 -0
  251. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/usage_limits.py +0 -0
  252. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/usage_rollup.py +0 -0
  253. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coord/worker_events.py +0 -0
  254. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/coordinator.example.yml +0 -0
  255. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-agent.service +0 -0
  256. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-db-backup.service +0 -0
  257. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-db-backup.sh +0 -0
  258. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-db-backup.timer +0 -0
  259. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-drive-queue.service +0 -0
  260. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-drive-queue.timer +0 -0
  261. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-notify.service +0 -0
  262. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-notify.timer +0 -0
  263. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-release-propagate.service +0 -0
  264. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-release-propagate.timer +0 -0
  265. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-release-window.service +0 -0
  266. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-release-window.timer +0 -0
  267. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-serve.service +0 -0
  268. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-web-dist-build.service +0 -0
  269. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-web-dist-build.sh +0 -0
  270. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-web-dist-build.timer +0 -0
  271. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-web-rollback.sh +0 -0
  272. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/coord-web.service +0 -0
  273. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/deploy/node-shim.sh +0 -0
  274. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  275. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/ADR_COORD_WEB_CI.md +0 -0
  276. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/ADR_COORD_WEB_DIST.md +0 -0
  277. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/AGENT_OPERATIONS.md +0 -0
  278. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/ARCHITECTURE.md +0 -0
  279. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/ARCH_SECURITY_GATES.md +0 -0
  280. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/COCKPIT.md +0 -0
  281. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/CONTROL_CENTER.md +0 -0
  282. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/COST_DISCIPLINE.md +0 -0
  283. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/CROSS_PLATFORM.md +0 -0
  284. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/CUSTOMER_PORTAL.md +0 -0
  285. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/DRIVE_QUEUE.md +0 -0
  286. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/EPHEMERAL_WORKERS.md +0 -0
  287. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/FORGE_MIGRATION.md +0 -0
  288. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/GRAPHIFY_SETUP.md +0 -0
  289. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/ISSUE_GUIDANCE.md +0 -0
  290. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/MAC_MINI.md +0 -0
  291. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  292. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/NOTIFIER.md +0 -0
  293. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/OPENCODE_VERIFICATION.md +0 -0
  294. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/OPERATING_GOTCHAS.md +0 -0
  295. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/ORACLE_LOOP.md +0 -0
  296. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/PHONE_WEBAPP.md +0 -0
  297. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/PIPELINE_V2.md +0 -0
  298. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/PLATFORM_EVOLUTION.md +0 -0
  299. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/SECOND_BACKEND.md +0 -0
  300. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/STORE_SERVICE.md +0 -0
  301. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  302. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/WEB_CONTROL_CENTER.md +0 -0
  303. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/WSL_WINDOWS_WORKER.md +0 -0
  304. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/mocks/web/README.md +0 -0
  305. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/mocks/web/_tokens.css +0 -0
  306. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/mocks/web/issue-detail.html +0 -0
  307. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/mocks/web/pipeline-narrow.html +0 -0
  308. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/docs/mocks/web/pipeline-wide.html +0 -0
  309. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/graphify-out/.gitignore +0 -0
  310. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/install-agent.sh +0 -0
  311. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/pyproject.toml +0 -0
  312. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/audit_review_verdict_overrides.py +0 -0
  313. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  314. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/azure-workers/build-worker-image.sh +0 -0
  315. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/azure-workers/coordinator-machine.py +0 -0
  316. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/azure-workers/epic-down.sh +0 -0
  317. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/azure-workers/epic-up.sh +0 -0
  318. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/azure-workers/preflight.sh +0 -0
  319. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/azure-workers/provision-worker.sh +0 -0
  320. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  321. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  322. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/azure-workers/verify-github-token.sh +0 -0
  323. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/codegen.py +0 -0
  324. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/coord-test-runner.sh +0 -0
  325. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/drive-batch.sh +0 -0
  326. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/gen_board_fixture.py +0 -0
  327. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/next_release_tag.py +0 -0
  328. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/run_tests_in_populated_home.sh +0 -0
  329. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/run_tests_without_gh.sh +0 -0
  330. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/smoke_437_interactive.py +0 -0
  331. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/verify_878_review_capture.py +0 -0
  332. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/verify_release_published.py +0 -0
  333. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/scripts/verify_release_wheel.py +0 -0
  334. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/setup.cfg +0 -0
  335. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/SMOKE_SET.md +0 -0
  336. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/__init__.py +0 -0
  337. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  338. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-33/contract.md +0 -0
  339. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-33/manifest.yml +0 -0
  340. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  341. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  342. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  343. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  344. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-37/conftest.py +0 -0
  345. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-37/contract.md +0 -0
  346. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-37/manifest.yml +0 -0
  347. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  348. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  349. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-38/contract.md +0 -0
  350. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-38/manifest.yml +0 -0
  351. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  352. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  353. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  354. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  355. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  356. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  357. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  358. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  359. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  360. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  361. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-51/contract.md +0 -0
  362. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  363. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  364. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-51/manifest.yml +0 -0
  365. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  366. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-51/tsconfig.json +0 -0
  367. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  368. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  369. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  370. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/contract.md +0 -0
  371. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  372. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/manifest.yml +0 -0
  373. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  374. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  375. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  376. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  377. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  378. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  379. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  380. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  381. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  382. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  383. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  384. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  385. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/conftest.py +0 -0
  386. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/board-pipeline-basic.json +0 -0
  387. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  388. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  389. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  390. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  391. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/playwright/all_pass.json +0 -0
  392. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  393. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/playwright/mixed_fail.json +0 -0
  394. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  395. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  396. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/playwright/skip.json +0 -0
  397. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/playwright/truncated.json +0 -0
  398. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  399. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  400. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  401. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  402. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  403. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  404. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  405. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  406. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_acceptance.py +0 -0
  407. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_acceptance_drivers.py +0 -0
  408. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_api_error.py +0 -0
  409. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_app.py +0 -0
  410. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_branch_base.py +0 -0
  411. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_branch_capture.py +0 -0
  412. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_config_free_1712.py +0 -0
  413. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_deploy_units_endpoint.py +0 -0
  414. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_dirty_worktree.py +0 -0
  415. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  416. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_graph_self_heal.py +0 -0
  417. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_health_h3.py +0 -0
  418. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_idle_restart.py +0 -0
  419. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_push_failure.py +0 -0
  420. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_reap.py +0 -0
  421. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_repos_and_pull.py +0 -0
  422. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_restart_services_endpoint.py +0 -0
  423. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_skills_self_heal.py +0 -0
  424. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_startup_diagnostics.py +0 -0
  425. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_update.py +0 -0
  426. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_update_bluegreen.py +0 -0
  427. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_usage_limit.py +0 -0
  428. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_agent_zero_commit.py +0 -0
  429. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_ambient_home_isolation.py +0 -0
  430. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_approve_reject_plan.py +0 -0
  431. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_approve_usage_gate.py +0 -0
  432. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_assignment_already_recorded_daemon.py +0 -0
  433. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_audit_log.py +0 -0
  434. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_audit_outcome.py +0 -0
  435. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_audit_query.py +0 -0
  436. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_auto_loop.py +0 -0
  437. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_auto_release_publish_2035.py +0 -0
  438. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_base_checkout_restore.py +0 -0
  439. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_block_log.py +0 -0
  440. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_board_cap_762.py +0 -0
  441. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_board_fixture.py +0 -0
  442. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_board_read_path.py +0 -0
  443. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_board_service.py +0 -0
  444. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_board_state.py +0 -0
  445. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_board_wire.py +0 -0
  446. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_brain.py +0 -0
  447. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_branch_model.py +0 -0
  448. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_bug_intake.py +0 -0
  449. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_build_worker_image_env_update.py +0 -0
  450. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cargo_cache.py +0 -0
  451. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_ci_acceptance_gate_1950.py +0 -0
  452. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_ci_parity_2091.py +0 -0
  453. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_ci_store.py +0 -0
  454. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_claim.py +0 -0
  455. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_acceptance.py +0 -0
  456. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_assign.py +0 -0
  457. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  458. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_assign_interactive_remote.py +0 -0
  459. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_assign_provider.py +0 -0
  460. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  461. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_audit.py +0 -0
  462. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_chat_continue.py +0 -0
  463. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_decide.py +0 -0
  464. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_diagnose_config_provenance.py +0 -0
  465. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_diagnose_graph.py +0 -0
  466. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_diagnose_self.py +0 -0
  467. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_doctor.py +0 -0
  468. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_doctor_config_free_1801.py +0 -0
  469. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  470. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_drive.py +0 -0
  471. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_drive_queue.py +0 -0
  472. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_escalate.py +0 -0
  473. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_fix_headless_review.py +0 -0
  474. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_gate_a.py +0 -0
  475. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_install_drift.py +0 -0
  476. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_install_skills.py +0 -0
  477. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_issue_create_label.py +0 -0
  478. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_issue_reopen.py +0 -0
  479. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_merge.py +0 -0
  480. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_milestone_assign.py +0 -0
  481. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_milestone_capture.py +0 -0
  482. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_milestone_chat_add_child.py +0 -0
  483. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_milestone_dispatch.py +0 -0
  484. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_milestone_gate_b.py +0 -0
  485. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_milestone_gate_c.py +0 -0
  486. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_milestone_order.py +0 -0
  487. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  488. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_milestone_ship.py +0 -0
  489. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_network.py +0 -0
  490. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_new_issue_chat.py +0 -0
  491. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_plans.py +0 -0
  492. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_portal.py +0 -0
  493. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_pull_artifact.py +0 -0
  494. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_queue.py +0 -0
  495. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_reattach_sessions.py +0 -0
  496. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_refine_board.py +0 -0
  497. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_release_preflight.py +0 -0
  498. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_release_propagate.py +0 -0
  499. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_release_window.py +0 -0
  500. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_repo_2220.py +0 -0
  501. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_scorecard.py +0 -0
  502. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_set_review_findings.py +0 -0
  503. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_status_advisory_terminal.py +0 -0
  504. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_status_merge_queue.py +0 -0
  505. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_status_provider.py +0 -0
  506. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_status_review_finalizing.py +0 -0
  507. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_status_test_failed_tag.py +0 -0
  508. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_status_usage_limit.py +0 -0
  509. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_sync_comments_873.py +0 -0
  510. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_test_plan.py +0 -0
  511. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_track.py +0 -0
  512. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_tui_update.py +0 -0
  513. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cli_wait.py +0 -0
  514. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_client_base_install.py +0 -0
  515. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_comments.py +0 -0
  516. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_completion_summary.py +0 -0
  517. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_config.py +0 -0
  518. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_config_acceptance.py +0 -0
  519. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_config_audit.py +0 -0
  520. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_config_pricing.py +0 -0
  521. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  522. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_config_usage_gate.py +0 -0
  523. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_conflict_fix.py +0 -0
  524. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_conflict_fix_semantic.py +0 -0
  525. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_coord_test.py +0 -0
  526. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_coord_test_runner_baseline.py +0 -0
  527. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_coord_test_runner_populated_home.py +0 -0
  528. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_coord_test_runner_routing.py +0 -0
  529. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_coord_test_runner_toolchain.py +0 -0
  530. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_coord_web_sse_restart_live.py +0 -0
  531. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_coordinator_machine.py +0 -0
  532. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_cross_platform_imports.py +0 -0
  533. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_dashboard.py +0 -0
  534. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_dashboard_fixture.py +0 -0
  535. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_dashboard_terminal.py +0 -0
  536. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_dashboard_terminal_live.py +0 -0
  537. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_db.py +0 -0
  538. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_dead_end.py +0 -0
  539. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_deploy_coord_db_backup.py +0 -0
  540. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_deploy_coord_web_dist.py +0 -0
  541. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_deploy_coord_web_rollback.py +0 -0
  542. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_deploy_drive_queue_unit.py +0 -0
  543. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_deploy_manifest.py +0 -0
  544. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_deploy_units_lane.py +0 -0
  545. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_deploy_web_unit.py +0 -0
  546. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_deps.py +0 -0
  547. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_diagnose.py +0 -0
  548. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_dispatch.py +0 -0
  549. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_dispatch_target_validation.py +0 -0
  550. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_dist_name.py +0 -0
  551. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_done_housekeeping.py +0 -0
  552. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_drive.py +0 -0
  553. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_drive_queue.py +0 -0
  554. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_drive_state.py +0 -0
  555. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_drive_tmux.py +0 -0
  556. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_epic_up_capability_detection.py +0 -0
  557. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  558. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_epic_up_image_provenance.py +0 -0
  559. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_errors.py +0 -0
  560. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_events.py +0 -0
  561. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_failure_class.py +0 -0
  562. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_filelock.py +0 -0
  563. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  564. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_fix_of_force_override.py +0 -0
  565. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_fleet_config_health.py +0 -0
  566. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_fleet_health_probes.py +0 -0
  567. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_fleet_health_snapshot.py +0 -0
  568. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_freshness.py +0 -0
  569. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_gate_a.py +0 -0
  570. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_gate_b.py +0 -0
  571. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_gate_snapshot_staleness.py +0 -0
  572. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_gates.py +0 -0
  573. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  574. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_generated_types_fixture.py +0 -0
  575. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_github_ops.py +0 -0
  576. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_goal.py +0 -0
  577. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_graph_health.py +0 -0
  578. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_graph_selfheal_absent_2237.py +0 -0
  579. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_handoff.py +0 -0
  580. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_health_checks.py +0 -0
  581. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_health_cli.py +0 -0
  582. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_health_cli_graph.py +0 -0
  583. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_health_config.py +0 -0
  584. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_health_context.py +0 -0
  585. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_health_coord_web_ci_pin.py +0 -0
  586. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_health_deploy_lane_facts.py +0 -0
  587. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_health_incident_regression.py +0 -0
  588. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_health_pypi.py +0 -0
  589. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_health_registry.py +0 -0
  590. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_health_timer_active.py +0 -0
  591. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_health_toolchain.py +0 -0
  592. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_health_unit_drift.py +0 -0
  593. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_health_unit_enablement.py +0 -0
  594. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_hooks.py +0 -0
  595. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_human_attended_437.py +0 -0
  596. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_init.py +0 -0
  597. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_integration.py +0 -0
  598. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_interactive_briefing_echo.py +0 -0
  599. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_interactive_prefill_state.py +0 -0
  600. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_interactive_session_relaunch.py +0 -0
  601. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_interactive_test_verdict_backstop.py +0 -0
  602. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_interactive_token_attribution.py +0 -0
  603. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_interactive_worktree.py +0 -0
  604. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_issue_store_seam.py +0 -0
  605. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_liveness_auditor.py +0 -0
  606. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_liveness_notify.py +0 -0
  607. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_machine_pause.py +0 -0
  608. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_merge_queue.py +0 -0
  609. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_merge_verify.py +0 -0
  610. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_milestone_chat.py +0 -0
  611. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_milestone_dispatch.py +0 -0
  612. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_milestone_gate.py +0 -0
  613. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_milestone_order.py +0 -0
  614. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_milestone_seam.py +0 -0
  615. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_mock_author.py +0 -0
  616. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_model_tiering.py +0 -0
  617. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_models.py +0 -0
  618. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_models_config_labels.py +0 -0
  619. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_needs_attention.py +0 -0
  620. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_network.py +0 -0
  621. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_new_issue_chat.py +0 -0
  622. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_next_release_tag.py +0 -0
  623. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_no_direct_gh_calls.py +0 -0
  624. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_node_shim.py +0 -0
  625. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_notifier_baseline.py +0 -0
  626. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_notifier_cli.py +0 -0
  627. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_notifier_collect.py +0 -0
  628. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_notifier_config.py +0 -0
  629. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_notifier_drive_seam.py +0 -0
  630. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_notifier_isolation.py +0 -0
  631. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_notifier_predicate.py +0 -0
  632. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_notifier_quiet_hours.py +0 -0
  633. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_notifier_service.py +0 -0
  634. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_notify.py +0 -0
  635. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_notify_drain.py +0 -0
  636. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_openapi.py +0 -0
  637. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_operational_defaults.py +0 -0
  638. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_overlap_fence.py +0 -0
  639. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_overlap_predict.py +0 -0
  640. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_packaged_deploy_units.py +0 -0
  641. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_parentage.py +0 -0
  642. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_paste_landed.py +0 -0
  643. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_pipeline.py +0 -0
  644. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_plan_followup_approve_plan_command.py +0 -0
  645. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_plan_followup_pr_command.py +0 -0
  646. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_plan_followup_review_command.py +0 -0
  647. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_plan_only.py +0 -0
  648. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_plan_parser.py +0 -0
  649. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_platform_paths.py +0 -0
  650. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_portal_bridge.py +0 -0
  651. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_portal_config.py +0 -0
  652. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_portal_sync.py +0 -0
  653. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_pr_body_lint.py +0 -0
  654. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_prereqs.py +0 -0
  655. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_production_db_guard.py +0 -0
  656. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_progress.py +0 -0
  657. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_provider_seam.py +0 -0
  658. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_providers_config_labels.py +0 -0
  659. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_providers_pty.py +0 -0
  660. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_quiet_hours.py +0 -0
  661. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_quiet_hours_store_2146.py +0 -0
  662. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_reap_merged_sessions.py +0 -0
  663. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_reap_stale_interactive_tick.py +0 -0
  664. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_reconcile.py +0 -0
  665. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_reconcile_branch.py +0 -0
  666. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_reconcile_completions.py +0 -0
  667. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_reconcile_merges.py +0 -0
  668. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_reconcile_no_agent_record.py +0 -0
  669. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_reconcile_tick.py +0 -0
  670. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_reconcile_usage_limit_done.py +0 -0
  671. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_refine_chat.py +0 -0
  672. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_release_cordon_2101.py +0 -0
  673. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  674. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_release_cordon_deadlock_2240.py +0 -0
  675. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_release_propagate.py +0 -0
  676. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_release_unified_1242.py +0 -0
  677. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_release_verify.py +0 -0
  678. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_release_window.py +0 -0
  679. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_remote_auto_prune.py +0 -0
  680. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_remote_interactive_reaper.py +0 -0
  681. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_repo_edit_2220.py +0 -0
  682. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_repo_graph_fleet_2237.py +0 -0
  683. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_repo_onboard_2220.py +0 -0
  684. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_report_result_push.py +0 -0
  685. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_reports.py +0 -0
  686. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_retry.py +0 -0
  687. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_retry_advisory_1606.py +0 -0
  688. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_retry_type_1636.py +0 -0
  689. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_revalidate.py +0 -0
  690. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_review.py +0 -0
  691. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_review_end_review_without_verdict.py +0 -0
  692. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_review_parse_failure_diagnostic.py +0 -0
  693. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_review_reaffirm.py +0 -0
  694. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_review_state.py +0 -0
  695. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_review_verdict_backstop.py +0 -0
  696. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_review_verdict_override_audit.py +0 -0
  697. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_review_verdict_relay.py +0 -0
  698. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_review_zero_commits.py +0 -0
  699. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_scoped_review_wiring.py +0 -0
  700. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_scorecard.py +0 -0
  701. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_self_health.py +0 -0
  702. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_serve.py +0 -0
  703. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_serve_app_board_trim.py +0 -0
  704. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_session.py +0 -0
  705. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_slice_issue_attribution.py +0 -0
  706. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_smoke.py +0 -0
  707. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_smoke_live_checkout_restore.py +0 -0
  708. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_smoke_workflow.py +0 -0
  709. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_spend_ceiling.py +0 -0
  710. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_spend_ceiling_coordinator.py +0 -0
  711. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_split.py +0 -0
  712. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_split_work.py +0 -0
  713. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_stage_projection.py +0 -0
  714. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_stalled_pipeline.py +0 -0
  715. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_state.py +0 -0
  716. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_state_review_findings_daemon.py +0 -0
  717. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_status_fleet_footer.py +0 -0
  718. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_stop_1567.py +0 -0
  719. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_stuck.py +0 -0
  720. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_terminal_command.py +0 -0
  721. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_test_author.py +0 -0
  722. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_test_chat.py +0 -0
  723. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_test_orchestrator.py +0 -0
  724. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_test_report.py +0 -0
  725. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_test_verdict_parsing.py +0 -0
  726. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_test_verdict_transcript_floor.py +0 -0
  727. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_thin_client_board_audit.py +0 -0
  728. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_thin_client_config_load_1080.py +0 -0
  729. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_thin_client_daemon_routing_906.py +0 -0
  730. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_tmux_host.py +0 -0
  731. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_tmux_session.py +0 -0
  732. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_transcript_floor.py +0 -0
  733. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_usage.py +0 -0
  734. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_usage_limits.py +0 -0
  735. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_usage_rollup.py +0 -0
  736. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_venv_live_install_2121.py +0 -0
  737. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_version_single_source.py +0 -0
  738. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_watch.py +0 -0
  739. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  740. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_worker_events.py +0 -0
  741. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_worker_image_pin_sync.py +0 -0
  742. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_worker_safety.py +0 -0
  743. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_worker_test_scoping.py +0 -0
  744. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_worktree.py +0 -0
  745. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  746. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/Cargo.lock +0 -0
  747. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/Cargo.toml +0 -0
  748. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/cargo-config-local-quadraui.toml.example +0 -0
  749. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/audit.rs +0 -0
  750. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/chat.rs +0 -0
  751. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/data.rs +0 -0
  752. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/dialogs.rs +0 -0
  753. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/doc_tabs.rs +0 -0
  754. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/drive.rs +0 -0
  755. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/drive_queue.rs +0 -0
  756. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/escalation.rs +0 -0
  757. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/events.rs +0 -0
  758. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/fixtures.rs +0 -0
  759. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/fleet_health.rs +0 -0
  760. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/fleet_sessions.rs +0 -0
  761. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/fleet_terminals.rs +0 -0
  762. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/format.rs +0 -0
  763. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/milestone_dag.rs +0 -0
  764. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/mod.rs +0 -0
  765. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/msv.rs +0 -0
  766. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/pipeline.rs +0 -0
  767. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/plans.rs +0 -0
  768. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/render.rs +0 -0
  769. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/reports.rs +0 -0
  770. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/sessions.rs +0 -0
  771. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/settings_ui.rs +0 -0
  772. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/sidebar.rs +0 -0
  773. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/terminal.rs +0 -0
  774. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/tests.rs +0 -0
  775. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/types.rs +0 -0
  776. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/app/workspace.rs +0 -0
  777. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/bin/gtk.rs +0 -0
  778. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/commands.rs +0 -0
  779. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/lib.rs +0 -0
  780. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/main.rs +0 -0
  781. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/src/settings.rs +0 -0
  782. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/tests/acceptance.rs +0 -0
  783. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/tui/tests/cli.rs +0 -0
  784. {code_coordinator-0.5.189 → code_coordinator-0.5.190}/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.189
3
+ Version: 0.5.190
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.189
3
+ Version: 0.5.190
4
4
  Summary: Coordinate Claude Code workers across multiple machines and repos.
5
5
  Author-email: John Donaghy <johnfdonaghy@gmail.com>
6
6
  License-Expression: LicenseRef-FSL-1.1-MIT
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.189",
2
+ "tag": "0.5.190",
3
3
  "distance": 0,
4
- "node": "g9c81a5128ae2355b8dee8b005e2836f58e553167",
4
+ "node": "g99757b0d4a54a8a5b3c7ec90b7c5beeb9f118ecc",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-20"
@@ -3901,13 +3901,16 @@ def _base_checkout_write_guard_tools(repo_path: str) -> list[str]:
3901
3901
  # editing coordinator.yml/coord.db) silently also blocked every worker's own
3902
3902
  # worktree under `~/.coord/worktrees/<id>/`, burning a full $5.23 session
3903
3903
  # that reasoned, designed, and only discovered at the very end that it could
3904
- # not save anything. `default_worker_command`'s `--setting-sources user`
3905
- # (above) closes off the specific mechanism (workers no longer load
3906
- # project/local settings at all), but this preflight check is kept as a
3907
- # defense-in-depth: it also catches a blanket deny rule living in the
3908
- # machine's *user*-level settings (`~/.claude/settings.json`, still loaded)
3909
- # and plain OS-level write failures (read-only mount, wrong ownership, full
3910
- # disk) that have nothing to do with Claude Code at all.
3904
+ # not save anything. `default_worker_command`'s `--bare` (above, #2462;
3905
+ # originally the narrower `--setting-sources user`) closes off the specific
3906
+ # mechanism for headless workers — they no longer load *any* Claude Code
3907
+ # settings.json (user, project, or local) — but this preflight check is kept
3908
+ # as a defense-in-depth: it still catches a blanket deny rule living in the
3909
+ # machine's *user*-level settings (`~/.claude/settings.json`) that would
3910
+ # affect the human-attended interactive PTY path (which intentionally keeps
3911
+ # the default setting sources, see the comment in `default_worker_command`),
3912
+ # and it catches plain OS-level write failures (read-only mount, wrong
3913
+ # ownership, full disk) that have nothing to do with Claude Code at all.
3911
3914
  _DENY_PATTERN_RE = re.compile(r"^(Edit|Write)\(//(.+)\)$")
3912
3915
 
3913
3916
 
@@ -3977,11 +3980,13 @@ def find_blocking_deny_rule(
3977
3980
  """Scan Claude Code settings files for a deny rule blocking *worktree_path*.
3978
3981
 
3979
3982
  Defaults to scanning just the machine's user-level settings
3980
- (``~/.claude/settings.json``) — the one settings source a worker still
3981
- loads after the ``--setting-sources user`` restriction in
3982
- :func:`default_worker_command`; a checkout-local
3983
- ``.claude/settings.local.json`` can no longer reach a worker at all, so
3984
- it is intentionally not scanned here.
3983
+ (``~/.claude/settings.json``). Since #2462, headless workers run with
3984
+ ``--bare`` and load no Claude Code settings.json at all (user, project,
3985
+ or local) — this file matters for the human-attended interactive PTY
3986
+ path (:class:`coord.providers.claude_pty.ClaudePtyProvider`), which
3987
+ intentionally keeps the default setting sources; a checkout-local
3988
+ ``.claude/settings.local.json`` can no longer reach a headless worker at
3989
+ all either way, so it is intentionally not scanned here.
3985
3990
 
3986
3991
  Returns a human-readable ``"'<pattern>' in <file>"`` message for the
3987
3992
  first matching rule found, or ``None`` when no scanned file carries one
@@ -4051,6 +4056,34 @@ def check_worktree_writable(
4051
4056
  return None
4052
4057
 
4053
4058
 
4059
+ def _claude_md_system_prompt_suffix(repo_path: str) -> str:
4060
+ """Return a system-prompt suffix embedding the target repo's CLAUDE.md.
4061
+
4062
+ #2462: worker dispatch below passes ``--bare``, which disables Claude
4063
+ Code's own automatic CLAUDE.md auto-discovery (along with hooks,
4064
+ ``.mcp.json``, and settings — see the ``--bare`` comment in
4065
+ :func:`default_worker_command`). Nothing else in a work-shaped leg's
4066
+ briefing embeds the target repo's actual CLAUDE.md text, so without this
4067
+ a worker would silently lose every per-repo convention, testing rule,
4068
+ and sealed-path note that isn't hardcoded into the repo-agnostic
4069
+ ``WORKER_SYSTEM_PROMPT``.
4070
+
4071
+ Mirrors :func:`coord.review.read_repo_claude_md`, which the review leg
4072
+ already uses for the same reason (a review must never run blind to
4073
+ CLAUDE.md) — this repo's own CLAUDE.md says it is "loaded into every
4074
+ worker leg, every review leg, and every coordinator session", so the
4075
+ work-shaped legs need the identical defensive read now that ambient
4076
+ discovery is gone. Returns ``""`` (a no-op suffix) when the repo has no
4077
+ CLAUDE.md or it can't be read.
4078
+ """
4079
+ from coord.review import read_repo_claude_md # noqa: PLC0415
4080
+
4081
+ claude_md = read_repo_claude_md(Path(repo_path).expanduser())
4082
+ if not claude_md:
4083
+ return ""
4084
+ return "\n\n## Project rules (from CLAUDE.md)\n\n" + claude_md.strip() + "\n"
4085
+
4086
+
4054
4087
  def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER_BINARY) -> list[str]:
4055
4088
  """Build the argv for invoking the worker on this assignment.
4056
4089
 
@@ -4073,6 +4106,9 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4073
4106
  """
4074
4107
  if spec.type == "plan":
4075
4108
  system_prompt = spec.system_prompt if spec.system_prompt else WORKER_PLAN_PROMPT
4109
+ # #2462: --bare drops CLAUDE.md auto-discovery; a plan leg still
4110
+ # needs the target repo's conventions to plan against.
4111
+ system_prompt += _claude_md_system_prompt_suffix(spec.repo_path)
4076
4112
  allowed_tools = "Read,Bash"
4077
4113
  elif spec.type == "refinement":
4078
4114
  # #264: refinement is a developer-driven chat for scoping an issue.
@@ -4126,6 +4162,8 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4126
4162
  # and deny list instead of the generic WORKER_SYSTEM_PROMPT.
4127
4163
  system_prompt = spec.system_prompt if spec.system_prompt else MOCK_AUTHOR_SYSTEM_PROMPT
4128
4164
  system_prompt += build_deny_prompt(MOCK_AUTHOR_DENY_COMMANDS)
4165
+ # #2462: --bare drops CLAUDE.md auto-discovery.
4166
+ system_prompt += _claude_md_system_prompt_suffix(spec.repo_path)
4129
4167
  allowed_tools = "Read,Edit,Write,Bash"
4130
4168
  elif spec.type == "smoke":
4131
4169
  # #2301: smoke gets its own branch instead of falling through to the
@@ -4177,6 +4215,11 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4177
4215
  else:
4178
4216
  system_prompt = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
4179
4217
  system_prompt += build_deny_prompt(spec.deny_commands)
4218
+ # #2462: --bare drops CLAUDE.md auto-discovery for this catch-all
4219
+ # branch too — it covers "work", "fix", "conflict-fix", and
4220
+ # "test-author", every one of which edits code and needs the
4221
+ # target repo's conventions. See _claude_md_system_prompt_suffix.
4222
+ system_prompt += _claude_md_system_prompt_suffix(spec.repo_path)
4180
4223
  # #2169: `Monitor` is the sanctioned way to poll a backgrounded
4181
4224
  # long-running command in bounded steps (see the ONE-SHOT section of
4182
4225
  # WORKER_SYSTEM_PROMPT) instead of a foreground loop that blocks
@@ -4204,8 +4247,8 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4204
4247
  "--system-prompt", system_prompt,
4205
4248
  "--allowedTools", allowed_tools,
4206
4249
  "--permission-mode", "acceptEdits",
4207
- # #1445: a worker must not inherit whatever project/local Claude Code
4208
- # settings the host's checkout happens to carry — e.g. a
4250
+ # #1445 / #2462: a worker must not inherit whatever project/local
4251
+ # Claude Code settings the host's checkout happens to carry — e.g. a
4209
4252
  # `.claude/settings.local.json` deny rule the OPERATOR added for
4210
4253
  # their own interactive session in that checkout (meant to protect
4211
4254
  # ~/.coord/coordinator.yml etc from an interactive session, but
@@ -4216,17 +4259,48 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4216
4259
  # has no .claude/ dir of its own (it's untracked/gitignored there),
4217
4260
  # so a deny rule that never touches the worktree's working directory
4218
4261
  # still blocked Edit/Write calls from a `claude -p` session cwd'd
4219
- # into that worktree. Restricting to "user" means a worker's
4220
- # permission profile is fully controlled by the --allowedTools /
4221
- # --disallowedTools / --permission-mode flags in this function (and
4222
- # its own hard-coded system prompt), not by the checkout's
4223
- # settings.json / settings.local.json. This is the headless/
4224
- # `claude -p` path only — the human-attended interactive PTY path
4225
- # (coord.providers.claude_pty.ClaudePtyProvider) intentionally keeps
4226
- # the default sources so an operator's own `coord init`-configured
4227
- # convenience allow-list still applies to a session they're
4228
- # attached to and watching.
4229
- "--setting-sources", "user",
4262
+ # into that worktree.
4263
+ #
4264
+ # `--setting-sources user` (the original #1445 fix) only closed this
4265
+ # for *settings.json* — a checkout's `.claude/hooks/` and `.mcp.json`
4266
+ # are governed separately and kept loading regardless, so a
4267
+ # never-trusted repo's hooks would still run and its MCP servers
4268
+ # would still connect in every worker session, because a `-p`
4269
+ # session shows neither the workspace-trust dialog nor the
4270
+ # per-server MCP approval prompt that would normally gate that (see
4271
+ # code.claude.com/docs/en/headless.md). `--bare` is the flag that
4272
+ # closes all three sources (settings, hooks, .mcp.json) at once, plus
4273
+ # LSP/plugin-sync/CLAUDE.md auto-discovery — none of which a headless
4274
+ # worker should be picking up *ambiently* from the target repo's own
4275
+ # checkout either. A worker's permission profile is fully controlled
4276
+ # by the --allowedTools / --disallowedTools / --permission-mode
4277
+ # flags in this function (and its own hard-coded system prompt); it
4278
+ # needs no MCP servers (no spec.type grants the `Agent` tool, so
4279
+ # `--agents` is unneeded too) and no `--settings`.
4280
+ #
4281
+ # CLAUDE.md is the one exception worth calling out: losing its
4282
+ # *ambient* auto-discovery does NOT mean a work-shaped leg loses the
4283
+ # content. `_claude_md_system_prompt_suffix` (see the branches
4284
+ # above: "plan", "mock-author", and this catch-all "else") reads it
4285
+ # explicitly off *spec.repo_path* and embeds it into --system-prompt
4286
+ # instead — the same defensive pattern coord.review.read_repo_claude_md
4287
+ # already used for review legs (#2462).
4288
+ #
4289
+ # AUTH CAVEAT: per Claude Code's own docs, `--bare` "never reads
4290
+ # OAuth credentials or the system keychain" — only `ANTHROPIC_API_KEY`
4291
+ # (env, inherited via `_worker_subprocess_env`) or an `apiKeyHelper`
4292
+ # supplied via `--settings` authenticate. This is a behavior change
4293
+ # for any fleet machine whose worker auth today comes from
4294
+ # `claude setup-token` / `CLAUDE_CODE_OAUTH_TOKEN` or an interactive
4295
+ # `claude login` (the pattern docs/CONTROL_CENTER.md §14 documents for
4296
+ # per-person subscription auth) rather than an API key — such a
4297
+ # machine must switch to `ANTHROPIC_API_KEY` (or an `apiKeyHelper`)
4298
+ # for headless dispatch to keep authenticating. This is the
4299
+ # headless/`claude -p` path only — the human-attended interactive PTY
4300
+ # path (coord.providers.claude_pty.ClaudePtyProvider) intentionally
4301
+ # keeps the default sources, so OAuth/keychain login still works for
4302
+ # a session an operator is attached to and watching.
4303
+ "--bare",
4230
4304
  ]
4231
4305
  if spec.model:
4232
4306
  argv.extend(["--model", spec.model])
@@ -147,8 +147,8 @@ def _dispatch_review_of(
147
147
 
148
148
  from coord.review import ( # noqa: PLC0415
149
149
  REVIEWER_SYSTEM_PROMPT,
150
- _read_repo_claude_md,
151
150
  build_review_briefing,
151
+ read_repo_claude_md,
152
152
  )
153
153
  from coord.models import Assignment # noqa: PLC0415
154
154
  from coord.state import ( # noqa: PLC0415
@@ -194,7 +194,7 @@ def _dispatch_review_of(
194
194
  # have the reviewer read ./CLAUDE.md in the remote checkout it sits
195
195
  # in (its actual rules, not the coordinator's possibly-divergent copy).
196
196
  claude_md = (
197
- _read_repo_claude_md(Path(review_repo_path)) if _is_local else ""
197
+ read_repo_claude_md(Path(review_repo_path)) if _is_local else ""
198
198
  )
199
199
 
200
200
  # #612: embed the merge-base (three-dot) diff so the reviewer has
@@ -118,6 +118,7 @@ class ClaudeProvider(Provider):
118
118
  WORKER_PLAN_PROMPT,
119
119
  WORKER_SYSTEM_PROMPT,
120
120
  _base_checkout_write_guard_tools,
121
+ _claude_md_system_prompt_suffix,
121
122
  _sealed_write_guard_tools,
122
123
  build_deny_prompt,
123
124
  )
@@ -142,6 +143,10 @@ class ClaudeProvider(Provider):
142
143
  if system_prompt is None or allowed_tools is None:
143
144
  if spec.type == "plan":
144
145
  _sp = spec.system_prompt if spec.system_prompt else WORKER_PLAN_PROMPT
146
+ # #2462: keep in sync with default_worker_command's identical
147
+ # branch — `--bare` below drops CLAUDE.md auto-discovery, so a
148
+ # plan leg needs the target repo's conventions embedded here.
149
+ _sp += _claude_md_system_prompt_suffix(spec.repo_path)
145
150
  _at = "Read,Bash"
146
151
  elif spec.type == "refinement":
147
152
  _sp = spec.system_prompt if spec.system_prompt else REFINEMENT_SYSTEM_PROMPT
@@ -172,6 +177,9 @@ class ClaudeProvider(Provider):
172
177
  elif spec.type == "mock-author":
173
178
  _sp = spec.system_prompt if spec.system_prompt else MOCK_AUTHOR_SYSTEM_PROMPT
174
179
  _sp += build_deny_prompt(MOCK_AUTHOR_DENY_COMMANDS)
180
+ # #2462: keep in sync with default_worker_command — `--bare`
181
+ # drops CLAUDE.md auto-discovery.
182
+ _sp += _claude_md_system_prompt_suffix(spec.repo_path)
175
183
  _at = "Read,Edit,Write,Bash"
176
184
  elif spec.type == "smoke":
177
185
  # #2301: keep in sync with default_worker_command's identical
@@ -196,6 +204,12 @@ class ClaudeProvider(Provider):
196
204
  else:
197
205
  _sp = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
198
206
  _sp += build_deny_prompt(spec.deny_commands)
207
+ # #2462: keep in sync with default_worker_command's identical
208
+ # catch-all branch — it covers "work", "fix", "conflict-fix"
209
+ # and "test-author", every one of which edits code and needs
210
+ # the target repo's CLAUDE.md conventions, which `--bare`
211
+ # below stops Claude Code from auto-discovering.
212
+ _sp += _claude_md_system_prompt_suffix(spec.repo_path)
199
213
  # #2169: keep in sync with default_worker_command's identical
200
214
  # branch — Monitor is the sanctioned bounded-poll tool for a
201
215
  # backgrounded long-running command. #2301: this grant is for
@@ -215,10 +229,11 @@ class ClaudeProvider(Provider):
215
229
  "--system-prompt", system_prompt,
216
230
  "--allowedTools", allowed_tools,
217
231
  "--permission-mode", permission_mode,
218
- # #1445: see the matching comment in default_worker_command —
219
- # workers must not inherit the host checkout's project/local
220
- # Claude Code settings.
221
- "--setting-sources", "user",
232
+ # #1445 / #2462: see the matching comment in
233
+ # default_worker_command — workers must not inherit the host
234
+ # checkout's project/local Claude Code settings, hooks, or
235
+ # .mcp.json MCP servers. `--bare` closes all of those at once.
236
+ "--bare",
222
237
  ]
223
238
  if effective_model:
224
239
  argv.extend(["--model", effective_model])
@@ -1213,7 +1213,7 @@ def _ranked_reviewer_candidates(
1213
1213
 
1214
1214
  # ── Briefing construction ───────────────────────────────────────────────────
1215
1215
 
1216
- def _read_repo_claude_md(repo_path: Path) -> str | None:
1216
+ def read_repo_claude_md(repo_path: Path) -> str | None:
1217
1217
  """Return the contents of CLAUDE.md at the repo root, or None.
1218
1218
 
1219
1219
  The coordinator runs on the machine that dispatches; the reviewer runs on
@@ -1221,6 +1221,12 @@ def _read_repo_claude_md(repo_path: Path) -> str | None:
1221
1221
  here so the briefing is self-contained — if the reviewer's checkout is
1222
1222
  behind, the worker's diff still gets reviewed against the rules the
1223
1223
  coordinator thought were current.
1224
+
1225
+ Public (no leading underscore) because #2462 reuses it from
1226
+ :mod:`coord.agent` — since worker dispatch switched to ``--bare``,
1227
+ Claude Code's own CLAUDE.md auto-discovery no longer runs for
1228
+ work-shaped legs, so ``default_worker_command`` embeds this the same
1229
+ defensive way the review briefing already did.
1224
1230
  """
1225
1231
  candidate = repo_path / "CLAUDE.md"
1226
1232
  if not candidate.exists():
@@ -1883,7 +1889,7 @@ def dispatch_review(
1883
1889
  *,
1884
1890
  http_client: httpx.Client | None = None,
1885
1891
  pr_lookup=_find_or_open_pr,
1886
- claude_md_reader=_read_repo_claude_md,
1892
+ claude_md_reader=read_repo_claude_md,
1887
1893
  issue_body_fetcher=None,
1888
1894
  now: float | None = None,
1889
1895
  terminal_cache: dict | None = None,
@@ -1533,11 +1533,12 @@ def test_default_worker_command_mock_author_not_sealed() -> None:
1533
1533
  # ── #1445: worktree-writability preflight ───────────────────────────────────
1534
1534
 
1535
1535
 
1536
- def test_default_worker_command_restricts_setting_sources_to_user() -> None:
1536
+ def test_default_worker_command_uses_bare_mode() -> None:
1537
1537
  """A worker must not inherit the host checkout's project/local Claude
1538
- Code settings (e.g. a `.claude/settings.local.json` deny rule) — see
1539
- #1445. --setting-sources user means only the machine's own user-level
1540
- settings apply; project/local (the checkout) are never loaded."""
1538
+ Code settings, hooks, or .mcp.json MCP servers — see #1445 and #2462.
1539
+ `--bare` closes all three sources at once; the narrower
1540
+ `--setting-sources user` (the original #1445 fix) only closed settings.json
1541
+ and left hooks/.mcp.json loading from a never-trusted repo."""
1541
1542
  spec = AssignmentSpec(
1542
1543
  repo_name="api",
1543
1544
  repo_path="/tmp/repo",
@@ -1546,12 +1547,11 @@ def test_default_worker_command_restricts_setting_sources_to_user() -> None:
1546
1547
  briefing="b",
1547
1548
  )
1548
1549
  argv = default_worker_command(spec)
1549
- assert "--setting-sources" in argv
1550
- idx = argv.index("--setting-sources")
1551
- assert argv[idx + 1] == "user"
1550
+ assert "--bare" in argv
1551
+ assert "--setting-sources" not in argv
1552
1552
 
1553
1553
 
1554
- def test_default_worker_command_restricts_setting_sources_for_plan_type() -> None:
1554
+ def test_default_worker_command_uses_bare_mode_for_plan_type() -> None:
1555
1555
  """Same restriction applies to every spec.type, not just 'work' — all of
1556
1556
  them are headless dispatches that must not depend on host checkout
1557
1557
  state."""
@@ -1564,9 +1564,79 @@ def test_default_worker_command_restricts_setting_sources_for_plan_type() -> Non
1564
1564
  type="plan",
1565
1565
  )
1566
1566
  argv = default_worker_command(spec)
1567
- assert "--setting-sources" in argv
1568
- idx = argv.index("--setting-sources")
1569
- assert argv[idx + 1] == "user"
1567
+ assert "--bare" in argv
1568
+ assert "--setting-sources" not in argv
1569
+
1570
+
1571
+ def test_default_worker_command_embeds_claude_md_for_work_type(tmp_path: Path) -> None:
1572
+ """#2462: `--bare` disables Claude Code's own CLAUDE.md auto-discovery,
1573
+ so a work-shaped leg would otherwise never see the target repo's
1574
+ CLAUDE.md at all. default_worker_command must embed it into the
1575
+ --system-prompt argv itself, mirroring the review leg's
1576
+ read_repo_claude_md defensive read (coord/review.py)."""
1577
+ (tmp_path / "CLAUDE.md").write_text("# Project rules\n\nAlways use tabs.\n")
1578
+ spec = AssignmentSpec(
1579
+ repo_name="api",
1580
+ repo_path=str(tmp_path),
1581
+ issue_number=1,
1582
+ issue_title="t",
1583
+ briefing="b",
1584
+ )
1585
+ argv = default_worker_command(spec)
1586
+ assert "--bare" in argv
1587
+ idx = argv.index("--system-prompt")
1588
+ system_prompt = argv[idx + 1]
1589
+ assert "Always use tabs." in system_prompt
1590
+ assert "Project rules (from CLAUDE.md)" in system_prompt
1591
+
1592
+
1593
+ def test_default_worker_command_embeds_claude_md_for_plan_type(tmp_path: Path) -> None:
1594
+ """Same defensive read applies to type='plan', which gets its own
1595
+ branch in default_worker_command rather than falling into the
1596
+ catch-all 'work' else-branch."""
1597
+ (tmp_path / "CLAUDE.md").write_text("# Project rules\n\nNo emoji.\n")
1598
+ spec = AssignmentSpec(
1599
+ repo_name="api",
1600
+ repo_path=str(tmp_path),
1601
+ issue_number=1,
1602
+ issue_title="t",
1603
+ briefing="b",
1604
+ type="plan",
1605
+ )
1606
+ argv = default_worker_command(spec)
1607
+ idx = argv.index("--system-prompt")
1608
+ assert "No emoji." in argv[idx + 1]
1609
+
1610
+
1611
+ def test_default_worker_command_embeds_claude_md_for_mock_author_type(tmp_path: Path) -> None:
1612
+ """Same defensive read applies to type='mock-author'."""
1613
+ (tmp_path / "CLAUDE.md").write_text("# Project rules\n\nGate A first.\n")
1614
+ spec = AssignmentSpec(
1615
+ repo_name="api",
1616
+ repo_path=str(tmp_path),
1617
+ issue_number=1,
1618
+ issue_title="[gate-a] t",
1619
+ briefing="b",
1620
+ type="mock-author",
1621
+ )
1622
+ argv = default_worker_command(spec)
1623
+ idx = argv.index("--system-prompt")
1624
+ assert "Gate A first." in argv[idx + 1]
1625
+
1626
+
1627
+ def test_default_worker_command_no_claude_md_is_a_noop(tmp_path: Path) -> None:
1628
+ """A repo with no CLAUDE.md must not blow up or inject an empty section
1629
+ header into the system prompt."""
1630
+ spec = AssignmentSpec(
1631
+ repo_name="api",
1632
+ repo_path=str(tmp_path),
1633
+ issue_number=1,
1634
+ issue_title="t",
1635
+ briefing="b",
1636
+ )
1637
+ argv = default_worker_command(spec)
1638
+ idx = argv.index("--system-prompt")
1639
+ assert "Project rules (from CLAUDE.md)" not in argv[idx + 1]
1570
1640
 
1571
1641
 
1572
1642
  def test_deny_pattern_blocks_path_matches_blanket_prefix() -> None:
@@ -187,6 +187,91 @@ def test_parity_custom_system_prompt() -> None:
187
187
  _parity(spec)
188
188
 
189
189
 
190
+ # ── #2462: CLAUDE.md embed parity (--bare kills auto-discovery) ──────────────
191
+ #
192
+ # The parity helper above uses repo_path="/some/path", which does not exist —
193
+ # so `_claude_md_system_prompt_suffix` returns "" on BOTH sides and the parity
194
+ # assertion cannot see a divergence in the CLAUDE.md embed. These cases point
195
+ # the spec at a tmp_path that really contains a CLAUDE.md, so the embed is
196
+ # non-empty and parity is actually load-bearing for it. The direct
197
+ # `build_command` assertions below then pin the provider seam itself — the
198
+ # path production dispatch really takes (coord/commands/dispatch_workers.py
199
+ # and friends call provider.build_command(), never default_worker_command) —
200
+ # so "both sides dropped the embed" fails too, not just "they diverged".
201
+
202
+
203
+ def _claude_md_repo(tmp_path: Path, body: str) -> Path:
204
+ (tmp_path / "CLAUDE.md").write_text(body)
205
+ return tmp_path
206
+
207
+
208
+ def test_parity_work_type_with_real_claude_md(tmp_path: Path) -> None:
209
+ """Work leg: identical argv when the repo really has a CLAUDE.md."""
210
+ repo = _claude_md_repo(tmp_path, "# Project rules\n\nAlways use tabs.\n")
211
+ _parity(_make_spec(type="work", repo_path=str(repo)))
212
+
213
+
214
+ def test_parity_plan_type_with_real_claude_md(tmp_path: Path) -> None:
215
+ """Plan leg: identical argv when the repo really has a CLAUDE.md."""
216
+ repo = _claude_md_repo(tmp_path, "# Project rules\n\nNo emoji.\n")
217
+ _parity(_make_spec(type="plan", repo_path=str(repo)))
218
+
219
+
220
+ def test_parity_mock_author_type_with_real_claude_md(tmp_path: Path) -> None:
221
+ """Mock-author leg: identical argv when the repo really has a CLAUDE.md."""
222
+ repo = _claude_md_repo(tmp_path, "# Project rules\n\nGate A first.\n")
223
+ _parity(_make_spec(type="mock-author", repo_path=str(repo)))
224
+
225
+
226
+ def test_parity_fix_type_with_real_claude_md(tmp_path: Path) -> None:
227
+ """Fix leg (catch-all branch, same as work/conflict-fix/test-author)."""
228
+ repo = _claude_md_repo(tmp_path, "# Project rules\n\nRun ruff.\n")
229
+ _parity(_make_spec(type="fix", repo_path=str(repo)))
230
+
231
+
232
+ @pytest.mark.parametrize(
233
+ ("spec_type", "rule"),
234
+ [
235
+ ("work", "Always use tabs."),
236
+ ("fix", "Run ruff."),
237
+ ("conflict-fix", "Rebase, never merge."),
238
+ ("test-author", "Black-box tests only."),
239
+ ("plan", "No emoji."),
240
+ ("mock-author", "Gate A first."),
241
+ ],
242
+ )
243
+ def test_build_command_embeds_claude_md_for_work_shaped_types(
244
+ tmp_path: Path, spec_type: str, rule: str
245
+ ) -> None:
246
+ """#2462: the provider seam — the path real dispatch takes — must embed
247
+ the target repo's CLAUDE.md into --system-prompt for every work-shaped
248
+ leg, since `--bare` disables Claude Code's own auto-discovery of it."""
249
+ repo = _claude_md_repo(tmp_path, f"# Project rules\n\n{rule}\n")
250
+ argv = ClaudeProvider().build_command(_make_spec(type=spec_type, repo_path=str(repo)))
251
+ assert "--bare" in argv
252
+ system_prompt = argv[argv.index("--system-prompt") + 1]
253
+ assert rule in system_prompt
254
+ assert "Project rules (from CLAUDE.md)" in system_prompt
255
+
256
+
257
+ def test_build_command_no_claude_md_is_a_noop(tmp_path: Path) -> None:
258
+ """A repo with no CLAUDE.md must not inject an empty section header."""
259
+ argv = ClaudeProvider().build_command(_make_spec(type="work", repo_path=str(tmp_path)))
260
+ system_prompt = argv[argv.index("--system-prompt") + 1]
261
+ assert "Project rules (from CLAUDE.md)" not in system_prompt
262
+
263
+
264
+ def test_build_command_system_prompt_override_wins_over_claude_md(tmp_path: Path) -> None:
265
+ """An explicit system_prompt kwarg is used verbatim — the CLAUDE.md embed
266
+ is part of the *computed* prompt only, matching default_worker_command's
267
+ behaviour when a caller supplies its own prompt."""
268
+ repo = _claude_md_repo(tmp_path, "# Project rules\n\nAlways use tabs.\n")
269
+ argv = ClaudeProvider().build_command(
270
+ _make_spec(type="work", repo_path=str(repo)), system_prompt="Custom."
271
+ )
272
+ assert argv[argv.index("--system-prompt") + 1] == "Custom."
273
+
274
+
190
275
  def test_resolved_model_overrides_spec_model() -> None:
191
276
  """resolved_model takes precedence over spec.model."""
192
277
  spec = _make_spec(type="work", model="sonnet")