code-coordinator 0.5.188__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.188 → code_coordinator-0.5.190}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/agent.py +170 -25
  5. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/dispatch_workers.py +2 -2
  6. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/providers/claude.py +38 -4
  7. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/providers/claude_pty.py +11 -0
  8. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/review.py +8 -2
  9. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent.py +192 -11
  10. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_providers.py +85 -0
  11. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_providers_pty.py +34 -2
  12. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_worker_test_scoping.py +23 -4
  13. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.claude/commands/board.md +0 -0
  14. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.claude/commands/complete-session.md +0 -0
  15. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.claude/commands/coordinator.md +0 -0
  16. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.githooks/_lib.sh +0 -0
  17. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.githooks/post-checkout +0 -0
  18. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.githooks/post-commit +0 -0
  19. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.githooks/post-merge +0 -0
  20. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  21. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.github/coord-ci-acceptance.yml +0 -0
  22. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.github/workflows/auto-release.yml +0 -0
  23. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.github/workflows/cargo-test.yml +0 -0
  24. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.github/workflows/publish.yml +0 -0
  25. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.github/workflows/release-tui.yml +0 -0
  26. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.github/workflows/test.yml +0 -0
  27. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/.gitignore +0 -0
  28. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/CLAUDE.md +0 -0
  29. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/GOAL.md +0 -0
  30. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/LICENSE +0 -0
  31. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/MANIFEST.in +0 -0
  32. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/README.md +0 -0
  33. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/SOURCES.txt +0 -0
  34. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/dependency_links.txt +0 -0
  35. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/entry_points.txt +0 -0
  36. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/requires.txt +0 -0
  37. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/scm_file_list.json +0 -0
  38. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/code_coordinator.egg-info/top_level.txt +0 -0
  39. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/__init__.py +0 -0
  40. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/_board_mapping.py +0 -0
  41. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/acceptance.py +0 -0
  42. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/acceptance_drivers.py +0 -0
  43. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/agent_app.py +0 -0
  44. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/agent_update.py +0 -0
  45. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/agents/opencode/.gitignore +0 -0
  46. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/agents/opencode/agents/work.md +0 -0
  47. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/agents/opencode/routing.jsonc +0 -0
  48. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/audit.py +0 -0
  49. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/auto_loop.py +0 -0
  50. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/block_log.py +0 -0
  51. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/board_bool_guard.py +0 -0
  52. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/board_service.py +0 -0
  53. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/board_wire.py +0 -0
  54. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/brain.py +0 -0
  55. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/branch_model.py +0 -0
  56. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/bug_intake.py +0 -0
  57. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/cargo_cache.py +0 -0
  58. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/ci_github.py +0 -0
  59. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/ci_store.py +0 -0
  60. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/claim.py +0 -0
  61. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/cli.py +0 -0
  62. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/client.py +0 -0
  63. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/__init__.py +0 -0
  64. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/_common.py +0 -0
  65. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/acceptance.py +0 -0
  66. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/agent_ops.py +0 -0
  67. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/audit.py +0 -0
  68. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/chat.py +0 -0
  69. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/dispatch.py +0 -0
  70. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/drive.py +0 -0
  71. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/drive_queue.py +0 -0
  72. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/gate_a.py +0 -0
  73. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/gates.py +0 -0
  74. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/issues.py +0 -0
  75. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/lifecycle.py +0 -0
  76. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/merge.py +0 -0
  77. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/milestone.py +0 -0
  78. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/plan_followup.py +0 -0
  79. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/plans.py +0 -0
  80. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/portal.py +0 -0
  81. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/release.py +0 -0
  82. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/repo.py +0 -0
  83. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/report.py +0 -0
  84. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/review.py +0 -0
  85. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/scorecard.py +0 -0
  86. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/sessions.py +0 -0
  87. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/setup.py +0 -0
  88. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/status.py +0 -0
  89. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/terminal.py +0 -0
  90. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/test_gate.py +0 -0
  91. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/commands/tui.py +0 -0
  92. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/comments.py +0 -0
  93. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/config.py +0 -0
  94. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/config_reload.py +0 -0
  95. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/conflict_fix.py +0 -0
  96. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dao.py +0 -0
  97. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dashboard/__init__.py +0 -0
  98. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dashboard/fixture.py +0 -0
  99. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dashboard/index.html +0 -0
  100. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dashboard/server.py +0 -0
  101. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dashboard/terminal.py +0 -0
  102. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/db.py +0 -0
  103. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dead_end.py +0 -0
  104. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/README.md +0 -0
  105. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-agent.service +0 -0
  106. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-db-backup.service +0 -0
  107. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-db-backup.sh +0 -0
  108. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-db-backup.timer +0 -0
  109. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-drive-queue.service +0 -0
  110. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-drive-queue.timer +0 -0
  111. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-notify.service +0 -0
  112. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-notify.timer +0 -0
  113. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-release-propagate.service +0 -0
  114. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-release-propagate.timer +0 -0
  115. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-release-window.service +0 -0
  116. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-release-window.timer +0 -0
  117. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-serve.service +0 -0
  118. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-web-dist-build.service +0 -0
  119. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-web-dist-build.timer +0 -0
  120. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy/coord-web.service +0 -0
  121. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy_manifest.py +0 -0
  122. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deploy_units.py +0 -0
  123. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/deps.py +0 -0
  124. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/diagnose.py +0 -0
  125. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dispatch.py +0 -0
  126. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/dist_name.py +0 -0
  127. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/drive.py +0 -0
  128. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/drive_queue.py +0 -0
  129. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/drive_state.py +0 -0
  130. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/events.py +0 -0
  131. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/failure_class.py +0 -0
  132. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/filelock.py +0 -0
  133. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/fleet_config_health.py +0 -0
  134. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/freshness.py +0 -0
  135. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/gate_a.py +0 -0
  136. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/gate_b.py +0 -0
  137. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/gate_snapshot.py +0 -0
  138. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/gates.py +0 -0
  139. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/github_ops.py +0 -0
  140. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/goal.py +0 -0
  141. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/graph_health.py +0 -0
  142. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/__init__.py +0 -0
  143. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/aggregate.py +0 -0
  144. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/__init__.py +0 -0
  145. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/agent_install.py +0 -0
  146. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/cargo_targets.py +0 -0
  147. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/claude_binary.py +0 -0
  148. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/coord_web_ci_pin.py +0 -0
  149. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/deploy_lane_facts.py +0 -0
  150. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/disk.py +0 -0
  151. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/fleet_board.py +0 -0
  152. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  153. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/fleet_phantom.py +0 -0
  154. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/fleet_unit_drift.py +0 -0
  155. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/graph.py +0 -0
  156. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/graphify_cli.py +0 -0
  157. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/index_lock.py +0 -0
  158. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/plan_usage.py +0 -0
  159. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/repo_state.py +0 -0
  160. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/spawned_coord.py +0 -0
  161. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/timer_active.py +0 -0
  162. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/toolchain.py +0 -0
  163. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/unit_drift.py +0 -0
  164. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/unit_enablement.py +0 -0
  165. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/checks/worktrees.py +0 -0
  166. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/cli.py +0 -0
  167. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/context.py +0 -0
  168. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/fleet_snapshot.py +0 -0
  169. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/models.py +0 -0
  170. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/pypi.py +0 -0
  171. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/registry.py +0 -0
  172. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/render.py +0 -0
  173. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/health/units.py +0 -0
  174. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/hooks.py +0 -0
  175. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/housekeeping.py +0 -0
  176. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/interactive.py +0 -0
  177. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/issue_store.py +0 -0
  178. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/liveness_auditor.py +0 -0
  179. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/machine_pause.py +0 -0
  180. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/merge_queue.py +0 -0
  181. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/milestone_chat.py +0 -0
  182. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/milestone_dispatch.py +0 -0
  183. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/milestone_gate.py +0 -0
  184. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/milestone_order.py +0 -0
  185. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/mock_author.py +0 -0
  186. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/models.py +0 -0
  187. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/network.py +0 -0
  188. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/new_issue_chat.py +0 -0
  189. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/__init__.py +0 -0
  190. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/baseline.py +0 -0
  191. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/cli.py +0 -0
  192. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/collect.py +0 -0
  193. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/digest.py +0 -0
  194. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/models.py +0 -0
  195. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/predicate.py +0 -0
  196. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/service.py +0 -0
  197. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/store.py +0 -0
  198. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notifier/transport.py +0 -0
  199. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/notify.py +0 -0
  200. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/openapi.py +0 -0
  201. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/overlap_fence.py +0 -0
  202. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/overlap_predict.py +0 -0
  203. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/parentage.py +0 -0
  204. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/parentage_github.py +0 -0
  205. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/pipeline.py +0 -0
  206. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/plan_parser.py +0 -0
  207. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/plans.py +0 -0
  208. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/platform_paths.py +0 -0
  209. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/portal_bridge.py +0 -0
  210. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/portal_store.py +0 -0
  211. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/portal_sync.py +0 -0
  212. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/pr_body_lint.py +0 -0
  213. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/prereqs.py +0 -0
  214. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/progress.py +0 -0
  215. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/providers/__init__.py +0 -0
  216. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/providers/base.py +0 -0
  217. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/providers/opencode.py +0 -0
  218. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/queue_diagnose.py +0 -0
  219. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/reconcile.py +0 -0
  220. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/reconcile_tick.py +0 -0
  221. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/refine_chat.py +0 -0
  222. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/release_cordon.py +0 -0
  223. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/release_propagate.py +0 -0
  224. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/release_verify.py +0 -0
  225. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/release_window.py +0 -0
  226. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/repo_edit.py +0 -0
  227. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/repo_onboard.py +0 -0
  228. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/reports.py +0 -0
  229. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/revalidate.py +0 -0
  230. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/scorecard.py +0 -0
  231. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/self_health.py +0 -0
  232. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/serve_app.py +0 -0
  233. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  234. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  235. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  236. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  237. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  238. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/portal-followup/SKILL.md +0 -0
  239. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  240. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  241. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/skills/update-issue/SKILL.md +0 -0
  242. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/smoke.py +0 -0
  243. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/spend_ceiling.py +0 -0
  244. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/split_work.py +0 -0
  245. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/stage_projection.py +0 -0
  246. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/state.py +0 -0
  247. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/test_author.py +0 -0
  248. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/test_chat.py +0 -0
  249. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/test_orchestrator.py +0 -0
  250. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/test_report.py +0 -0
  251. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/tui_release.py +0 -0
  252. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/usage.py +0 -0
  253. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/usage_limits.py +0 -0
  254. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/usage_rollup.py +0 -0
  255. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coord/worker_events.py +0 -0
  256. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/coordinator.example.yml +0 -0
  257. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-agent.service +0 -0
  258. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-db-backup.service +0 -0
  259. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-db-backup.sh +0 -0
  260. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-db-backup.timer +0 -0
  261. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-drive-queue.service +0 -0
  262. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-drive-queue.timer +0 -0
  263. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-notify.service +0 -0
  264. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-notify.timer +0 -0
  265. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-release-propagate.service +0 -0
  266. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-release-propagate.timer +0 -0
  267. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-release-window.service +0 -0
  268. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-release-window.timer +0 -0
  269. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-serve.service +0 -0
  270. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-web-dist-build.service +0 -0
  271. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-web-dist-build.sh +0 -0
  272. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-web-dist-build.timer +0 -0
  273. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-web-rollback.sh +0 -0
  274. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/coord-web.service +0 -0
  275. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/deploy/node-shim.sh +0 -0
  276. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  277. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/ADR_COORD_WEB_CI.md +0 -0
  278. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/ADR_COORD_WEB_DIST.md +0 -0
  279. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/AGENT_OPERATIONS.md +0 -0
  280. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/ARCHITECTURE.md +0 -0
  281. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/ARCH_SECURITY_GATES.md +0 -0
  282. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/COCKPIT.md +0 -0
  283. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/CONTROL_CENTER.md +0 -0
  284. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/COST_DISCIPLINE.md +0 -0
  285. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/CROSS_PLATFORM.md +0 -0
  286. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/CUSTOMER_PORTAL.md +0 -0
  287. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/DRIVE_QUEUE.md +0 -0
  288. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/EPHEMERAL_WORKERS.md +0 -0
  289. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/FORGE_MIGRATION.md +0 -0
  290. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/GRAPHIFY_SETUP.md +0 -0
  291. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/ISSUE_GUIDANCE.md +0 -0
  292. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/MAC_MINI.md +0 -0
  293. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  294. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/NOTIFIER.md +0 -0
  295. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/OPENCODE_VERIFICATION.md +0 -0
  296. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/OPERATING_GOTCHAS.md +0 -0
  297. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/ORACLE_LOOP.md +0 -0
  298. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/PHONE_WEBAPP.md +0 -0
  299. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/PIPELINE_V2.md +0 -0
  300. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/PLATFORM_EVOLUTION.md +0 -0
  301. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/SECOND_BACKEND.md +0 -0
  302. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/STORE_SERVICE.md +0 -0
  303. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  304. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/WEB_CONTROL_CENTER.md +0 -0
  305. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/WSL_WINDOWS_WORKER.md +0 -0
  306. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/mocks/web/README.md +0 -0
  307. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/mocks/web/_tokens.css +0 -0
  308. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/mocks/web/issue-detail.html +0 -0
  309. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/mocks/web/pipeline-narrow.html +0 -0
  310. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/docs/mocks/web/pipeline-wide.html +0 -0
  311. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/graphify-out/.gitignore +0 -0
  312. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/install-agent.sh +0 -0
  313. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/pyproject.toml +0 -0
  314. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/audit_review_verdict_overrides.py +0 -0
  315. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  316. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/build-worker-image.sh +0 -0
  317. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/coordinator-machine.py +0 -0
  318. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/epic-down.sh +0 -0
  319. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/epic-up.sh +0 -0
  320. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/preflight.sh +0 -0
  321. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/provision-worker.sh +0 -0
  322. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  323. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  324. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/azure-workers/verify-github-token.sh +0 -0
  325. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/codegen.py +0 -0
  326. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/coord-test-runner.sh +0 -0
  327. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/drive-batch.sh +0 -0
  328. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/gen_board_fixture.py +0 -0
  329. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/next_release_tag.py +0 -0
  330. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/run_tests_in_populated_home.sh +0 -0
  331. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/run_tests_without_gh.sh +0 -0
  332. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/smoke_437_interactive.py +0 -0
  333. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/verify_878_review_capture.py +0 -0
  334. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/verify_release_published.py +0 -0
  335. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/scripts/verify_release_wheel.py +0 -0
  336. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/setup.cfg +0 -0
  337. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/SMOKE_SET.md +0 -0
  338. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/__init__.py +0 -0
  339. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  340. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-33/contract.md +0 -0
  341. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-33/manifest.yml +0 -0
  342. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  343. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  344. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  345. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  346. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-37/conftest.py +0 -0
  347. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-37/contract.md +0 -0
  348. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-37/manifest.yml +0 -0
  349. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  350. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  351. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/contract.md +0 -0
  352. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/manifest.yml +0 -0
  353. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  354. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  355. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  356. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  357. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  358. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  359. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  360. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  361. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  362. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  363. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-51/contract.md +0 -0
  364. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  365. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  366. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-51/manifest.yml +0 -0
  367. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  368. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-51/tsconfig.json +0 -0
  369. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  370. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  371. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  372. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/contract.md +0 -0
  373. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  374. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/manifest.yml +0 -0
  375. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  376. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  377. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  378. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  379. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  380. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  381. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  382. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  383. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  384. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  385. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  386. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  387. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/conftest.py +0 -0
  388. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/board-pipeline-basic.json +0 -0
  389. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  390. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  391. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  392. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  393. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/playwright/all_pass.json +0 -0
  394. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  395. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/playwright/mixed_fail.json +0 -0
  396. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  397. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  398. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/playwright/skip.json +0 -0
  399. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/playwright/truncated.json +0 -0
  400. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  401. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  402. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  403. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  404. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  405. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  406. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  407. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  408. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_acceptance.py +0 -0
  409. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_acceptance_drivers.py +0 -0
  410. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_api_error.py +0 -0
  411. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_app.py +0 -0
  412. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_branch_base.py +0 -0
  413. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_branch_capture.py +0 -0
  414. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_config_free_1712.py +0 -0
  415. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_deploy_units_endpoint.py +0 -0
  416. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_dirty_worktree.py +0 -0
  417. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  418. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_graph_self_heal.py +0 -0
  419. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_health_h3.py +0 -0
  420. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_idle_restart.py +0 -0
  421. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_push_failure.py +0 -0
  422. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_reap.py +0 -0
  423. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_repos_and_pull.py +0 -0
  424. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_restart_services_endpoint.py +0 -0
  425. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_skills_self_heal.py +0 -0
  426. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_startup_diagnostics.py +0 -0
  427. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_update.py +0 -0
  428. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_update_bluegreen.py +0 -0
  429. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_usage_limit.py +0 -0
  430. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_agent_zero_commit.py +0 -0
  431. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_ambient_home_isolation.py +0 -0
  432. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_approve_reject_plan.py +0 -0
  433. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_approve_usage_gate.py +0 -0
  434. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_assignment_already_recorded_daemon.py +0 -0
  435. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_audit_log.py +0 -0
  436. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_audit_outcome.py +0 -0
  437. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_audit_query.py +0 -0
  438. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_auto_loop.py +0 -0
  439. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_auto_release_publish_2035.py +0 -0
  440. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_base_checkout_restore.py +0 -0
  441. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_block_log.py +0 -0
  442. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_board_cap_762.py +0 -0
  443. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_board_fixture.py +0 -0
  444. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_board_read_path.py +0 -0
  445. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_board_service.py +0 -0
  446. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_board_state.py +0 -0
  447. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_board_wire.py +0 -0
  448. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_brain.py +0 -0
  449. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_branch_model.py +0 -0
  450. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_bug_intake.py +0 -0
  451. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_build_worker_image_env_update.py +0 -0
  452. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cargo_cache.py +0 -0
  453. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_ci_acceptance_gate_1950.py +0 -0
  454. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_ci_parity_2091.py +0 -0
  455. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_ci_store.py +0 -0
  456. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_claim.py +0 -0
  457. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_acceptance.py +0 -0
  458. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_assign.py +0 -0
  459. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  460. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_assign_interactive_remote.py +0 -0
  461. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_assign_provider.py +0 -0
  462. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  463. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_audit.py +0 -0
  464. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_chat_continue.py +0 -0
  465. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_decide.py +0 -0
  466. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_diagnose_config_provenance.py +0 -0
  467. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_diagnose_graph.py +0 -0
  468. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_diagnose_self.py +0 -0
  469. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_doctor.py +0 -0
  470. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_doctor_config_free_1801.py +0 -0
  471. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  472. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_drive.py +0 -0
  473. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_drive_queue.py +0 -0
  474. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_escalate.py +0 -0
  475. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_fix_headless_review.py +0 -0
  476. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_gate_a.py +0 -0
  477. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_install_drift.py +0 -0
  478. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_install_skills.py +0 -0
  479. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_issue_create_label.py +0 -0
  480. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_issue_reopen.py +0 -0
  481. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_merge.py +0 -0
  482. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_assign.py +0 -0
  483. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_capture.py +0 -0
  484. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_chat_add_child.py +0 -0
  485. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_dispatch.py +0 -0
  486. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_gate_b.py +0 -0
  487. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_gate_c.py +0 -0
  488. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_order.py +0 -0
  489. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  490. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_milestone_ship.py +0 -0
  491. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_network.py +0 -0
  492. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_new_issue_chat.py +0 -0
  493. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_plans.py +0 -0
  494. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_portal.py +0 -0
  495. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_pull_artifact.py +0 -0
  496. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_queue.py +0 -0
  497. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_reattach_sessions.py +0 -0
  498. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_refine_board.py +0 -0
  499. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_release_preflight.py +0 -0
  500. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_release_propagate.py +0 -0
  501. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_release_window.py +0 -0
  502. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_repo_2220.py +0 -0
  503. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_scorecard.py +0 -0
  504. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_set_review_findings.py +0 -0
  505. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_status_advisory_terminal.py +0 -0
  506. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_status_merge_queue.py +0 -0
  507. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_status_provider.py +0 -0
  508. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_status_review_finalizing.py +0 -0
  509. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_status_test_failed_tag.py +0 -0
  510. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_status_usage_limit.py +0 -0
  511. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_sync_comments_873.py +0 -0
  512. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_test_plan.py +0 -0
  513. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_track.py +0 -0
  514. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_tui_update.py +0 -0
  515. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cli_wait.py +0 -0
  516. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_client_base_install.py +0 -0
  517. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_comments.py +0 -0
  518. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_completion_summary.py +0 -0
  519. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_config.py +0 -0
  520. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_config_acceptance.py +0 -0
  521. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_config_audit.py +0 -0
  522. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_config_pricing.py +0 -0
  523. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  524. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_config_usage_gate.py +0 -0
  525. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_conflict_fix.py +0 -0
  526. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_conflict_fix_semantic.py +0 -0
  527. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_coord_test.py +0 -0
  528. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_coord_test_runner_baseline.py +0 -0
  529. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_coord_test_runner_populated_home.py +0 -0
  530. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_coord_test_runner_routing.py +0 -0
  531. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_coord_test_runner_toolchain.py +0 -0
  532. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_coord_web_sse_restart_live.py +0 -0
  533. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_coordinator_machine.py +0 -0
  534. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_cross_platform_imports.py +0 -0
  535. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dashboard.py +0 -0
  536. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dashboard_fixture.py +0 -0
  537. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dashboard_terminal.py +0 -0
  538. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dashboard_terminal_live.py +0 -0
  539. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_db.py +0 -0
  540. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dead_end.py +0 -0
  541. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deploy_coord_db_backup.py +0 -0
  542. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deploy_coord_web_dist.py +0 -0
  543. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deploy_coord_web_rollback.py +0 -0
  544. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deploy_drive_queue_unit.py +0 -0
  545. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deploy_manifest.py +0 -0
  546. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deploy_units_lane.py +0 -0
  547. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deploy_web_unit.py +0 -0
  548. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_deps.py +0 -0
  549. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_diagnose.py +0 -0
  550. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dispatch.py +0 -0
  551. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dispatch_target_validation.py +0 -0
  552. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_dist_name.py +0 -0
  553. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_done_housekeeping.py +0 -0
  554. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_drive.py +0 -0
  555. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_drive_queue.py +0 -0
  556. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_drive_state.py +0 -0
  557. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_drive_tmux.py +0 -0
  558. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_epic_up_capability_detection.py +0 -0
  559. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  560. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_epic_up_image_provenance.py +0 -0
  561. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_errors.py +0 -0
  562. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_events.py +0 -0
  563. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_failure_class.py +0 -0
  564. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_filelock.py +0 -0
  565. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  566. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_fix_of_force_override.py +0 -0
  567. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_fleet_config_health.py +0 -0
  568. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_fleet_health_probes.py +0 -0
  569. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_fleet_health_snapshot.py +0 -0
  570. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_freshness.py +0 -0
  571. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_gate_a.py +0 -0
  572. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_gate_b.py +0 -0
  573. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_gate_snapshot_staleness.py +0 -0
  574. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_gates.py +0 -0
  575. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  576. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_generated_types_fixture.py +0 -0
  577. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_github_ops.py +0 -0
  578. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_goal.py +0 -0
  579. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_graph_health.py +0 -0
  580. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_graph_selfheal_absent_2237.py +0 -0
  581. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_handoff.py +0 -0
  582. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_checks.py +0 -0
  583. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_cli.py +0 -0
  584. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_cli_graph.py +0 -0
  585. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_config.py +0 -0
  586. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_context.py +0 -0
  587. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_coord_web_ci_pin.py +0 -0
  588. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_deploy_lane_facts.py +0 -0
  589. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_incident_regression.py +0 -0
  590. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_pypi.py +0 -0
  591. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_registry.py +0 -0
  592. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_timer_active.py +0 -0
  593. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_toolchain.py +0 -0
  594. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_unit_drift.py +0 -0
  595. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_health_unit_enablement.py +0 -0
  596. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_hooks.py +0 -0
  597. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_human_attended_437.py +0 -0
  598. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_init.py +0 -0
  599. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_integration.py +0 -0
  600. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_interactive_briefing_echo.py +0 -0
  601. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_interactive_prefill_state.py +0 -0
  602. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_interactive_session_relaunch.py +0 -0
  603. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_interactive_test_verdict_backstop.py +0 -0
  604. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_interactive_token_attribution.py +0 -0
  605. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_interactive_worktree.py +0 -0
  606. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_issue_store_seam.py +0 -0
  607. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_liveness_auditor.py +0 -0
  608. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_liveness_notify.py +0 -0
  609. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_machine_pause.py +0 -0
  610. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_merge_queue.py +0 -0
  611. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_merge_verify.py +0 -0
  612. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_milestone_chat.py +0 -0
  613. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_milestone_dispatch.py +0 -0
  614. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_milestone_gate.py +0 -0
  615. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_milestone_order.py +0 -0
  616. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_milestone_seam.py +0 -0
  617. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_mock_author.py +0 -0
  618. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_model_tiering.py +0 -0
  619. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_models.py +0 -0
  620. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_models_config_labels.py +0 -0
  621. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_needs_attention.py +0 -0
  622. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_network.py +0 -0
  623. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_new_issue_chat.py +0 -0
  624. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_next_release_tag.py +0 -0
  625. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_no_direct_gh_calls.py +0 -0
  626. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_node_shim.py +0 -0
  627. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_baseline.py +0 -0
  628. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_cli.py +0 -0
  629. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_collect.py +0 -0
  630. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_config.py +0 -0
  631. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_drive_seam.py +0 -0
  632. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_isolation.py +0 -0
  633. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_predicate.py +0 -0
  634. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_quiet_hours.py +0 -0
  635. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notifier_service.py +0 -0
  636. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notify.py +0 -0
  637. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_notify_drain.py +0 -0
  638. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_openapi.py +0 -0
  639. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_operational_defaults.py +0 -0
  640. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_overlap_fence.py +0 -0
  641. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_overlap_predict.py +0 -0
  642. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_packaged_deploy_units.py +0 -0
  643. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_parentage.py +0 -0
  644. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_paste_landed.py +0 -0
  645. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_pipeline.py +0 -0
  646. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_plan_followup_approve_plan_command.py +0 -0
  647. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_plan_followup_pr_command.py +0 -0
  648. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_plan_followup_review_command.py +0 -0
  649. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_plan_only.py +0 -0
  650. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_plan_parser.py +0 -0
  651. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_platform_paths.py +0 -0
  652. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_portal_bridge.py +0 -0
  653. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_portal_config.py +0 -0
  654. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_portal_sync.py +0 -0
  655. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_pr_body_lint.py +0 -0
  656. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_prereqs.py +0 -0
  657. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_production_db_guard.py +0 -0
  658. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_progress.py +0 -0
  659. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_provider_seam.py +0 -0
  660. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_providers_config_labels.py +0 -0
  661. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_quiet_hours.py +0 -0
  662. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_quiet_hours_store_2146.py +0 -0
  663. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reap_merged_sessions.py +0 -0
  664. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reap_stale_interactive_tick.py +0 -0
  665. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reconcile.py +0 -0
  666. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reconcile_branch.py +0 -0
  667. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reconcile_completions.py +0 -0
  668. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reconcile_merges.py +0 -0
  669. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reconcile_no_agent_record.py +0 -0
  670. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reconcile_tick.py +0 -0
  671. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reconcile_usage_limit_done.py +0 -0
  672. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_refine_chat.py +0 -0
  673. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_release_cordon_2101.py +0 -0
  674. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  675. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_release_cordon_deadlock_2240.py +0 -0
  676. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_release_propagate.py +0 -0
  677. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_release_unified_1242.py +0 -0
  678. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_release_verify.py +0 -0
  679. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_release_window.py +0 -0
  680. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_remote_auto_prune.py +0 -0
  681. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_remote_interactive_reaper.py +0 -0
  682. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_repo_edit_2220.py +0 -0
  683. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_repo_graph_fleet_2237.py +0 -0
  684. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_repo_onboard_2220.py +0 -0
  685. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_report_result_push.py +0 -0
  686. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_reports.py +0 -0
  687. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_retry.py +0 -0
  688. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_retry_advisory_1606.py +0 -0
  689. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_retry_type_1636.py +0 -0
  690. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_revalidate.py +0 -0
  691. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review.py +0 -0
  692. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_end_review_without_verdict.py +0 -0
  693. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_parse_failure_diagnostic.py +0 -0
  694. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_reaffirm.py +0 -0
  695. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_state.py +0 -0
  696. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_verdict_backstop.py +0 -0
  697. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_verdict_override_audit.py +0 -0
  698. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_verdict_relay.py +0 -0
  699. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_review_zero_commits.py +0 -0
  700. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_scoped_review_wiring.py +0 -0
  701. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_scorecard.py +0 -0
  702. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_self_health.py +0 -0
  703. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_serve.py +0 -0
  704. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_serve_app_board_trim.py +0 -0
  705. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_session.py +0 -0
  706. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_slice_issue_attribution.py +0 -0
  707. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_smoke.py +0 -0
  708. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_smoke_live_checkout_restore.py +0 -0
  709. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_smoke_workflow.py +0 -0
  710. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_spend_ceiling.py +0 -0
  711. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_spend_ceiling_coordinator.py +0 -0
  712. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_split.py +0 -0
  713. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_split_work.py +0 -0
  714. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_stage_projection.py +0 -0
  715. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_stalled_pipeline.py +0 -0
  716. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_state.py +0 -0
  717. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_state_review_findings_daemon.py +0 -0
  718. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_status_fleet_footer.py +0 -0
  719. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_stop_1567.py +0 -0
  720. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_stuck.py +0 -0
  721. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_terminal_command.py +0 -0
  722. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_test_author.py +0 -0
  723. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_test_chat.py +0 -0
  724. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_test_orchestrator.py +0 -0
  725. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_test_report.py +0 -0
  726. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_test_verdict_parsing.py +0 -0
  727. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_test_verdict_transcript_floor.py +0 -0
  728. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_thin_client_board_audit.py +0 -0
  729. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_thin_client_config_load_1080.py +0 -0
  730. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_thin_client_daemon_routing_906.py +0 -0
  731. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_tmux_host.py +0 -0
  732. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_tmux_session.py +0 -0
  733. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_transcript_floor.py +0 -0
  734. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_usage.py +0 -0
  735. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_usage_limits.py +0 -0
  736. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_usage_rollup.py +0 -0
  737. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_venv_live_install_2121.py +0 -0
  738. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_version_single_source.py +0 -0
  739. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_watch.py +0 -0
  740. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  741. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_worker_events.py +0 -0
  742. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_worker_image_pin_sync.py +0 -0
  743. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_worker_safety.py +0 -0
  744. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_worktree.py +0 -0
  745. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  746. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/Cargo.lock +0 -0
  747. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/Cargo.toml +0 -0
  748. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/cargo-config-local-quadraui.toml.example +0 -0
  749. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/audit.rs +0 -0
  750. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/chat.rs +0 -0
  751. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/data.rs +0 -0
  752. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/dialogs.rs +0 -0
  753. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/doc_tabs.rs +0 -0
  754. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/drive.rs +0 -0
  755. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/drive_queue.rs +0 -0
  756. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/escalation.rs +0 -0
  757. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/events.rs +0 -0
  758. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/fixtures.rs +0 -0
  759. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/fleet_health.rs +0 -0
  760. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/fleet_sessions.rs +0 -0
  761. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/fleet_terminals.rs +0 -0
  762. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/format.rs +0 -0
  763. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/milestone_dag.rs +0 -0
  764. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/mod.rs +0 -0
  765. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/msv.rs +0 -0
  766. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/pipeline.rs +0 -0
  767. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/plans.rs +0 -0
  768. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/render.rs +0 -0
  769. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/reports.rs +0 -0
  770. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/sessions.rs +0 -0
  771. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/settings_ui.rs +0 -0
  772. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/sidebar.rs +0 -0
  773. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/terminal.rs +0 -0
  774. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/tests.rs +0 -0
  775. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/types.rs +0 -0
  776. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/app/workspace.rs +0 -0
  777. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/bin/gtk.rs +0 -0
  778. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/commands.rs +0 -0
  779. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/lib.rs +0 -0
  780. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/main.rs +0 -0
  781. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/src/settings.rs +0 -0
  782. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/tests/acceptance.rs +0 -0
  783. {code_coordinator-0.5.188 → code_coordinator-0.5.190}/tui/tests/cli.rs +0 -0
  784. {code_coordinator-0.5.188 → 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.188
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.188
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.188",
2
+ "tag": "0.5.190",
3
3
  "distance": 0,
4
- "node": "ge96703c949bd613e9a8c2b576d71050e015f956e",
4
+ "node": "g99757b0d4a54a8a5b3c7ec90b7c5beeb9f118ecc",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-20"
@@ -3678,6 +3678,49 @@ NEW_ISSUE_CHAT_DENY_COMMANDS: list[str] = [
3678
3678
  ]
3679
3679
 
3680
3680
 
3681
+ # Deny list applied to review workers (#2461). Unlike every other member of
3682
+ # WRITE_CAPABLE_SPEC_TYPES, a reviewer has ZERO legitimate mutations of its
3683
+ # own — coord.review.REVIEWER_SYSTEM_PROMPT already tells it "You are NOT
3684
+ # allowed to push commits or modify the PR's code. You only review" and "You
3685
+ # are NOT allowed to run any `gh` commands" (the coordinator posts the
3686
+ # review on its behalf after the session ends). Before #2461 that was
3687
+ # enforced by the PROMPT ALONE: `"review"` wasn't one of the explicit
3688
+ # branches in `default_worker_command`, so it fell through to the generic
3689
+ # `else` below and got the exact same `Read,Edit,Write,Bash,Monitor` grant as
3690
+ # a real work leg — nothing but the model's own good behaviour stood between
3691
+ # "read the diff" and "silently commit a fix and push it". This list is
3692
+ # wired into BOTH the system prompt (via `build_deny_prompt`, soft — a
3693
+ # reminder) AND `--disallowedTools` (CLI-enforced, hard — see the
3694
+ # `spec.type == "review"` branch below) so a reviewer that ignores its own
3695
+ # prompt still cannot shell out to a mutating git/gh command. The read-only
3696
+ # git the briefing actually tells reviewers to run (`git fetch`, `git diff`,
3697
+ # `git log`) stays allowed by omission.
3698
+ REVIEW_DENY_COMMANDS: list[str] = [
3699
+ "Bash(gh *)",
3700
+ "Bash(git push *)",
3701
+ "Bash(git commit *)",
3702
+ "Bash(git add *)",
3703
+ "Bash(git merge *)",
3704
+ "Bash(git rebase *)",
3705
+ "Bash(git cherry-pick *)",
3706
+ "Bash(git reset *)",
3707
+ "Bash(git checkout *)",
3708
+ "Bash(git switch *)",
3709
+ "Bash(git branch *)",
3710
+ "Bash(git stash *)",
3711
+ "Bash(git clean *)",
3712
+ "Bash(git rm *)",
3713
+ "Bash(git apply *)",
3714
+ "Bash(git am *)",
3715
+ "Bash(git tag *)",
3716
+ "Bash(rm -rf *)",
3717
+ "Bash(rm -fr *)",
3718
+ "Bash(coord approve *)",
3719
+ "Bash(coord merge *)",
3720
+ "Bash(coord assign *)",
3721
+ ]
3722
+
3723
+
3681
3724
  WorkerCommandBuilder = Callable[[AssignmentSpec], list[str]]
3682
3725
 
3683
3726
 
@@ -3858,13 +3901,16 @@ def _base_checkout_write_guard_tools(repo_path: str) -> list[str]:
3858
3901
  # editing coordinator.yml/coord.db) silently also blocked every worker's own
3859
3902
  # worktree under `~/.coord/worktrees/<id>/`, burning a full $5.23 session
3860
3903
  # that reasoned, designed, and only discovered at the very end that it could
3861
- # not save anything. `default_worker_command`'s `--setting-sources user`
3862
- # (above) closes off the specific mechanism (workers no longer load
3863
- # project/local settings at all), but this preflight check is kept as a
3864
- # defense-in-depth: it also catches a blanket deny rule living in the
3865
- # machine's *user*-level settings (`~/.claude/settings.json`, still loaded)
3866
- # and plain OS-level write failures (read-only mount, wrong ownership, full
3867
- # 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.
3868
3914
  _DENY_PATTERN_RE = re.compile(r"^(Edit|Write)\(//(.+)\)$")
3869
3915
 
3870
3916
 
@@ -3934,11 +3980,13 @@ def find_blocking_deny_rule(
3934
3980
  """Scan Claude Code settings files for a deny rule blocking *worktree_path*.
3935
3981
 
3936
3982
  Defaults to scanning just the machine's user-level settings
3937
- (``~/.claude/settings.json``) the one settings source a worker still
3938
- loads after the ``--setting-sources user`` restriction in
3939
- :func:`default_worker_command`; a checkout-local
3940
- ``.claude/settings.local.json`` can no longer reach a worker at all, so
3941
- 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.
3942
3990
 
3943
3991
  Returns a human-readable ``"'<pattern>' in <file>"`` message for the
3944
3992
  first matching rule found, or ``None`` when no scanned file carries one
@@ -4008,6 +4056,34 @@ def check_worktree_writable(
4008
4056
  return None
4009
4057
 
4010
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
+
4011
4087
  def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER_BINARY) -> list[str]:
4012
4088
  """Build the argv for invoking the worker on this assignment.
4013
4089
 
@@ -4030,6 +4106,9 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4030
4106
  """
4031
4107
  if spec.type == "plan":
4032
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)
4033
4112
  allowed_tools = "Read,Bash"
4034
4113
  elif spec.type == "refinement":
4035
4114
  # #264: refinement is a developer-driven chat for scoping an issue.
@@ -4083,6 +4162,8 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4083
4162
  # and deny list instead of the generic WORKER_SYSTEM_PROMPT.
4084
4163
  system_prompt = spec.system_prompt if spec.system_prompt else MOCK_AUTHOR_SYSTEM_PROMPT
4085
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)
4086
4167
  allowed_tools = "Read,Edit,Write,Bash"
4087
4168
  elif spec.type == "smoke":
4088
4169
  # #2301: smoke gets its own branch instead of falling through to the
@@ -4111,9 +4192,34 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4111
4192
  system_prompt = spec.system_prompt if spec.system_prompt else SMOKE_SYSTEM_PROMPT
4112
4193
  system_prompt += build_deny_prompt(spec.deny_commands)
4113
4194
  allowed_tools = "Read,Bash"
4195
+ elif spec.type == "review":
4196
+ # #2461: give review its own branch instead of falling through to
4197
+ # the generic `else` below — see REVIEW_DENY_COMMANDS for the full
4198
+ # story. A reviewer reads the diff and reports a verdict; it edits
4199
+ # and pushes nothing, so it gets no Edit/Write. `Monitor` is
4200
+ # withheld too, for the same #1394/#2301 reason the `smoke` branch
4201
+ # above withholds it: a review leg is a one-shot `claude -p`
4202
+ # session, and an await-a-notification tool that only resumes an
4203
+ # INTERACTIVE session would silently kill it mid-run.
4204
+ #
4205
+ # A scratch/tmp path outside the worktree (e.g. `/tmp/...`) stays
4206
+ # writable for a reviewer that wants to stage its findings before
4207
+ # the final `coord report-result --body-file` call — Bash retains
4208
+ # ordinary shell redirection (`cat >`, heredocs) even with no Write
4209
+ # tool grant; only the Edit/Write *tools* (which target the
4210
+ # worktree/repo) and the mutating git/gh commands below are blocked.
4211
+ from coord.review import REVIEWER_SYSTEM_PROMPT # noqa: PLC0415
4212
+ system_prompt = spec.system_prompt if spec.system_prompt else REVIEWER_SYSTEM_PROMPT
4213
+ system_prompt += build_deny_prompt(REVIEW_DENY_COMMANDS)
4214
+ allowed_tools = "Read,Bash"
4114
4215
  else:
4115
4216
  system_prompt = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
4116
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)
4117
4223
  # #2169: `Monitor` is the sanctioned way to poll a backgrounded
4118
4224
  # long-running command in bounded steps (see the ONE-SHOT section of
4119
4225
  # WORKER_SYSTEM_PROMPT) instead of a foreground loop that blocks
@@ -4141,8 +4247,8 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4141
4247
  "--system-prompt", system_prompt,
4142
4248
  "--allowedTools", allowed_tools,
4143
4249
  "--permission-mode", "acceptEdits",
4144
- # #1445: a worker must not inherit whatever project/local Claude Code
4145
- # 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
4146
4252
  # `.claude/settings.local.json` deny rule the OPERATOR added for
4147
4253
  # their own interactive session in that checkout (meant to protect
4148
4254
  # ~/.coord/coordinator.yml etc from an interactive session, but
@@ -4153,17 +4259,48 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4153
4259
  # has no .claude/ dir of its own (it's untracked/gitignored there),
4154
4260
  # so a deny rule that never touches the worktree's working directory
4155
4261
  # still blocked Edit/Write calls from a `claude -p` session cwd'd
4156
- # into that worktree. Restricting to "user" means a worker's
4157
- # permission profile is fully controlled by the --allowedTools /
4158
- # --disallowedTools / --permission-mode flags in this function (and
4159
- # its own hard-coded system prompt), not by the checkout's
4160
- # settings.json / settings.local.json. This is the headless/
4161
- # `claude -p` path only the human-attended interactive PTY path
4162
- # (coord.providers.claude_pty.ClaudePtyProvider) intentionally keeps
4163
- # the default sources so an operator's own `coord init`-configured
4164
- # convenience allow-list still applies to a session they're
4165
- # attached to and watching.
4166
- "--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",
4167
4304
  ]
4168
4305
  if spec.model:
4169
4306
  argv.extend(["--model", spec.model])
@@ -4177,6 +4314,14 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4177
4314
  for pattern in _base_checkout_write_guard_tools(spec.repo_path):
4178
4315
  if pattern not in disallowed_tools:
4179
4316
  disallowed_tools.append(pattern)
4317
+ # #2461: review gets its mutating-command deny list wired into
4318
+ # --disallowedTools too, not just the soft system-prompt reminder from
4319
+ # build_deny_prompt above — the CLI enforces this one even if the model
4320
+ # decides to ignore its own prompt.
4321
+ if spec.type == "review":
4322
+ for pattern in REVIEW_DENY_COMMANDS:
4323
+ if pattern not in disallowed_tools:
4324
+ disallowed_tools.append(pattern)
4180
4325
  if disallowed_tools:
4181
4326
  argv.extend(["--disallowedTools", ",".join(disallowed_tools)])
4182
4327
  # #315: when resuming a prior chat session, load the prior conversation so
@@ -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
@@ -113,13 +113,16 @@ class ClaudeProvider(Provider):
113
113
  NEW_ISSUE_CHAT_DENY_COMMANDS,
114
114
  NEW_ISSUE_CHAT_SYSTEM_PROMPT,
115
115
  REFINEMENT_SYSTEM_PROMPT,
116
+ REVIEW_DENY_COMMANDS,
116
117
  TEST_CHAT_SYSTEM_PROMPT,
117
118
  WORKER_PLAN_PROMPT,
118
119
  WORKER_SYSTEM_PROMPT,
119
120
  _base_checkout_write_guard_tools,
121
+ _claude_md_system_prompt_suffix,
120
122
  _sealed_write_guard_tools,
121
123
  build_deny_prompt,
122
124
  )
125
+ from coord.review import REVIEWER_SYSTEM_PROMPT # noqa: PLC0415
123
126
  from coord.smoke import SMOKE_SYSTEM_PROMPT # noqa: PLC0415
124
127
 
125
128
  binary = self._binary if self._binary is not None else DEFAULT_WORKER_BINARY
@@ -140,6 +143,10 @@ class ClaudeProvider(Provider):
140
143
  if system_prompt is None or allowed_tools is None:
141
144
  if spec.type == "plan":
142
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)
143
150
  _at = "Read,Bash"
144
151
  elif spec.type == "refinement":
145
152
  _sp = spec.system_prompt if spec.system_prompt else REFINEMENT_SYSTEM_PROMPT
@@ -170,6 +177,9 @@ class ClaudeProvider(Provider):
170
177
  elif spec.type == "mock-author":
171
178
  _sp = spec.system_prompt if spec.system_prompt else MOCK_AUTHOR_SYSTEM_PROMPT
172
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)
173
183
  _at = "Read,Edit,Write,Bash"
174
184
  elif spec.type == "smoke":
175
185
  # #2301: keep in sync with default_worker_command's identical
@@ -180,9 +190,26 @@ class ClaudeProvider(Provider):
180
190
  _sp = spec.system_prompt if spec.system_prompt else SMOKE_SYSTEM_PROMPT
181
191
  _sp += build_deny_prompt(spec.deny_commands)
182
192
  _at = "Read,Bash"
193
+ elif spec.type == "review":
194
+ # #2461: keep in sync with default_worker_command's identical
195
+ # branch — a reviewer reads the diff and reports a verdict,
196
+ # it edits and pushes nothing, so Read,Bash only (no
197
+ # Edit/Write, no Monitor — same one-shot-session reasoning as
198
+ # the `smoke` branch above). See REVIEW_DENY_COMMANDS for why
199
+ # its mutating-command deny list also lands in
200
+ # --disallowedTools below, not just this prompt text.
201
+ _sp = spec.system_prompt if spec.system_prompt else REVIEWER_SYSTEM_PROMPT
202
+ _sp += build_deny_prompt(REVIEW_DENY_COMMANDS)
203
+ _at = "Read,Bash"
183
204
  else:
184
205
  _sp = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
185
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)
186
213
  # #2169: keep in sync with default_worker_command's identical
187
214
  # branch — Monitor is the sanctioned bounded-poll tool for a
188
215
  # backgrounded long-running command. #2301: this grant is for
@@ -202,10 +229,11 @@ class ClaudeProvider(Provider):
202
229
  "--system-prompt", system_prompt,
203
230
  "--allowedTools", allowed_tools,
204
231
  "--permission-mode", permission_mode,
205
- # #1445: see the matching comment in default_worker_command —
206
- # workers must not inherit the host checkout's project/local
207
- # Claude Code settings.
208
- "--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",
209
237
  ]
210
238
  if effective_model:
211
239
  argv.extend(["--model", effective_model])
@@ -217,6 +245,12 @@ class ClaudeProvider(Provider):
217
245
  for pattern in _base_checkout_write_guard_tools(spec.repo_path):
218
246
  if pattern not in disallowed_tools:
219
247
  disallowed_tools.append(pattern)
248
+ # #2461: same CLI-enforced hard block as default_worker_command —
249
+ # see REVIEW_DENY_COMMANDS.
250
+ if spec.type == "review":
251
+ for pattern in REVIEW_DENY_COMMANDS:
252
+ if pattern not in disallowed_tools:
253
+ disallowed_tools.append(pattern)
220
254
  if disallowed_tools:
221
255
  argv.extend(["--disallowedTools", ",".join(disallowed_tools)])
222
256
  if spec.resume_session_id:
@@ -433,6 +433,7 @@ class ClaudePtyProvider(Provider):
433
433
  NEW_ISSUE_CHAT_DENY_COMMANDS,
434
434
  NEW_ISSUE_CHAT_SYSTEM_PROMPT,
435
435
  REFINEMENT_SYSTEM_PROMPT,
436
+ REVIEW_DENY_COMMANDS,
436
437
  TEST_CHAT_SYSTEM_PROMPT,
437
438
  WORKER_PLAN_PROMPT,
438
439
  WORKER_SYSTEM_PROMPT,
@@ -497,6 +498,16 @@ class ClaudePtyProvider(Provider):
497
498
  _sp = spec.system_prompt if spec.system_prompt else SMOKE_SYSTEM_PROMPT
498
499
  _sp += build_deny_prompt(spec.deny_commands)
499
500
  _at = "Read,Bash"
501
+ elif spec.type == "review":
502
+ # #2461: keep in sync with default_worker_command's identical
503
+ # branch — a reviewer reads the diff and reports a verdict,
504
+ # it edits and pushes nothing, so Read,Bash only (no
505
+ # Edit/Write, no Monitor — same one-shot-session reasoning as
506
+ # the `smoke` branch above).
507
+ from coord.review import REVIEWER_SYSTEM_PROMPT # noqa: PLC0415
508
+ _sp = spec.system_prompt if spec.system_prompt else REVIEWER_SYSTEM_PROMPT
509
+ _sp += build_deny_prompt(REVIEW_DENY_COMMANDS)
510
+ _at = "Read,Bash"
500
511
  else:
501
512
  _sp = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
502
513
  _sp += build_deny_prompt(spec.deny_commands)
@@ -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,