code-coordinator 0.5.188__tar.gz → 0.5.189__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.189}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/agent.py +71 -0
  5. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/providers/claude.py +19 -0
  6. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/providers/claude_pty.py +11 -0
  7. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent.py +111 -0
  8. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_providers_pty.py +34 -2
  9. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_worker_test_scoping.py +23 -4
  10. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/.claude/commands/board.md +0 -0
  11. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/.claude/commands/complete-session.md +0 -0
  12. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/.claude/commands/coordinator.md +0 -0
  13. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/.githooks/_lib.sh +0 -0
  14. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/.githooks/post-checkout +0 -0
  15. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/.githooks/post-commit +0 -0
  16. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/.githooks/post-merge +0 -0
  17. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  18. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/.github/coord-ci-acceptance.yml +0 -0
  19. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/.github/workflows/auto-release.yml +0 -0
  20. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/.github/workflows/cargo-test.yml +0 -0
  21. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/.github/workflows/publish.yml +0 -0
  22. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/.github/workflows/release-tui.yml +0 -0
  23. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/.github/workflows/test.yml +0 -0
  24. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/.gitignore +0 -0
  25. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/CLAUDE.md +0 -0
  26. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/GOAL.md +0 -0
  27. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/LICENSE +0 -0
  28. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/MANIFEST.in +0 -0
  29. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/README.md +0 -0
  30. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/code_coordinator.egg-info/SOURCES.txt +0 -0
  31. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/code_coordinator.egg-info/dependency_links.txt +0 -0
  32. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/code_coordinator.egg-info/entry_points.txt +0 -0
  33. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/code_coordinator.egg-info/requires.txt +0 -0
  34. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/code_coordinator.egg-info/scm_file_list.json +0 -0
  35. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/code_coordinator.egg-info/top_level.txt +0 -0
  36. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/__init__.py +0 -0
  37. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/_board_mapping.py +0 -0
  38. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/acceptance.py +0 -0
  39. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/acceptance_drivers.py +0 -0
  40. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/agent_app.py +0 -0
  41. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/agent_update.py +0 -0
  42. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/agents/opencode/.gitignore +0 -0
  43. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/agents/opencode/agents/work.md +0 -0
  44. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/agents/opencode/routing.jsonc +0 -0
  45. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/audit.py +0 -0
  46. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/auto_loop.py +0 -0
  47. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/block_log.py +0 -0
  48. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/board_bool_guard.py +0 -0
  49. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/board_service.py +0 -0
  50. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/board_wire.py +0 -0
  51. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/brain.py +0 -0
  52. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/branch_model.py +0 -0
  53. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/bug_intake.py +0 -0
  54. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/cargo_cache.py +0 -0
  55. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/ci_github.py +0 -0
  56. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/ci_store.py +0 -0
  57. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/claim.py +0 -0
  58. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/cli.py +0 -0
  59. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/client.py +0 -0
  60. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/__init__.py +0 -0
  61. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/_common.py +0 -0
  62. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/acceptance.py +0 -0
  63. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/agent_ops.py +0 -0
  64. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/audit.py +0 -0
  65. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/chat.py +0 -0
  66. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/dispatch.py +0 -0
  67. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/dispatch_workers.py +0 -0
  68. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/drive.py +0 -0
  69. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/drive_queue.py +0 -0
  70. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/gate_a.py +0 -0
  71. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/gates.py +0 -0
  72. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/issues.py +0 -0
  73. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/lifecycle.py +0 -0
  74. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/merge.py +0 -0
  75. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/milestone.py +0 -0
  76. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/plan_followup.py +0 -0
  77. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/plans.py +0 -0
  78. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/portal.py +0 -0
  79. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/release.py +0 -0
  80. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/repo.py +0 -0
  81. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/report.py +0 -0
  82. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/review.py +0 -0
  83. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/scorecard.py +0 -0
  84. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/sessions.py +0 -0
  85. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/setup.py +0 -0
  86. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/status.py +0 -0
  87. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/terminal.py +0 -0
  88. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/test_gate.py +0 -0
  89. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/commands/tui.py +0 -0
  90. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/comments.py +0 -0
  91. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/config.py +0 -0
  92. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/config_reload.py +0 -0
  93. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/conflict_fix.py +0 -0
  94. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/dao.py +0 -0
  95. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/dashboard/__init__.py +0 -0
  96. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/dashboard/fixture.py +0 -0
  97. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/dashboard/index.html +0 -0
  98. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/dashboard/server.py +0 -0
  99. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/dashboard/terminal.py +0 -0
  100. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/db.py +0 -0
  101. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/dead_end.py +0 -0
  102. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/README.md +0 -0
  103. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-agent.service +0 -0
  104. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-db-backup.service +0 -0
  105. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-db-backup.sh +0 -0
  106. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-db-backup.timer +0 -0
  107. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-drive-queue.service +0 -0
  108. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-drive-queue.timer +0 -0
  109. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-notify.service +0 -0
  110. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-notify.timer +0 -0
  111. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-release-propagate.service +0 -0
  112. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-release-propagate.timer +0 -0
  113. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-release-window.service +0 -0
  114. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-release-window.timer +0 -0
  115. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-serve.service +0 -0
  116. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-web-dist-build.service +0 -0
  117. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-web-dist-build.timer +0 -0
  118. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy/coord-web.service +0 -0
  119. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy_manifest.py +0 -0
  120. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deploy_units.py +0 -0
  121. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/deps.py +0 -0
  122. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/diagnose.py +0 -0
  123. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/dispatch.py +0 -0
  124. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/dist_name.py +0 -0
  125. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/drive.py +0 -0
  126. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/drive_queue.py +0 -0
  127. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/drive_state.py +0 -0
  128. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/events.py +0 -0
  129. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/failure_class.py +0 -0
  130. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/filelock.py +0 -0
  131. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/fleet_config_health.py +0 -0
  132. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/freshness.py +0 -0
  133. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/gate_a.py +0 -0
  134. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/gate_b.py +0 -0
  135. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/gate_snapshot.py +0 -0
  136. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/gates.py +0 -0
  137. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/github_ops.py +0 -0
  138. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/goal.py +0 -0
  139. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/graph_health.py +0 -0
  140. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/__init__.py +0 -0
  141. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/aggregate.py +0 -0
  142. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/__init__.py +0 -0
  143. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/agent_install.py +0 -0
  144. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/cargo_targets.py +0 -0
  145. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/claude_binary.py +0 -0
  146. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/coord_web_ci_pin.py +0 -0
  147. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/deploy_lane_facts.py +0 -0
  148. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/disk.py +0 -0
  149. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/fleet_board.py +0 -0
  150. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  151. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/fleet_phantom.py +0 -0
  152. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/fleet_unit_drift.py +0 -0
  153. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/graph.py +0 -0
  154. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/graphify_cli.py +0 -0
  155. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/index_lock.py +0 -0
  156. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/plan_usage.py +0 -0
  157. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/repo_state.py +0 -0
  158. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/spawned_coord.py +0 -0
  159. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/timer_active.py +0 -0
  160. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/toolchain.py +0 -0
  161. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/unit_drift.py +0 -0
  162. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/unit_enablement.py +0 -0
  163. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/checks/worktrees.py +0 -0
  164. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/cli.py +0 -0
  165. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/context.py +0 -0
  166. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/fleet_snapshot.py +0 -0
  167. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/models.py +0 -0
  168. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/pypi.py +0 -0
  169. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/registry.py +0 -0
  170. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/render.py +0 -0
  171. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/health/units.py +0 -0
  172. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/hooks.py +0 -0
  173. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/housekeeping.py +0 -0
  174. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/interactive.py +0 -0
  175. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/issue_store.py +0 -0
  176. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/liveness_auditor.py +0 -0
  177. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/machine_pause.py +0 -0
  178. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/merge_queue.py +0 -0
  179. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/milestone_chat.py +0 -0
  180. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/milestone_dispatch.py +0 -0
  181. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/milestone_gate.py +0 -0
  182. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/milestone_order.py +0 -0
  183. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/mock_author.py +0 -0
  184. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/models.py +0 -0
  185. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/network.py +0 -0
  186. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/new_issue_chat.py +0 -0
  187. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/notifier/__init__.py +0 -0
  188. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/notifier/baseline.py +0 -0
  189. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/notifier/cli.py +0 -0
  190. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/notifier/collect.py +0 -0
  191. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/notifier/digest.py +0 -0
  192. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/notifier/models.py +0 -0
  193. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/notifier/predicate.py +0 -0
  194. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/notifier/service.py +0 -0
  195. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/notifier/store.py +0 -0
  196. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/notifier/transport.py +0 -0
  197. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/notify.py +0 -0
  198. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/openapi.py +0 -0
  199. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/overlap_fence.py +0 -0
  200. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/overlap_predict.py +0 -0
  201. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/parentage.py +0 -0
  202. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/parentage_github.py +0 -0
  203. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/pipeline.py +0 -0
  204. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/plan_parser.py +0 -0
  205. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/plans.py +0 -0
  206. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/platform_paths.py +0 -0
  207. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/portal_bridge.py +0 -0
  208. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/portal_store.py +0 -0
  209. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/portal_sync.py +0 -0
  210. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/pr_body_lint.py +0 -0
  211. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/prereqs.py +0 -0
  212. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/progress.py +0 -0
  213. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/providers/__init__.py +0 -0
  214. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/providers/base.py +0 -0
  215. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/providers/opencode.py +0 -0
  216. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/queue_diagnose.py +0 -0
  217. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/reconcile.py +0 -0
  218. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/reconcile_tick.py +0 -0
  219. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/refine_chat.py +0 -0
  220. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/release_cordon.py +0 -0
  221. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/release_propagate.py +0 -0
  222. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/release_verify.py +0 -0
  223. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/release_window.py +0 -0
  224. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/repo_edit.py +0 -0
  225. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/repo_onboard.py +0 -0
  226. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/reports.py +0 -0
  227. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/revalidate.py +0 -0
  228. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/review.py +0 -0
  229. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/scorecard.py +0 -0
  230. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/self_health.py +0 -0
  231. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/serve_app.py +0 -0
  232. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  233. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  234. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  235. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  236. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  237. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/skills/portal-followup/SKILL.md +0 -0
  238. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  239. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  240. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/skills/update-issue/SKILL.md +0 -0
  241. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/smoke.py +0 -0
  242. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/spend_ceiling.py +0 -0
  243. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/split_work.py +0 -0
  244. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/stage_projection.py +0 -0
  245. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/state.py +0 -0
  246. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/test_author.py +0 -0
  247. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/test_chat.py +0 -0
  248. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/test_orchestrator.py +0 -0
  249. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/test_report.py +0 -0
  250. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/tui_release.py +0 -0
  251. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/usage.py +0 -0
  252. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/usage_limits.py +0 -0
  253. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/usage_rollup.py +0 -0
  254. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coord/worker_events.py +0 -0
  255. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/coordinator.example.yml +0 -0
  256. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-agent.service +0 -0
  257. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-db-backup.service +0 -0
  258. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-db-backup.sh +0 -0
  259. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-db-backup.timer +0 -0
  260. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-drive-queue.service +0 -0
  261. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-drive-queue.timer +0 -0
  262. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-notify.service +0 -0
  263. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-notify.timer +0 -0
  264. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-release-propagate.service +0 -0
  265. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-release-propagate.timer +0 -0
  266. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-release-window.service +0 -0
  267. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-release-window.timer +0 -0
  268. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-serve.service +0 -0
  269. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-web-dist-build.service +0 -0
  270. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-web-dist-build.sh +0 -0
  271. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-web-dist-build.timer +0 -0
  272. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-web-rollback.sh +0 -0
  273. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/coord-web.service +0 -0
  274. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/deploy/node-shim.sh +0 -0
  275. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  276. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/ADR_COORD_WEB_CI.md +0 -0
  277. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/ADR_COORD_WEB_DIST.md +0 -0
  278. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/AGENT_OPERATIONS.md +0 -0
  279. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/ARCHITECTURE.md +0 -0
  280. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/ARCH_SECURITY_GATES.md +0 -0
  281. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/COCKPIT.md +0 -0
  282. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/CONTROL_CENTER.md +0 -0
  283. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/COST_DISCIPLINE.md +0 -0
  284. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/CROSS_PLATFORM.md +0 -0
  285. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/CUSTOMER_PORTAL.md +0 -0
  286. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/DRIVE_QUEUE.md +0 -0
  287. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/EPHEMERAL_WORKERS.md +0 -0
  288. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/FORGE_MIGRATION.md +0 -0
  289. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/GRAPHIFY_SETUP.md +0 -0
  290. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/ISSUE_GUIDANCE.md +0 -0
  291. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/MAC_MINI.md +0 -0
  292. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  293. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/NOTIFIER.md +0 -0
  294. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/OPENCODE_VERIFICATION.md +0 -0
  295. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/OPERATING_GOTCHAS.md +0 -0
  296. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/ORACLE_LOOP.md +0 -0
  297. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/PHONE_WEBAPP.md +0 -0
  298. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/PIPELINE_V2.md +0 -0
  299. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/PLATFORM_EVOLUTION.md +0 -0
  300. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/SECOND_BACKEND.md +0 -0
  301. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/STORE_SERVICE.md +0 -0
  302. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  303. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/WEB_CONTROL_CENTER.md +0 -0
  304. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/WSL_WINDOWS_WORKER.md +0 -0
  305. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/mocks/web/README.md +0 -0
  306. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/mocks/web/_tokens.css +0 -0
  307. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/mocks/web/issue-detail.html +0 -0
  308. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/mocks/web/pipeline-narrow.html +0 -0
  309. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/docs/mocks/web/pipeline-wide.html +0 -0
  310. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/graphify-out/.gitignore +0 -0
  311. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/install-agent.sh +0 -0
  312. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/pyproject.toml +0 -0
  313. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/audit_review_verdict_overrides.py +0 -0
  314. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  315. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/azure-workers/build-worker-image.sh +0 -0
  316. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/azure-workers/coordinator-machine.py +0 -0
  317. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/azure-workers/epic-down.sh +0 -0
  318. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/azure-workers/epic-up.sh +0 -0
  319. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/azure-workers/preflight.sh +0 -0
  320. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/azure-workers/provision-worker.sh +0 -0
  321. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  322. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  323. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/azure-workers/verify-github-token.sh +0 -0
  324. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/codegen.py +0 -0
  325. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/coord-test-runner.sh +0 -0
  326. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/drive-batch.sh +0 -0
  327. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/gen_board_fixture.py +0 -0
  328. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/next_release_tag.py +0 -0
  329. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/run_tests_in_populated_home.sh +0 -0
  330. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/run_tests_without_gh.sh +0 -0
  331. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/smoke_437_interactive.py +0 -0
  332. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/verify_878_review_capture.py +0 -0
  333. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/verify_release_published.py +0 -0
  334. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/scripts/verify_release_wheel.py +0 -0
  335. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/setup.cfg +0 -0
  336. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/SMOKE_SET.md +0 -0
  337. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/__init__.py +0 -0
  338. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  339. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-33/contract.md +0 -0
  340. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-33/manifest.yml +0 -0
  341. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  342. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  343. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  344. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  345. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-37/conftest.py +0 -0
  346. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-37/contract.md +0 -0
  347. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-37/manifest.yml +0 -0
  348. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  349. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  350. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-38/contract.md +0 -0
  351. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-38/manifest.yml +0 -0
  352. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  353. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  354. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  355. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  356. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  357. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  358. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  359. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  360. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  361. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  362. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-51/contract.md +0 -0
  363. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  364. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  365. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-51/manifest.yml +0 -0
  366. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  367. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-51/tsconfig.json +0 -0
  368. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  369. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  370. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  371. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/contract.md +0 -0
  372. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  373. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/manifest.yml +0 -0
  374. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  375. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  376. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  377. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  378. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  379. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  380. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  381. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  382. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  383. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  384. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  385. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  386. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/conftest.py +0 -0
  387. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/board-pipeline-basic.json +0 -0
  388. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  389. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  390. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  391. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  392. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/playwright/all_pass.json +0 -0
  393. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  394. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/playwright/mixed_fail.json +0 -0
  395. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  396. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  397. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/playwright/skip.json +0 -0
  398. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/playwright/truncated.json +0 -0
  399. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  400. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  401. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  402. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  403. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  404. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  405. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  406. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  407. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_acceptance.py +0 -0
  408. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_acceptance_drivers.py +0 -0
  409. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_api_error.py +0 -0
  410. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_app.py +0 -0
  411. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_branch_base.py +0 -0
  412. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_branch_capture.py +0 -0
  413. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_config_free_1712.py +0 -0
  414. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_deploy_units_endpoint.py +0 -0
  415. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_dirty_worktree.py +0 -0
  416. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  417. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_graph_self_heal.py +0 -0
  418. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_health_h3.py +0 -0
  419. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_idle_restart.py +0 -0
  420. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_push_failure.py +0 -0
  421. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_reap.py +0 -0
  422. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_repos_and_pull.py +0 -0
  423. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_restart_services_endpoint.py +0 -0
  424. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_skills_self_heal.py +0 -0
  425. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_startup_diagnostics.py +0 -0
  426. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_update.py +0 -0
  427. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_update_bluegreen.py +0 -0
  428. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_usage_limit.py +0 -0
  429. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_agent_zero_commit.py +0 -0
  430. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_ambient_home_isolation.py +0 -0
  431. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_approve_reject_plan.py +0 -0
  432. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_approve_usage_gate.py +0 -0
  433. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_assignment_already_recorded_daemon.py +0 -0
  434. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_audit_log.py +0 -0
  435. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_audit_outcome.py +0 -0
  436. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_audit_query.py +0 -0
  437. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_auto_loop.py +0 -0
  438. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_auto_release_publish_2035.py +0 -0
  439. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_base_checkout_restore.py +0 -0
  440. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_block_log.py +0 -0
  441. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_board_cap_762.py +0 -0
  442. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_board_fixture.py +0 -0
  443. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_board_read_path.py +0 -0
  444. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_board_service.py +0 -0
  445. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_board_state.py +0 -0
  446. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_board_wire.py +0 -0
  447. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_brain.py +0 -0
  448. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_branch_model.py +0 -0
  449. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_bug_intake.py +0 -0
  450. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_build_worker_image_env_update.py +0 -0
  451. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cargo_cache.py +0 -0
  452. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_ci_acceptance_gate_1950.py +0 -0
  453. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_ci_parity_2091.py +0 -0
  454. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_ci_store.py +0 -0
  455. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_claim.py +0 -0
  456. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_acceptance.py +0 -0
  457. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_assign.py +0 -0
  458. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  459. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_assign_interactive_remote.py +0 -0
  460. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_assign_provider.py +0 -0
  461. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  462. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_audit.py +0 -0
  463. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_chat_continue.py +0 -0
  464. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_decide.py +0 -0
  465. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_diagnose_config_provenance.py +0 -0
  466. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_diagnose_graph.py +0 -0
  467. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_diagnose_self.py +0 -0
  468. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_doctor.py +0 -0
  469. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_doctor_config_free_1801.py +0 -0
  470. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  471. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_drive.py +0 -0
  472. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_drive_queue.py +0 -0
  473. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_escalate.py +0 -0
  474. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_fix_headless_review.py +0 -0
  475. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_gate_a.py +0 -0
  476. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_install_drift.py +0 -0
  477. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_install_skills.py +0 -0
  478. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_issue_create_label.py +0 -0
  479. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_issue_reopen.py +0 -0
  480. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_merge.py +0 -0
  481. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_milestone_assign.py +0 -0
  482. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_milestone_capture.py +0 -0
  483. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_milestone_chat_add_child.py +0 -0
  484. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_milestone_dispatch.py +0 -0
  485. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_milestone_gate_b.py +0 -0
  486. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_milestone_gate_c.py +0 -0
  487. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_milestone_order.py +0 -0
  488. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  489. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_milestone_ship.py +0 -0
  490. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_network.py +0 -0
  491. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_new_issue_chat.py +0 -0
  492. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_plans.py +0 -0
  493. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_portal.py +0 -0
  494. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_pull_artifact.py +0 -0
  495. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_queue.py +0 -0
  496. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_reattach_sessions.py +0 -0
  497. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_refine_board.py +0 -0
  498. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_release_preflight.py +0 -0
  499. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_release_propagate.py +0 -0
  500. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_release_window.py +0 -0
  501. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_repo_2220.py +0 -0
  502. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_scorecard.py +0 -0
  503. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_set_review_findings.py +0 -0
  504. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_status_advisory_terminal.py +0 -0
  505. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_status_merge_queue.py +0 -0
  506. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_status_provider.py +0 -0
  507. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_status_review_finalizing.py +0 -0
  508. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_status_test_failed_tag.py +0 -0
  509. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_status_usage_limit.py +0 -0
  510. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_sync_comments_873.py +0 -0
  511. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_test_plan.py +0 -0
  512. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_track.py +0 -0
  513. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_tui_update.py +0 -0
  514. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cli_wait.py +0 -0
  515. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_client_base_install.py +0 -0
  516. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_comments.py +0 -0
  517. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_completion_summary.py +0 -0
  518. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_config.py +0 -0
  519. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_config_acceptance.py +0 -0
  520. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_config_audit.py +0 -0
  521. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_config_pricing.py +0 -0
  522. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  523. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_config_usage_gate.py +0 -0
  524. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_conflict_fix.py +0 -0
  525. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_conflict_fix_semantic.py +0 -0
  526. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_coord_test.py +0 -0
  527. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_coord_test_runner_baseline.py +0 -0
  528. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_coord_test_runner_populated_home.py +0 -0
  529. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_coord_test_runner_routing.py +0 -0
  530. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_coord_test_runner_toolchain.py +0 -0
  531. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_coord_web_sse_restart_live.py +0 -0
  532. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_coordinator_machine.py +0 -0
  533. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_cross_platform_imports.py +0 -0
  534. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_dashboard.py +0 -0
  535. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_dashboard_fixture.py +0 -0
  536. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_dashboard_terminal.py +0 -0
  537. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_dashboard_terminal_live.py +0 -0
  538. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_db.py +0 -0
  539. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_dead_end.py +0 -0
  540. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_deploy_coord_db_backup.py +0 -0
  541. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_deploy_coord_web_dist.py +0 -0
  542. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_deploy_coord_web_rollback.py +0 -0
  543. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_deploy_drive_queue_unit.py +0 -0
  544. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_deploy_manifest.py +0 -0
  545. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_deploy_units_lane.py +0 -0
  546. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_deploy_web_unit.py +0 -0
  547. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_deps.py +0 -0
  548. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_diagnose.py +0 -0
  549. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_dispatch.py +0 -0
  550. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_dispatch_target_validation.py +0 -0
  551. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_dist_name.py +0 -0
  552. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_done_housekeeping.py +0 -0
  553. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_drive.py +0 -0
  554. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_drive_queue.py +0 -0
  555. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_drive_state.py +0 -0
  556. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_drive_tmux.py +0 -0
  557. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_epic_up_capability_detection.py +0 -0
  558. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  559. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_epic_up_image_provenance.py +0 -0
  560. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_errors.py +0 -0
  561. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_events.py +0 -0
  562. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_failure_class.py +0 -0
  563. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_filelock.py +0 -0
  564. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  565. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_fix_of_force_override.py +0 -0
  566. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_fleet_config_health.py +0 -0
  567. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_fleet_health_probes.py +0 -0
  568. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_fleet_health_snapshot.py +0 -0
  569. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_freshness.py +0 -0
  570. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_gate_a.py +0 -0
  571. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_gate_b.py +0 -0
  572. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_gate_snapshot_staleness.py +0 -0
  573. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_gates.py +0 -0
  574. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  575. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_generated_types_fixture.py +0 -0
  576. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_github_ops.py +0 -0
  577. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_goal.py +0 -0
  578. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_graph_health.py +0 -0
  579. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_graph_selfheal_absent_2237.py +0 -0
  580. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_handoff.py +0 -0
  581. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_health_checks.py +0 -0
  582. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_health_cli.py +0 -0
  583. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_health_cli_graph.py +0 -0
  584. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_health_config.py +0 -0
  585. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_health_context.py +0 -0
  586. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_health_coord_web_ci_pin.py +0 -0
  587. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_health_deploy_lane_facts.py +0 -0
  588. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_health_incident_regression.py +0 -0
  589. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_health_pypi.py +0 -0
  590. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_health_registry.py +0 -0
  591. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_health_timer_active.py +0 -0
  592. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_health_toolchain.py +0 -0
  593. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_health_unit_drift.py +0 -0
  594. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_health_unit_enablement.py +0 -0
  595. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_hooks.py +0 -0
  596. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_human_attended_437.py +0 -0
  597. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_init.py +0 -0
  598. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_integration.py +0 -0
  599. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_interactive_briefing_echo.py +0 -0
  600. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_interactive_prefill_state.py +0 -0
  601. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_interactive_session_relaunch.py +0 -0
  602. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_interactive_test_verdict_backstop.py +0 -0
  603. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_interactive_token_attribution.py +0 -0
  604. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_interactive_worktree.py +0 -0
  605. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_issue_store_seam.py +0 -0
  606. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_liveness_auditor.py +0 -0
  607. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_liveness_notify.py +0 -0
  608. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_machine_pause.py +0 -0
  609. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_merge_queue.py +0 -0
  610. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_merge_verify.py +0 -0
  611. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_milestone_chat.py +0 -0
  612. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_milestone_dispatch.py +0 -0
  613. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_milestone_gate.py +0 -0
  614. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_milestone_order.py +0 -0
  615. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_milestone_seam.py +0 -0
  616. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_mock_author.py +0 -0
  617. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_model_tiering.py +0 -0
  618. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_models.py +0 -0
  619. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_models_config_labels.py +0 -0
  620. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_needs_attention.py +0 -0
  621. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_network.py +0 -0
  622. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_new_issue_chat.py +0 -0
  623. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_next_release_tag.py +0 -0
  624. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_no_direct_gh_calls.py +0 -0
  625. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_node_shim.py +0 -0
  626. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_notifier_baseline.py +0 -0
  627. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_notifier_cli.py +0 -0
  628. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_notifier_collect.py +0 -0
  629. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_notifier_config.py +0 -0
  630. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_notifier_drive_seam.py +0 -0
  631. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_notifier_isolation.py +0 -0
  632. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_notifier_predicate.py +0 -0
  633. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_notifier_quiet_hours.py +0 -0
  634. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_notifier_service.py +0 -0
  635. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_notify.py +0 -0
  636. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_notify_drain.py +0 -0
  637. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_openapi.py +0 -0
  638. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_operational_defaults.py +0 -0
  639. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_overlap_fence.py +0 -0
  640. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_overlap_predict.py +0 -0
  641. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_packaged_deploy_units.py +0 -0
  642. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_parentage.py +0 -0
  643. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_paste_landed.py +0 -0
  644. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_pipeline.py +0 -0
  645. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_plan_followup_approve_plan_command.py +0 -0
  646. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_plan_followup_pr_command.py +0 -0
  647. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_plan_followup_review_command.py +0 -0
  648. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_plan_only.py +0 -0
  649. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_plan_parser.py +0 -0
  650. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_platform_paths.py +0 -0
  651. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_portal_bridge.py +0 -0
  652. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_portal_config.py +0 -0
  653. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_portal_sync.py +0 -0
  654. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_pr_body_lint.py +0 -0
  655. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_prereqs.py +0 -0
  656. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_production_db_guard.py +0 -0
  657. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_progress.py +0 -0
  658. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_provider_seam.py +0 -0
  659. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_providers.py +0 -0
  660. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_providers_config_labels.py +0 -0
  661. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_quiet_hours.py +0 -0
  662. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_quiet_hours_store_2146.py +0 -0
  663. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_reap_merged_sessions.py +0 -0
  664. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_reap_stale_interactive_tick.py +0 -0
  665. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_reconcile.py +0 -0
  666. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_reconcile_branch.py +0 -0
  667. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_reconcile_completions.py +0 -0
  668. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_reconcile_merges.py +0 -0
  669. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_reconcile_no_agent_record.py +0 -0
  670. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_reconcile_tick.py +0 -0
  671. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_reconcile_usage_limit_done.py +0 -0
  672. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_refine_chat.py +0 -0
  673. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_release_cordon_2101.py +0 -0
  674. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  675. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_release_cordon_deadlock_2240.py +0 -0
  676. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_release_propagate.py +0 -0
  677. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_release_unified_1242.py +0 -0
  678. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_release_verify.py +0 -0
  679. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_release_window.py +0 -0
  680. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_remote_auto_prune.py +0 -0
  681. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_remote_interactive_reaper.py +0 -0
  682. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_repo_edit_2220.py +0 -0
  683. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_repo_graph_fleet_2237.py +0 -0
  684. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_repo_onboard_2220.py +0 -0
  685. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_report_result_push.py +0 -0
  686. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_reports.py +0 -0
  687. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_retry.py +0 -0
  688. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_retry_advisory_1606.py +0 -0
  689. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_retry_type_1636.py +0 -0
  690. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_revalidate.py +0 -0
  691. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_review.py +0 -0
  692. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_review_end_review_without_verdict.py +0 -0
  693. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_review_parse_failure_diagnostic.py +0 -0
  694. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_review_reaffirm.py +0 -0
  695. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_review_state.py +0 -0
  696. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_review_verdict_backstop.py +0 -0
  697. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_review_verdict_override_audit.py +0 -0
  698. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_review_verdict_relay.py +0 -0
  699. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_review_zero_commits.py +0 -0
  700. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_scoped_review_wiring.py +0 -0
  701. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_scorecard.py +0 -0
  702. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_self_health.py +0 -0
  703. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_serve.py +0 -0
  704. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_serve_app_board_trim.py +0 -0
  705. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_session.py +0 -0
  706. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_slice_issue_attribution.py +0 -0
  707. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_smoke.py +0 -0
  708. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_smoke_live_checkout_restore.py +0 -0
  709. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_smoke_workflow.py +0 -0
  710. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_spend_ceiling.py +0 -0
  711. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_spend_ceiling_coordinator.py +0 -0
  712. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_split.py +0 -0
  713. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_split_work.py +0 -0
  714. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_stage_projection.py +0 -0
  715. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_stalled_pipeline.py +0 -0
  716. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_state.py +0 -0
  717. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_state_review_findings_daemon.py +0 -0
  718. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_status_fleet_footer.py +0 -0
  719. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_stop_1567.py +0 -0
  720. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_stuck.py +0 -0
  721. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_terminal_command.py +0 -0
  722. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_test_author.py +0 -0
  723. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_test_chat.py +0 -0
  724. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_test_orchestrator.py +0 -0
  725. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_test_report.py +0 -0
  726. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_test_verdict_parsing.py +0 -0
  727. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_test_verdict_transcript_floor.py +0 -0
  728. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_thin_client_board_audit.py +0 -0
  729. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_thin_client_config_load_1080.py +0 -0
  730. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_thin_client_daemon_routing_906.py +0 -0
  731. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_tmux_host.py +0 -0
  732. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_tmux_session.py +0 -0
  733. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_transcript_floor.py +0 -0
  734. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_usage.py +0 -0
  735. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_usage_limits.py +0 -0
  736. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_usage_rollup.py +0 -0
  737. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_venv_live_install_2121.py +0 -0
  738. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_version_single_source.py +0 -0
  739. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_watch.py +0 -0
  740. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  741. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_worker_events.py +0 -0
  742. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_worker_image_pin_sync.py +0 -0
  743. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_worker_safety.py +0 -0
  744. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_worktree.py +0 -0
  745. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  746. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/Cargo.lock +0 -0
  747. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/Cargo.toml +0 -0
  748. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/cargo-config-local-quadraui.toml.example +0 -0
  749. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/audit.rs +0 -0
  750. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/chat.rs +0 -0
  751. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/data.rs +0 -0
  752. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/dialogs.rs +0 -0
  753. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/doc_tabs.rs +0 -0
  754. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/drive.rs +0 -0
  755. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/drive_queue.rs +0 -0
  756. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/escalation.rs +0 -0
  757. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/events.rs +0 -0
  758. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/fixtures.rs +0 -0
  759. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/fleet_health.rs +0 -0
  760. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/fleet_sessions.rs +0 -0
  761. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/fleet_terminals.rs +0 -0
  762. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/format.rs +0 -0
  763. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/milestone_dag.rs +0 -0
  764. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/mod.rs +0 -0
  765. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/msv.rs +0 -0
  766. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/pipeline.rs +0 -0
  767. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/plans.rs +0 -0
  768. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/render.rs +0 -0
  769. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/reports.rs +0 -0
  770. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/sessions.rs +0 -0
  771. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/settings_ui.rs +0 -0
  772. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/sidebar.rs +0 -0
  773. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/terminal.rs +0 -0
  774. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/tests.rs +0 -0
  775. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/types.rs +0 -0
  776. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/app/workspace.rs +0 -0
  777. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/bin/gtk.rs +0 -0
  778. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/commands.rs +0 -0
  779. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/lib.rs +0 -0
  780. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/main.rs +0 -0
  781. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/src/settings.rs +0 -0
  782. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/tests/acceptance.rs +0 -0
  783. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/tui/tests/cli.rs +0 -0
  784. {code_coordinator-0.5.188 → code_coordinator-0.5.189}/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.189
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.189
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.189",
3
3
  "distance": 0,
4
- "node": "ge96703c949bd613e9a8c2b576d71050e015f956e",
4
+ "node": "g9c81a5128ae2355b8dee8b005e2836f58e553167",
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
 
@@ -4111,6 +4154,26 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4111
4154
  system_prompt = spec.system_prompt if spec.system_prompt else SMOKE_SYSTEM_PROMPT
4112
4155
  system_prompt += build_deny_prompt(spec.deny_commands)
4113
4156
  allowed_tools = "Read,Bash"
4157
+ elif spec.type == "review":
4158
+ # #2461: give review its own branch instead of falling through to
4159
+ # the generic `else` below — see REVIEW_DENY_COMMANDS for the full
4160
+ # story. A reviewer reads the diff and reports a verdict; it edits
4161
+ # and pushes nothing, so it gets no Edit/Write. `Monitor` is
4162
+ # withheld too, for the same #1394/#2301 reason the `smoke` branch
4163
+ # above withholds it: a review leg is a one-shot `claude -p`
4164
+ # session, and an await-a-notification tool that only resumes an
4165
+ # INTERACTIVE session would silently kill it mid-run.
4166
+ #
4167
+ # A scratch/tmp path outside the worktree (e.g. `/tmp/...`) stays
4168
+ # writable for a reviewer that wants to stage its findings before
4169
+ # the final `coord report-result --body-file` call — Bash retains
4170
+ # ordinary shell redirection (`cat >`, heredocs) even with no Write
4171
+ # tool grant; only the Edit/Write *tools* (which target the
4172
+ # worktree/repo) and the mutating git/gh commands below are blocked.
4173
+ from coord.review import REVIEWER_SYSTEM_PROMPT # noqa: PLC0415
4174
+ system_prompt = spec.system_prompt if spec.system_prompt else REVIEWER_SYSTEM_PROMPT
4175
+ system_prompt += build_deny_prompt(REVIEW_DENY_COMMANDS)
4176
+ allowed_tools = "Read,Bash"
4114
4177
  else:
4115
4178
  system_prompt = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
4116
4179
  system_prompt += build_deny_prompt(spec.deny_commands)
@@ -4177,6 +4240,14 @@ def default_worker_command(spec: AssignmentSpec, *, binary: str = DEFAULT_WORKER
4177
4240
  for pattern in _base_checkout_write_guard_tools(spec.repo_path):
4178
4241
  if pattern not in disallowed_tools:
4179
4242
  disallowed_tools.append(pattern)
4243
+ # #2461: review gets its mutating-command deny list wired into
4244
+ # --disallowedTools too, not just the soft system-prompt reminder from
4245
+ # build_deny_prompt above — the CLI enforces this one even if the model
4246
+ # decides to ignore its own prompt.
4247
+ if spec.type == "review":
4248
+ for pattern in REVIEW_DENY_COMMANDS:
4249
+ if pattern not in disallowed_tools:
4250
+ disallowed_tools.append(pattern)
4180
4251
  if disallowed_tools:
4181
4252
  argv.extend(["--disallowedTools", ",".join(disallowed_tools)])
4182
4253
  # #315: when resuming a prior chat session, load the prior conversation so
@@ -113,6 +113,7 @@ 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,
@@ -120,6 +121,7 @@ class ClaudeProvider(Provider):
120
121
  _sealed_write_guard_tools,
121
122
  build_deny_prompt,
122
123
  )
124
+ from coord.review import REVIEWER_SYSTEM_PROMPT # noqa: PLC0415
123
125
  from coord.smoke import SMOKE_SYSTEM_PROMPT # noqa: PLC0415
124
126
 
125
127
  binary = self._binary if self._binary is not None else DEFAULT_WORKER_BINARY
@@ -180,6 +182,17 @@ class ClaudeProvider(Provider):
180
182
  _sp = spec.system_prompt if spec.system_prompt else SMOKE_SYSTEM_PROMPT
181
183
  _sp += build_deny_prompt(spec.deny_commands)
182
184
  _at = "Read,Bash"
185
+ elif spec.type == "review":
186
+ # #2461: keep in sync with default_worker_command's identical
187
+ # branch — a reviewer reads the diff and reports a verdict,
188
+ # it edits and pushes nothing, so Read,Bash only (no
189
+ # Edit/Write, no Monitor — same one-shot-session reasoning as
190
+ # the `smoke` branch above). See REVIEW_DENY_COMMANDS for why
191
+ # its mutating-command deny list also lands in
192
+ # --disallowedTools below, not just this prompt text.
193
+ _sp = spec.system_prompt if spec.system_prompt else REVIEWER_SYSTEM_PROMPT
194
+ _sp += build_deny_prompt(REVIEW_DENY_COMMANDS)
195
+ _at = "Read,Bash"
183
196
  else:
184
197
  _sp = spec.system_prompt if spec.system_prompt else WORKER_SYSTEM_PROMPT
185
198
  _sp += build_deny_prompt(spec.deny_commands)
@@ -217,6 +230,12 @@ class ClaudeProvider(Provider):
217
230
  for pattern in _base_checkout_write_guard_tools(spec.repo_path):
218
231
  if pattern not in disallowed_tools:
219
232
  disallowed_tools.append(pattern)
233
+ # #2461: same CLI-enforced hard block as default_worker_command —
234
+ # see REVIEW_DENY_COMMANDS.
235
+ if spec.type == "review":
236
+ for pattern in REVIEW_DENY_COMMANDS:
237
+ if pattern not in disallowed_tools:
238
+ disallowed_tools.append(pattern)
220
239
  if disallowed_tools:
221
240
  argv.extend(["--disallowedTools", ",".join(disallowed_tools)])
222
241
  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)
@@ -21,6 +21,7 @@ from coord.agent import (
21
21
  FAILED,
22
22
  PENDING,
23
23
  REFUSED_POLICY,
24
+ REVIEW_DENY_COMMANDS,
24
25
  RUNNING,
25
26
  MOCK_AUTHOR_SYSTEM_PROMPT,
26
27
  WORKER_SYSTEM_PROMPT,
@@ -1192,6 +1193,116 @@ def test_default_worker_command_smoke_type_honours_explicit_system_prompt() -> N
1192
1193
  assert system_prompt.startswith("custom smoke prompt")
1193
1194
 
1194
1195
 
1196
+ # ── #2461: review legs must be read-only ─────────────────────────────────
1197
+ #
1198
+ # Root cause: `"review"` wasn't one of the explicit branches in
1199
+ # `default_worker_command`, so it fell through to the generic `else` and got
1200
+ # the exact same `Read,Edit,Write,Bash,Monitor` grant as a real work leg —
1201
+ # REVIEWER_SYSTEM_PROMPT's "you only review, you are NOT allowed to push
1202
+ # commits or modify the PR's code" was enforced by the prompt text alone,
1203
+ # with nothing stopping a review worker from calling Edit/Write or shelling
1204
+ # out to `git push`/`gh` if it decided to.
1205
+
1206
+
1207
+ def _review_spec(**overrides) -> AssignmentSpec:
1208
+ base = dict(
1209
+ repo_name="api",
1210
+ repo_path="/tmp/repo",
1211
+ issue_number=2461,
1212
+ issue_title="[review] t",
1213
+ briefing="b",
1214
+ branch="main",
1215
+ type="review",
1216
+ )
1217
+ base.update(overrides)
1218
+ return AssignmentSpec(**base)
1219
+
1220
+
1221
+ def test_default_worker_command_review_type_gets_read_bash_only() -> None:
1222
+ """A review leg only reads the diff and reports a verdict — no
1223
+ Edit/Write (it must not modify the PR's code), and (mirroring the
1224
+ `smoke` branch's #1394/#2301 reasoning) no Monitor either — a review leg
1225
+ is a one-shot `claude -p` session, so an await-a-notification tool can
1226
+ never resume it."""
1227
+ argv = default_worker_command(_review_spec())
1228
+ allowed = argv[argv.index("--allowedTools") + 1]
1229
+ assert allowed == "Read,Bash"
1230
+
1231
+
1232
+ def test_default_worker_command_review_type_uses_reviewer_system_prompt() -> None:
1233
+ """Confirms the review branch's default system prompt is
1234
+ coord.review.REVIEWER_SYSTEM_PROMPT, not the generic WORKER_SYSTEM_PROMPT
1235
+ the old fall-through `else` branch would have used."""
1236
+ from coord.review import REVIEWER_SYSTEM_PROMPT
1237
+
1238
+ argv = default_worker_command(_review_spec())
1239
+ system_prompt = argv[argv.index("--system-prompt") + 1]
1240
+ assert system_prompt.startswith(REVIEWER_SYSTEM_PROMPT)
1241
+
1242
+
1243
+ def test_default_worker_command_review_type_honours_explicit_system_prompt() -> None:
1244
+ argv = default_worker_command(_review_spec(system_prompt="custom review prompt"))
1245
+ system_prompt = argv[argv.index("--system-prompt") + 1]
1246
+ assert system_prompt.startswith("custom review prompt")
1247
+
1248
+
1249
+ def test_default_worker_command_review_type_blocks_mutating_git_and_gh() -> None:
1250
+ """The deny list must be wired into the CLI-enforced --disallowedTools,
1251
+ not just the soft system-prompt reminder text — a reviewer that ignores
1252
+ its own prompt must still be structurally unable to push, commit, or
1253
+ touch GitHub. This is the actual "tool scope" enforcement #2461 asks
1254
+ for, as opposed to the prompt-only status quo."""
1255
+ argv = default_worker_command(_review_spec())
1256
+ idx = argv.index("--disallowedTools")
1257
+ disallowed = argv[idx + 1].split(",")
1258
+ for pattern in REVIEW_DENY_COMMANDS:
1259
+ assert pattern in disallowed
1260
+ # And Edit/Write themselves are denied by simple omission from
1261
+ # --allowedTools (Claude Code only grants tools it's explicitly told to).
1262
+ allowed = argv[argv.index("--allowedTools") + 1].split(",")
1263
+ assert "Edit" not in allowed
1264
+ assert "Write" not in allowed
1265
+
1266
+
1267
+ def test_default_worker_command_review_type_deny_list_also_in_prompt() -> None:
1268
+ """Belt-and-braces: the same deny list also lands in the system prompt
1269
+ text (build_deny_prompt) so a reasoning model sees an explicit reminder,
1270
+ not just a silent tool-call rejection."""
1271
+ argv = default_worker_command(_review_spec())
1272
+ system_prompt = argv[argv.index("--system-prompt") + 1]
1273
+ assert "FORBIDDEN COMMANDS" in system_prompt
1274
+ assert "git push *" in system_prompt
1275
+ assert "gh *" in system_prompt
1276
+
1277
+
1278
+ def test_assign_wires_the_review_deny_list_into_the_real_dispatch(tmp_path: Path) -> None:
1279
+ """End-to-end (mirrors test_assign_wires_the_base_checkout_guard_into_the_real_dispatch
1280
+ for #1642): dispatch a real review-type assignment through
1281
+ default_worker_command via AgentServer.assign() and confirm the argv the
1282
+ agent actually launched carries the hard --disallowedTools guard, not
1283
+ just a spec built by hand in isolation."""
1284
+ repo = _init_repo(tmp_path / "repo")
1285
+ server = AgentServer(
1286
+ machine_name="test",
1287
+ capabilities=["python"],
1288
+ repos=["api"],
1289
+ state_dir=tmp_path / "state",
1290
+ worker_command=lambda spec: default_worker_command(spec, binary="/bin/true"),
1291
+ repo_paths={"api": str(repo)},
1292
+ )
1293
+ spec = _spec(repo, type="review")
1294
+ a = server.assign(spec)
1295
+ final = server.wait_for(a.id, timeout=30)
1296
+ assert final.exit_code == 0
1297
+
1298
+ log = Path(final.log_path).read_text()
1299
+ header = log.splitlines()[0]
1300
+ assert "--disallowedTools" in header
1301
+ for pattern in REVIEW_DENY_COMMANDS:
1302
+ assert pattern in header
1303
+ assert "--allowedTools Read,Bash" in header
1304
+
1305
+
1195
1306
  # ── #1315: structural sealing enforcement (write-guard) ─────────────────────
1196
1307
 
1197
1308
 
@@ -199,7 +199,7 @@ def test_pty_build_command_branches_match_claude_for_plan_type() -> None:
199
199
  assert argv[argv.index("--allowedTools") + 1] == legacy_at
200
200
 
201
201
 
202
- @pytest.mark.parametrize("spec_type", ["work", "review", "conflict-fix", "fix"])
202
+ @pytest.mark.parametrize("spec_type", ["work", "conflict-fix", "fix"])
203
203
  def test_pty_build_command_branches_match_claude_for_work_type(spec_type: str) -> None:
204
204
  """#2169: the generic-worker (``else``) branch must stay in parity too.
205
205
 
@@ -215,7 +215,10 @@ def test_pty_build_command_branches_match_claude_for_work_type(spec_type: str) -
215
215
  ``else`` branch; #2301 gave it a branch of its own, so its parity is
216
216
  guarded by
217
217
  :func:`test_pty_build_command_smoke_branch_matches_claude_and_withholds_monitor`
218
- below instead.
218
+ below instead. ``review`` likewise used to fall through here; #2461 gave
219
+ it its own branch (read-only, no Edit/Write/Monitor — see
220
+ ``coord.agent.REVIEW_DENY_COMMANDS``), guarded by
221
+ :func:`test_pty_build_command_review_branch_matches_claude_and_withholds_monitor`.
219
222
  """
220
223
  spec = _make_spec(type=spec_type)
221
224
  argv = ClaudePtyProvider().build_command(spec)
@@ -256,6 +259,35 @@ def test_pty_build_command_smoke_branch_matches_claude_and_withholds_monitor() -
256
259
  assert "Monitor" not in pty_at.split(",")
257
260
 
258
261
 
262
+ def test_pty_build_command_review_branch_matches_claude_and_withholds_monitor() -> None:
263
+ """#2461: the review branch is another call site of the same logic.
264
+
265
+ ``default_worker_command`` and ``ClaudeProvider.build_command`` both give
266
+ ``spec.type == "review"`` its own branch — ``REVIEWER_SYSTEM_PROMPT``
267
+ plus ``Read,Bash`` only, deliberately withholding ``Monitor`` (a review
268
+ leg is a one-shot ``claude -p`` session per #1394) and Edit/Write (a
269
+ reviewer reads the diff and reports a verdict; it must not modify the
270
+ PR's code). ``ClaudePtyProvider.build_command`` must not drift from
271
+ them — mirrors
272
+ :func:`test_pty_build_command_smoke_branch_matches_claude_and_withholds_monitor`.
273
+ """
274
+ from coord.review import REVIEWER_SYSTEM_PROMPT
275
+
276
+ spec = _make_spec(type="review", review_target="123")
277
+ argv = ClaudePtyProvider().build_command(spec)
278
+ legacy = default_worker_command(spec)
279
+ legacy_sp = legacy[legacy.index("--system-prompt") + 1]
280
+ legacy_at = legacy[legacy.index("--allowedTools") + 1]
281
+ pty_sp = argv[argv.index("--system-prompt") + 1]
282
+ pty_at = argv[argv.index("--allowedTools") + 1]
283
+ assert pty_sp == legacy_sp
284
+ assert pty_at == legacy_at
285
+ # Pin the values too, so a *matched* regression on both sides still fails.
286
+ assert pty_sp.startswith(REVIEWER_SYSTEM_PROMPT)
287
+ assert pty_at == "Read,Bash"
288
+ assert "Monitor" not in pty_at.split(",")
289
+
290
+
259
291
  def test_pty_build_command_smoke_honours_explicit_system_prompt() -> None:
260
292
  """#2301: the new smoke branch must still respect ``spec.system_prompt``
261
293
  (the dispatcher's per-run briefing prompt) rather than always forcing
@@ -124,20 +124,39 @@ def test_default_worker_command_grants_monitor_for_work_type() -> None:
124
124
  assert tool in allowed.split(",")
125
125
 
126
126
 
127
- @pytest.mark.parametrize("spec_type", ["review", "fix", "conflict-fix"])
127
+ @pytest.mark.parametrize("spec_type", ["fix", "conflict-fix"])
128
128
  def test_default_worker_command_other_write_types_also_get_monitor(spec_type: str) -> None:
129
- """`review`/`fix`/`conflict-fix` all fall through the same `else` branch
130
- as `work` — confirm the grant isn't accidentally work-only.
129
+ """`fix`/`conflict-fix` both fall through the same `else` branch as
130
+ `work` — confirm the grant isn't accidentally work-only.
131
131
 
132
132
  `smoke` used to be in this list too, but #2301 gave it its own branch
133
133
  (see test_default_worker_command_smoke_type_withholds_monitor below) —
134
134
  smoke legs are one-shot sessions where an await-a-notification tool
135
- like `Monitor` ends the session before any wake-up can arrive."""
135
+ like `Monitor` ends the session before any wake-up can arrive. `review`
136
+ was removed for the same reason by #2461 (see
137
+ test_default_worker_command_review_type_withholds_monitor below), plus a
138
+ second one: a reviewer has no legitimate mutations at all, so it no
139
+ longer shares the generic write-capable grant."""
136
140
  argv = default_worker_command(_work_spec(type=spec_type))
137
141
  allowed = argv[argv.index("--allowedTools") + 1]
138
142
  assert "Monitor" in allowed.split(",")
139
143
 
140
144
 
145
+ def test_default_worker_command_review_type_withholds_monitor() -> None:
146
+ """#2461: a review leg reads the diff and reports a verdict — it must not
147
+ modify the PR's code, so no Edit/Write, and (the same #1394 reasoning as
148
+ `smoke` below) no `Monitor` either: a one-shot `claude -p` session that
149
+ calls an await-a-notification tool ends before any wake-up can arrive.
150
+
151
+ Before #2461 `review` fell through the generic `else` branch and got the
152
+ full `Read,Edit,Write,Bash,Monitor` work grant, with only
153
+ REVIEWER_SYSTEM_PROMPT's "you only review" prompt text standing between a
154
+ reviewer and a silent commit-and-push."""
155
+ argv = default_worker_command(_work_spec(type="review"))
156
+ allowed = argv[argv.index("--allowedTools") + 1]
157
+ assert allowed == "Read,Bash"
158
+
159
+
141
160
  def test_default_worker_command_smoke_type_withholds_monitor() -> None:
142
161
  """#2301: a smoke leg is a one-shot `claude -p` session (#1394) — calling
143
162
  `Monitor` there ends the session permanently before any notification can