code-coordinator 0.5.227__tar.gz → 0.5.228__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 (810) hide show
  1. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/conflict_fix.py +295 -1
  5. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/models.py +10 -0
  6. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/notify.py +73 -39
  7. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_conflict_fix.py +354 -1
  8. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_stalled_pipeline.py +109 -3
  9. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/.claude/commands/board.md +0 -0
  10. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/.claude/commands/complete-session.md +0 -0
  11. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/.claude/commands/coordinator.md +0 -0
  12. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/.githooks/_lib.sh +0 -0
  13. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/.githooks/post-checkout +0 -0
  14. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/.githooks/post-commit +0 -0
  15. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/.githooks/post-merge +0 -0
  16. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  17. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/.github/coord-ci-acceptance.yml +0 -0
  18. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/.github/workflows/auto-release.yml +0 -0
  19. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/.github/workflows/cargo-test.yml +0 -0
  20. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/.github/workflows/publish.yml +0 -0
  21. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/.github/workflows/release-tui.yml +0 -0
  22. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/.github/workflows/test.yml +0 -0
  23. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/.gitignore +0 -0
  24. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/CLAUDE.md +0 -0
  25. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/GOAL.md +0 -0
  26. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/LICENSE +0 -0
  27. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/MANIFEST.in +0 -0
  28. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/README.md +0 -0
  29. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/code_coordinator.egg-info/SOURCES.txt +0 -0
  30. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/code_coordinator.egg-info/dependency_links.txt +0 -0
  31. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/code_coordinator.egg-info/entry_points.txt +0 -0
  32. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/code_coordinator.egg-info/requires.txt +0 -0
  33. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/code_coordinator.egg-info/scm_file_list.json +0 -0
  34. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/code_coordinator.egg-info/top_level.txt +0 -0
  35. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/__init__.py +0 -0
  36. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/_board_mapping.py +0 -0
  37. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/acceptance.py +0 -0
  38. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/acceptance_drivers.py +0 -0
  39. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/agent.py +0 -0
  40. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/agent_app.py +0 -0
  41. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/agent_update.py +0 -0
  42. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/agents/opencode/.gitignore +0 -0
  43. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/agents/opencode/agents/work.md +0 -0
  44. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/agents/opencode/routing.jsonc +0 -0
  45. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/approved_work.py +0 -0
  46. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/audit.py +0 -0
  47. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/auto_loop.py +0 -0
  48. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/block_log.py +0 -0
  49. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/board_bool_guard.py +0 -0
  50. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/board_service.py +0 -0
  51. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/board_wire.py +0 -0
  52. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/brain.py +0 -0
  53. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/branch_model.py +0 -0
  54. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/bug_intake.py +0 -0
  55. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/cargo_cache.py +0 -0
  56. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/ci_fix.py +0 -0
  57. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/ci_github.py +0 -0
  58. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/ci_gitlab.py +0 -0
  59. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/ci_store.py +0 -0
  60. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/claim.py +0 -0
  61. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/cli.py +0 -0
  62. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/client.py +0 -0
  63. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/__init__.py +0 -0
  64. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/_common.py +0 -0
  65. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/acceptance.py +0 -0
  66. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/agent_ops.py +0 -0
  67. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/audit.py +0 -0
  68. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/chat.py +0 -0
  69. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/dispatch.py +0 -0
  70. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/dispatch_workers.py +0 -0
  71. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/drive.py +0 -0
  72. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/drive_queue.py +0 -0
  73. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/gate_a.py +0 -0
  74. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/gates.py +0 -0
  75. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/issues.py +0 -0
  76. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/lifecycle.py +0 -0
  77. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/merge.py +0 -0
  78. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/milestone.py +0 -0
  79. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/plan_followup.py +0 -0
  80. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/plans.py +0 -0
  81. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/portal.py +0 -0
  82. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/release.py +0 -0
  83. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/repo.py +0 -0
  84. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/report.py +0 -0
  85. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/review.py +0 -0
  86. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/scorecard.py +0 -0
  87. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/sessions.py +0 -0
  88. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/setup.py +0 -0
  89. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/status.py +0 -0
  90. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/terminal.py +0 -0
  91. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/test_gate.py +0 -0
  92. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/commands/tui.py +0 -0
  93. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/comments.py +0 -0
  94. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/config.py +0 -0
  95. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/config_reload.py +0 -0
  96. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/confirm_test.py +0 -0
  97. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/dao.py +0 -0
  98. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/dashboard/__init__.py +0 -0
  99. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/dashboard/fixture.py +0 -0
  100. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/dashboard/index.html +0 -0
  101. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/dashboard/server.py +0 -0
  102. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/dashboard/terminal.py +0 -0
  103. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/db.py +0 -0
  104. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/dead_end.py +0 -0
  105. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/README.md +0 -0
  106. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-agent.service +0 -0
  107. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-db-backup.service +0 -0
  108. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-db-backup.sh +0 -0
  109. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-db-backup.timer +0 -0
  110. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-drive-queue.service +0 -0
  111. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-drive-queue.timer +0 -0
  112. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-notify.service +0 -0
  113. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-notify.timer +0 -0
  114. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-release-propagate.service +0 -0
  115. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-release-propagate.timer +0 -0
  116. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-release-window.service +0 -0
  117. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-release-window.timer +0 -0
  118. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-serve.service +0 -0
  119. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-web-dist-build.service +0 -0
  120. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-web-dist-build.timer +0 -0
  121. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy/coord-web.service +0 -0
  122. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy_manifest.py +0 -0
  123. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deploy_units.py +0 -0
  124. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/deps.py +0 -0
  125. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/diagnose.py +0 -0
  126. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/dispatch.py +0 -0
  127. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/dist_name.py +0 -0
  128. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/drive.py +0 -0
  129. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/drive_queue.py +0 -0
  130. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/drive_state.py +0 -0
  131. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/events.py +0 -0
  132. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/failure_class.py +0 -0
  133. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/filelock.py +0 -0
  134. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/fleet_config_health.py +0 -0
  135. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/forge_availability.py +0 -0
  136. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/freshness.py +0 -0
  137. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/gate_a.py +0 -0
  138. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/gate_b.py +0 -0
  139. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/gate_snapshot.py +0 -0
  140. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/gates.py +0 -0
  141. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/github_ops.py +0 -0
  142. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/goal.py +0 -0
  143. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/graph_health.py +0 -0
  144. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/__init__.py +0 -0
  145. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/aggregate.py +0 -0
  146. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/__init__.py +0 -0
  147. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/agent_install.py +0 -0
  148. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/cargo_targets.py +0 -0
  149. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/claude_binary.py +0 -0
  150. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/coord_web_ci_pin.py +0 -0
  151. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/deploy_lane_facts.py +0 -0
  152. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/disk.py +0 -0
  153. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/fleet_board.py +0 -0
  154. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  155. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/fleet_phantom.py +0 -0
  156. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/fleet_unit_drift.py +0 -0
  157. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/graph.py +0 -0
  158. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/graphify_cli.py +0 -0
  159. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/index_lock.py +0 -0
  160. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/plan_usage.py +0 -0
  161. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/repo_state.py +0 -0
  162. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/spawned_coord.py +0 -0
  163. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/timer_active.py +0 -0
  164. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/toolchain.py +0 -0
  165. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/unit_drift.py +0 -0
  166. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/unit_enablement.py +0 -0
  167. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/checks/worktrees.py +0 -0
  168. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/cli.py +0 -0
  169. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/context.py +0 -0
  170. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/fleet_snapshot.py +0 -0
  171. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/models.py +0 -0
  172. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/pypi.py +0 -0
  173. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/registry.py +0 -0
  174. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/render.py +0 -0
  175. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/health/units.py +0 -0
  176. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/hooks.py +0 -0
  177. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/housekeeping.py +0 -0
  178. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/interactive.py +0 -0
  179. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/issue_store.py +0 -0
  180. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/liveness_auditor.py +0 -0
  181. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/machine_pause.py +0 -0
  182. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/merge_queue.py +0 -0
  183. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/milestone_chat.py +0 -0
  184. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/milestone_dispatch.py +0 -0
  185. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/milestone_gate.py +0 -0
  186. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/milestone_order.py +0 -0
  187. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/mock_author.py +0 -0
  188. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/network.py +0 -0
  189. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/new_issue_chat.py +0 -0
  190. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/notifier/__init__.py +0 -0
  191. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/notifier/baseline.py +0 -0
  192. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/notifier/cli.py +0 -0
  193. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/notifier/collect.py +0 -0
  194. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/notifier/digest.py +0 -0
  195. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/notifier/models.py +0 -0
  196. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/notifier/predicate.py +0 -0
  197. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/notifier/service.py +0 -0
  198. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/notifier/store.py +0 -0
  199. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/notifier/transport.py +0 -0
  200. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/openapi.py +0 -0
  201. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/overlap_fence.py +0 -0
  202. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/overlap_predict.py +0 -0
  203. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/parentage.py +0 -0
  204. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/parentage_github.py +0 -0
  205. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/pipeline.py +0 -0
  206. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/plan_parser.py +0 -0
  207. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/plans.py +0 -0
  208. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/platform_paths.py +0 -0
  209. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/portal_bridge.py +0 -0
  210. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/portal_store.py +0 -0
  211. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/portal_sync.py +0 -0
  212. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/pr_body_lint.py +0 -0
  213. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/prereqs.py +0 -0
  214. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/progress.py +0 -0
  215. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/providers/__init__.py +0 -0
  216. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/providers/base.py +0 -0
  217. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/providers/claude.py +0 -0
  218. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/providers/claude_pty.py +0 -0
  219. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/providers/opencode.py +0 -0
  220. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/queue_diagnose.py +0 -0
  221. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/reconcile.py +0 -0
  222. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/reconcile_tick.py +0 -0
  223. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/refine_chat.py +0 -0
  224. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/release_cordon.py +0 -0
  225. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/release_propagate.py +0 -0
  226. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/release_verify.py +0 -0
  227. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/release_window.py +0 -0
  228. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/repo_edit.py +0 -0
  229. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/repo_onboard.py +0 -0
  230. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/reports.py +0 -0
  231. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/revalidate.py +0 -0
  232. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/review.py +0 -0
  233. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/scorecard.py +0 -0
  234. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/self_health.py +0 -0
  235. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/serve_app.py +0 -0
  236. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  237. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  238. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  239. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  240. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  241. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/skills/portal-followup/SKILL.md +0 -0
  242. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  243. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  244. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/skills/update-issue/SKILL.md +0 -0
  245. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/smoke.py +0 -0
  246. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/spend_ceiling.py +0 -0
  247. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/split_work.py +0 -0
  248. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/stage_projection.py +0 -0
  249. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/state.py +0 -0
  250. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/test_author.py +0 -0
  251. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/test_chat.py +0 -0
  252. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/test_orchestrator.py +0 -0
  253. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/test_report.py +0 -0
  254. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/tui_release.py +0 -0
  255. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/usage.py +0 -0
  256. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/usage_limits.py +0 -0
  257. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/usage_rollup.py +0 -0
  258. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coord/worker_events.py +0 -0
  259. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/coordinator.example.yml +0 -0
  260. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-agent.service +0 -0
  261. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-db-backup.service +0 -0
  262. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-db-backup.sh +0 -0
  263. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-db-backup.timer +0 -0
  264. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-drive-queue.service +0 -0
  265. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-drive-queue.timer +0 -0
  266. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-notify.service +0 -0
  267. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-notify.timer +0 -0
  268. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-release-propagate.service +0 -0
  269. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-release-propagate.timer +0 -0
  270. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-release-window.service +0 -0
  271. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-release-window.timer +0 -0
  272. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-serve.service +0 -0
  273. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-web-dist-build.service +0 -0
  274. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-web-dist-build.sh +0 -0
  275. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-web-dist-build.timer +0 -0
  276. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-web-rollback.sh +0 -0
  277. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/coord-web.service +0 -0
  278. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/deploy/node-shim.sh +0 -0
  279. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  280. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/ADR_COORD_WEB_CI.md +0 -0
  281. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/ADR_COORD_WEB_DIST.md +0 -0
  282. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/AGENT_OPERATIONS.md +0 -0
  283. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/ARCHITECTURE.md +0 -0
  284. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/ARCH_SECURITY_GATES.md +0 -0
  285. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/COCKPIT.md +0 -0
  286. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/CONTROL_CENTER.md +0 -0
  287. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/COST_DISCIPLINE.md +0 -0
  288. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/CROSS_PLATFORM.md +0 -0
  289. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/CUSTOMER_PORTAL.md +0 -0
  290. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/DRIVE_QUEUE.md +0 -0
  291. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/EPHEMERAL_WORKERS.md +0 -0
  292. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/FORGE_MIGRATION.md +0 -0
  293. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/GRAPHIFY_SETUP.md +0 -0
  294. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/ISSUE_GUIDANCE.md +0 -0
  295. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/MAC_MINI.md +0 -0
  296. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  297. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/NOTIFIER.md +0 -0
  298. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/OPENCODE_VERIFICATION.md +0 -0
  299. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/OPERATING_GOTCHAS.md +0 -0
  300. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/ORACLE_LOOP.md +0 -0
  301. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/PHONE_WEBAPP.md +0 -0
  302. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/PIPELINE_V2.md +0 -0
  303. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/PLATFORM_EVOLUTION.md +0 -0
  304. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/SECOND_BACKEND.md +0 -0
  305. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/STORE_SERVICE.md +0 -0
  306. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  307. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/WEB_CONTROL_CENTER.md +0 -0
  308. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/WSL_WINDOWS_WORKER.md +0 -0
  309. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/mocks/web/README.md +0 -0
  310. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/mocks/web/_tokens.css +0 -0
  311. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/mocks/web/issue-detail.html +0 -0
  312. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/mocks/web/pipeline-narrow.html +0 -0
  313. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/docs/mocks/web/pipeline-wide.html +0 -0
  314. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/graphify-out/.gitignore +0 -0
  315. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/install-agent.sh +0 -0
  316. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/pyproject.toml +0 -0
  317. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/audit_review_verdict_overrides.py +0 -0
  318. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  319. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/azure-workers/build-worker-image.sh +0 -0
  320. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/azure-workers/coordinator-machine.py +0 -0
  321. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/azure-workers/epic-down.sh +0 -0
  322. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/azure-workers/epic-up.sh +0 -0
  323. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/azure-workers/preflight.sh +0 -0
  324. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/azure-workers/provision-worker.sh +0 -0
  325. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  326. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  327. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/azure-workers/verify-github-token.sh +0 -0
  328. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/check_gh_argv_containment.py +0 -0
  329. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/codegen.py +0 -0
  330. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/coord-test-runner.sh +0 -0
  331. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/drive-batch.sh +0 -0
  332. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/gen_board_fixture.py +0 -0
  333. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/gen_mock_index.py +0 -0
  334. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/next_release_tag.py +0 -0
  335. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/run_tests_in_populated_home.sh +0 -0
  336. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/run_tests_without_gh.sh +0 -0
  337. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/smoke_437_interactive.py +0 -0
  338. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/verify_878_review_capture.py +0 -0
  339. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/verify_release_published.py +0 -0
  340. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/scripts/verify_release_wheel.py +0 -0
  341. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/setup.cfg +0 -0
  342. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/SMOKE_SET.md +0 -0
  343. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/__init__.py +0 -0
  344. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  345. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-33/contract.md +0 -0
  346. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-33/manifest.yml +0 -0
  347. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  348. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  349. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  350. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  351. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-37/conftest.py +0 -0
  352. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-37/contract.md +0 -0
  353. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-37/manifest.yml +0 -0
  354. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  355. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  356. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-38/contract.md +0 -0
  357. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-38/manifest.yml +0 -0
  358. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  359. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  360. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  361. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  362. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  363. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  364. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  365. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  366. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  367. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  368. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-51/contract.md +0 -0
  369. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  370. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  371. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-51/manifest.yml +0 -0
  372. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  373. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-51/tsconfig.json +0 -0
  374. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  375. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  376. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  377. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/contract.md +0 -0
  378. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  379. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/manifest.yml +0 -0
  380. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  381. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  382. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  383. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  384. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  385. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  386. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  387. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  388. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  389. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  390. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  391. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
  392. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-67/contract.md +0 -0
  393. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-67/manifest.yml +0 -0
  394. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
  395. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
  396. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
  397. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
  398. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
  399. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  400. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/conftest.py +0 -0
  401. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/board-pipeline-basic.json +0 -0
  402. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  403. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  404. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  405. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  406. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/playwright/all_pass.json +0 -0
  407. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  408. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/playwright/mixed_fail.json +0 -0
  409. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  410. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  411. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/playwright/skip.json +0 -0
  412. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/playwright/truncated.json +0 -0
  413. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  414. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  415. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  416. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  417. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  418. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  419. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  420. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  421. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_acceptance.py +0 -0
  422. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_acceptance_drivers.py +0 -0
  423. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent.py +0 -0
  424. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_api_error.py +0 -0
  425. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_app.py +0 -0
  426. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_branch_base.py +0 -0
  427. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_branch_capture.py +0 -0
  428. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_config_free_1712.py +0 -0
  429. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_deploy_units_endpoint.py +0 -0
  430. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_dirty_worktree.py +0 -0
  431. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  432. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_graph_self_heal.py +0 -0
  433. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_health_h3.py +0 -0
  434. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_idle_restart.py +0 -0
  435. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_push_failure.py +0 -0
  436. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_reap.py +0 -0
  437. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_repos_and_pull.py +0 -0
  438. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_restart_services_endpoint.py +0 -0
  439. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_skills_self_heal.py +0 -0
  440. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_startup_diagnostics.py +0 -0
  441. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_update.py +0 -0
  442. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_update_bluegreen.py +0 -0
  443. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_usage_limit.py +0 -0
  444. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_agent_zero_commit.py +0 -0
  445. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_ambient_home_isolation.py +0 -0
  446. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_approve_reject_plan.py +0 -0
  447. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_approve_usage_gate.py +0 -0
  448. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_approved_work_2532.py +0 -0
  449. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_assignment_already_recorded_daemon.py +0 -0
  450. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_audit_log.py +0 -0
  451. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_audit_outcome.py +0 -0
  452. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_audit_query.py +0 -0
  453. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_auto_loop.py +0 -0
  454. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_auto_release_publish_2035.py +0 -0
  455. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_base_checkout_restore.py +0 -0
  456. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_block_log.py +0 -0
  457. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_board_cap_762.py +0 -0
  458. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_board_fixture.py +0 -0
  459. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_board_read_path.py +0 -0
  460. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_board_service.py +0 -0
  461. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_board_state.py +0 -0
  462. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_board_wire.py +0 -0
  463. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_brain.py +0 -0
  464. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_branch_model.py +0 -0
  465. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_bug_intake.py +0 -0
  466. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_build_worker_image_env_update.py +0 -0
  467. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cargo_cache.py +0 -0
  468. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_check_gh_argv_containment.py +0 -0
  469. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_ci_acceptance_gate_1950.py +0 -0
  470. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_ci_fix.py +0 -0
  471. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_ci_gitlab.py +0 -0
  472. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_ci_parity_2091.py +0 -0
  473. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_ci_store.py +0 -0
  474. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_claim.py +0 -0
  475. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_acceptance.py +0 -0
  476. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_assign.py +0 -0
  477. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  478. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_assign_interactive_remote.py +0 -0
  479. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_assign_provider.py +0 -0
  480. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  481. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_audit.py +0 -0
  482. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_chat_continue.py +0 -0
  483. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_decide.py +0 -0
  484. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_diagnose_config_provenance.py +0 -0
  485. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_diagnose_forge_availability.py +0 -0
  486. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_diagnose_graph.py +0 -0
  487. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_diagnose_self.py +0 -0
  488. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_doctor.py +0 -0
  489. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_doctor_config_free_1801.py +0 -0
  490. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  491. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_drive.py +0 -0
  492. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_drive_queue.py +0 -0
  493. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_escalate.py +0 -0
  494. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_fix_headless_review.py +0 -0
  495. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_gate_a.py +0 -0
  496. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_install_drift.py +0 -0
  497. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_install_skills.py +0 -0
  498. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_issue_create_label.py +0 -0
  499. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_issue_reopen.py +0 -0
  500. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_merge.py +0 -0
  501. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_milestone_assign.py +0 -0
  502. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_milestone_capture.py +0 -0
  503. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_milestone_chat_add_child.py +0 -0
  504. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_milestone_dispatch.py +0 -0
  505. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_milestone_gate_b.py +0 -0
  506. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_milestone_gate_c.py +0 -0
  507. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_milestone_order.py +0 -0
  508. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  509. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_milestone_ship.py +0 -0
  510. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_network.py +0 -0
  511. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_new_issue_chat.py +0 -0
  512. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_plans.py +0 -0
  513. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_portal.py +0 -0
  514. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_pull_artifact.py +0 -0
  515. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_queue.py +0 -0
  516. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_reattach_sessions.py +0 -0
  517. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_refine_board.py +0 -0
  518. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_release_preflight.py +0 -0
  519. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_release_propagate.py +0 -0
  520. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_release_window.py +0 -0
  521. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_repo_2220.py +0 -0
  522. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_scorecard.py +0 -0
  523. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_set_review_findings.py +0 -0
  524. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_status_advisory_terminal.py +0 -0
  525. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_status_merge_queue.py +0 -0
  526. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_status_provider.py +0 -0
  527. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_status_review_finalizing.py +0 -0
  528. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_status_test_failed_tag.py +0 -0
  529. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_status_usage_limit.py +0 -0
  530. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_sync_comments_873.py +0 -0
  531. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_test_plan.py +0 -0
  532. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_track.py +0 -0
  533. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_tui_update.py +0 -0
  534. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cli_wait.py +0 -0
  535. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_client_base_install.py +0 -0
  536. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_comments.py +0 -0
  537. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_completion_summary.py +0 -0
  538. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_config.py +0 -0
  539. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_config_acceptance.py +0 -0
  540. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_config_audit.py +0 -0
  541. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_config_pricing.py +0 -0
  542. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  543. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_config_usage_gate.py +0 -0
  544. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_confirm_test.py +0 -0
  545. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_conflict_fix_semantic.py +0 -0
  546. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_coord_test.py +0 -0
  547. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_coord_test_runner_baseline.py +0 -0
  548. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_coord_test_runner_populated_home.py +0 -0
  549. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_coord_test_runner_routing.py +0 -0
  550. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_coord_test_runner_toolchain.py +0 -0
  551. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_coord_web_sse_restart_live.py +0 -0
  552. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_coordinator_machine.py +0 -0
  553. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_cross_platform_imports.py +0 -0
  554. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_dashboard.py +0 -0
  555. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_dashboard_fixture.py +0 -0
  556. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_dashboard_terminal.py +0 -0
  557. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_dashboard_terminal_live.py +0 -0
  558. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_db.py +0 -0
  559. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_dead_end.py +0 -0
  560. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_deploy_coord_db_backup.py +0 -0
  561. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_deploy_coord_web_dist.py +0 -0
  562. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_deploy_coord_web_rollback.py +0 -0
  563. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_deploy_drive_queue_unit.py +0 -0
  564. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_deploy_manifest.py +0 -0
  565. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_deploy_notify_unit.py +0 -0
  566. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_deploy_units_lane.py +0 -0
  567. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_deploy_web_unit.py +0 -0
  568. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_deps.py +0 -0
  569. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_diagnose.py +0 -0
  570. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_dispatch.py +0 -0
  571. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_dispatch_target_validation.py +0 -0
  572. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_dist_name.py +0 -0
  573. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_done_housekeeping.py +0 -0
  574. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_drive.py +0 -0
  575. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_drive_queue.py +0 -0
  576. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_drive_state.py +0 -0
  577. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_drive_tmux.py +0 -0
  578. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_epic_up_capability_detection.py +0 -0
  579. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  580. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_epic_up_image_provenance.py +0 -0
  581. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_errors.py +0 -0
  582. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_events.py +0 -0
  583. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_failure_class.py +0 -0
  584. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_filelock.py +0 -0
  585. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  586. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_fix_of_force_override.py +0 -0
  587. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_fleet_config_health.py +0 -0
  588. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_fleet_health_probes.py +0 -0
  589. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_fleet_health_snapshot.py +0 -0
  590. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_forge_availability.py +0 -0
  591. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_freshness.py +0 -0
  592. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_gate_a.py +0 -0
  593. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_gate_b.py +0 -0
  594. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_gate_snapshot_staleness.py +0 -0
  595. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_gates.py +0 -0
  596. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  597. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_gen_mock_index.py +0 -0
  598. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_generated_types_fixture.py +0 -0
  599. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_github_ops.py +0 -0
  600. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_goal.py +0 -0
  601. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_graph_health.py +0 -0
  602. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_graph_selfheal_absent_2237.py +0 -0
  603. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_handoff.py +0 -0
  604. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_health_checks.py +0 -0
  605. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_health_cli.py +0 -0
  606. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_health_cli_graph.py +0 -0
  607. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_health_config.py +0 -0
  608. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_health_context.py +0 -0
  609. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_health_coord_web_ci_pin.py +0 -0
  610. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_health_deploy_lane_facts.py +0 -0
  611. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_health_incident_regression.py +0 -0
  612. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_health_pypi.py +0 -0
  613. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_health_registry.py +0 -0
  614. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_health_timer_active.py +0 -0
  615. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_health_toolchain.py +0 -0
  616. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_health_unit_drift.py +0 -0
  617. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_health_unit_enablement.py +0 -0
  618. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_hooks.py +0 -0
  619. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_human_attended_437.py +0 -0
  620. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_init.py +0 -0
  621. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_integration.py +0 -0
  622. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_interactive_briefing_echo.py +0 -0
  623. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_interactive_prefill_state.py +0 -0
  624. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_interactive_session_relaunch.py +0 -0
  625. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_interactive_test_verdict_backstop.py +0 -0
  626. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_interactive_token_attribution.py +0 -0
  627. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_interactive_worktree.py +0 -0
  628. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_issue_store_seam.py +0 -0
  629. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_liveness_auditor.py +0 -0
  630. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_liveness_notify.py +0 -0
  631. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_machine_pause.py +0 -0
  632. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_merge_queue.py +0 -0
  633. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_merge_verify.py +0 -0
  634. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_milestone_chat.py +0 -0
  635. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_milestone_dispatch.py +0 -0
  636. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_milestone_gate.py +0 -0
  637. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_milestone_order.py +0 -0
  638. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_milestone_seam.py +0 -0
  639. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_mock_author.py +0 -0
  640. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_model_tiering.py +0 -0
  641. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_models.py +0 -0
  642. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_models_config_labels.py +0 -0
  643. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_needs_attention.py +0 -0
  644. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_network.py +0 -0
  645. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_new_issue_chat.py +0 -0
  646. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_next_release_tag.py +0 -0
  647. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_node_shim.py +0 -0
  648. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_notifier_baseline.py +0 -0
  649. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_notifier_cli.py +0 -0
  650. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_notifier_collect.py +0 -0
  651. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_notifier_config.py +0 -0
  652. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_notifier_drive_seam.py +0 -0
  653. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_notifier_isolation.py +0 -0
  654. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_notifier_predicate.py +0 -0
  655. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_notifier_quiet_hours.py +0 -0
  656. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_notifier_service.py +0 -0
  657. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_notify.py +0 -0
  658. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_notify_drain.py +0 -0
  659. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_openapi.py +0 -0
  660. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_operational_defaults.py +0 -0
  661. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_overlap_fence.py +0 -0
  662. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_overlap_predict.py +0 -0
  663. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_packaged_deploy_units.py +0 -0
  664. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_parentage.py +0 -0
  665. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_paste_landed.py +0 -0
  666. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_pipeline.py +0 -0
  667. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_plan_followup_approve_plan_command.py +0 -0
  668. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_plan_followup_pr_command.py +0 -0
  669. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_plan_followup_review_command.py +0 -0
  670. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_plan_only.py +0 -0
  671. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_plan_parser.py +0 -0
  672. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_platform_paths.py +0 -0
  673. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_portal_bridge.py +0 -0
  674. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_portal_config.py +0 -0
  675. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_portal_store.py +0 -0
  676. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_portal_sync.py +0 -0
  677. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_pr_body_lint.py +0 -0
  678. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_prereqs.py +0 -0
  679. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_production_db_guard.py +0 -0
  680. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_progress.py +0 -0
  681. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_provider_seam.py +0 -0
  682. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_providers.py +0 -0
  683. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_providers_config_labels.py +0 -0
  684. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_providers_pty.py +0 -0
  685. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_quiet_hours.py +0 -0
  686. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_quiet_hours_store_2146.py +0 -0
  687. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_reap_merged_sessions.py +0 -0
  688. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_reap_stale_interactive_tick.py +0 -0
  689. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_reconcile.py +0 -0
  690. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_reconcile_branch.py +0 -0
  691. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_reconcile_completions.py +0 -0
  692. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_reconcile_merges.py +0 -0
  693. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_reconcile_no_agent_record.py +0 -0
  694. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_reconcile_tick.py +0 -0
  695. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_reconcile_usage_limit_done.py +0 -0
  696. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_refine_chat.py +0 -0
  697. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_release_cordon_2101.py +0 -0
  698. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  699. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_release_cordon_deadlock_2240.py +0 -0
  700. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_release_cordon_stuck_2490.py +0 -0
  701. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_release_propagate.py +0 -0
  702. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_release_unified_1242.py +0 -0
  703. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_release_verify.py +0 -0
  704. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_release_window.py +0 -0
  705. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_remote_auto_prune.py +0 -0
  706. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_remote_interactive_reaper.py +0 -0
  707. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_repo_edit_2220.py +0 -0
  708. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_repo_graph_fleet_2237.py +0 -0
  709. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_repo_onboard_2220.py +0 -0
  710. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_report_result_push.py +0 -0
  711. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_reports.py +0 -0
  712. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_retry.py +0 -0
  713. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_retry_advisory_1606.py +0 -0
  714. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_retry_type_1636.py +0 -0
  715. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_revalidate.py +0 -0
  716. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_review.py +0 -0
  717. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_review_end_review_without_verdict.py +0 -0
  718. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_review_parse_failure_diagnostic.py +0 -0
  719. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_review_reaffirm.py +0 -0
  720. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_review_state.py +0 -0
  721. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_review_verdict_backstop.py +0 -0
  722. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_review_verdict_override_audit.py +0 -0
  723. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_review_verdict_relay.py +0 -0
  724. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_review_zero_commits.py +0 -0
  725. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_scoped_review_wiring.py +0 -0
  726. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_scorecard.py +0 -0
  727. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_self_health.py +0 -0
  728. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_serve.py +0 -0
  729. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_serve_app_board_trim.py +0 -0
  730. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_session.py +0 -0
  731. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_slice_issue_attribution.py +0 -0
  732. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_smoke.py +0 -0
  733. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_smoke_live_checkout_restore.py +0 -0
  734. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_smoke_workflow.py +0 -0
  735. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_spend_ceiling.py +0 -0
  736. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_spend_ceiling_coordinator.py +0 -0
  737. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_split.py +0 -0
  738. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_split_work.py +0 -0
  739. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_stage_projection.py +0 -0
  740. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_state.py +0 -0
  741. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_state_review_findings_daemon.py +0 -0
  742. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_status_fleet_footer.py +0 -0
  743. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_stop_1567.py +0 -0
  744. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_stuck.py +0 -0
  745. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_terminal_command.py +0 -0
  746. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_test_author.py +0 -0
  747. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_test_chat.py +0 -0
  748. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_test_orchestrator.py +0 -0
  749. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_test_report.py +0 -0
  750. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_test_verdict_parsing.py +0 -0
  751. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_test_verdict_transcript_floor.py +0 -0
  752. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_thin_client_board_audit.py +0 -0
  753. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_thin_client_config_load_1080.py +0 -0
  754. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_thin_client_daemon_routing_906.py +0 -0
  755. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_tmux_host.py +0 -0
  756. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_tmux_session.py +0 -0
  757. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_transcript_floor.py +0 -0
  758. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_usage.py +0 -0
  759. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_usage_limits.py +0 -0
  760. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_usage_rollup.py +0 -0
  761. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_venv_live_install_2121.py +0 -0
  762. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_version_single_source.py +0 -0
  763. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_watch.py +0 -0
  764. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  765. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_worker_events.py +0 -0
  766. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_worker_image_pin_sync.py +0 -0
  767. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_worker_safety.py +0 -0
  768. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_worker_test_scoping.py +0 -0
  769. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_worktree.py +0 -0
  770. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  771. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/Cargo.lock +0 -0
  772. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/Cargo.toml +0 -0
  773. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/cargo-config-local-quadraui.toml.example +0 -0
  774. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/approved.rs +0 -0
  775. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/audit.rs +0 -0
  776. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/chat.rs +0 -0
  777. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/data.rs +0 -0
  778. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/dialogs.rs +0 -0
  779. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/doc_tabs.rs +0 -0
  780. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/drive.rs +0 -0
  781. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/drive_queue.rs +0 -0
  782. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/escalation.rs +0 -0
  783. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/events.rs +0 -0
  784. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/fixtures.rs +0 -0
  785. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/fleet_health.rs +0 -0
  786. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/fleet_sessions.rs +0 -0
  787. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/fleet_terminals.rs +0 -0
  788. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/format.rs +0 -0
  789. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/milestone_dag.rs +0 -0
  790. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/mod.rs +0 -0
  791. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/msv.rs +0 -0
  792. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/pipeline.rs +0 -0
  793. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/plans.rs +0 -0
  794. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/render.rs +0 -0
  795. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/reports.rs +0 -0
  796. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/sessions.rs +0 -0
  797. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/settings_ui.rs +0 -0
  798. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/sidebar.rs +0 -0
  799. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/terminal.rs +0 -0
  800. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/tests.rs +0 -0
  801. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/types.rs +0 -0
  802. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/app/workspace.rs +0 -0
  803. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/bin/gtk.rs +0 -0
  804. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/commands.rs +0 -0
  805. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/lib.rs +0 -0
  806. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/main.rs +0 -0
  807. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/src/settings.rs +0 -0
  808. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/tests/acceptance.rs +0 -0
  809. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/tui/tests/cli.rs +0 -0
  810. {code_coordinator-0.5.227 → code_coordinator-0.5.228}/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.227
3
+ Version: 0.5.228
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.227
3
+ Version: 0.5.228
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.227",
2
+ "tag": "0.5.228",
3
3
  "distance": 0,
4
- "node": "g4d72834d6806b7c52ef9e25a887a4ddd33fc5427",
4
+ "node": "g3b4de74e0e15d89b4795d8a24a95465d2ac0b416",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-22"
@@ -18,6 +18,19 @@ On success, the coordinator re-enqueues the original merge entry so
18
18
  Why a separate module: same reason :mod:`coord.review` lives apart from
19
19
  ``coord.dispatch`` — conflict-fix is triggered by a merge_queue event, not
20
20
  by a planner proposal, so it shares little with the work-dispatch shape.
21
+
22
+ #2555: a merge conflict on a :data:`coord.models.SEALED_PATH_AUTHOR_TYPES`
23
+ branch (``test-author``/``mock-author``) is a special case — this repo's own
24
+ CLAUDE.md tells every worker to never touch ``tests/acceptance/**``, so the
25
+ *ordinary* conflict-fix worker above structurally refuses the only edit
26
+ that would resolve it (almost always another slice's additive block in the
27
+ milestone's ``manifest.yml``) and no-ops. ``dispatch_conflict_fix`` detects
28
+ this from ``entry.assignment_type`` and dispatches a differently-briefed
29
+ worker instead — see :func:`build_sealed_manifest_conflict_briefing` — that
30
+ is explicitly authorized to resolve a ``manifest.yml`` conflict additively
31
+ and nothing else. It refuses (and the entry escalates to a human exactly
32
+ like any other conflict-fix failure) the moment the conflict reaches beyond
33
+ that one file.
21
34
  """
22
35
 
23
36
  from __future__ import annotations
@@ -30,7 +43,13 @@ import httpx
30
43
  from coord.config import Config
31
44
  from coord.dispatch import AGENT_PORT
32
45
  from coord.merge_queue import QueuedMerge
33
- from coord.models import Assignment, Board, Machine
46
+ from coord.models import (
47
+ SEALED_MANIFEST_FILENAME,
48
+ SEALED_PATH_AUTHOR_TYPES,
49
+ Assignment,
50
+ Board,
51
+ Machine,
52
+ )
34
53
 
35
54
 
36
55
  CONFLICT_FIX_SYSTEM_PROMPT = """\
@@ -183,6 +202,248 @@ def build_semantic_conflict_briefing(
183
202
  return "\n".join(lines)
184
203
 
185
204
 
205
+ # ── #2555: sealed-author (test-author/mock-author) conflict resolution ─────
206
+ #
207
+ # An ordinary conflict-fix worker (the briefing above) is dispatched with the
208
+ # generic CONFLICT_FIX_SYSTEM_PROMPT — no mention of `tests/acceptance/` at
209
+ # all — and every worker session, regardless of `system_prompt`, still gets
210
+ # this repo's own CLAUDE.md loaded, which tells it to never touch
211
+ # `tests/acceptance/**`. For a SEALED_PATH_AUTHOR_TYPES branch that IS almost
212
+ # always exactly where the conflict lives (another slice's block in the
213
+ # milestone's `manifest.yml`), so the ordinary worker structurally refuses
214
+ # the only edit that would resolve it and no-ops — the gap #2555 exists to
215
+ # close. This section gives that class of entry a differently-briefed worker
216
+ # that is explicitly, narrowly authorized to resolve a `manifest.yml`
217
+ # conflict additively, and told to refuse (STUCK, no guessing) the instant
218
+ # the conflict reaches beyond that one file — mirroring the existing
219
+ # mechanical/semantic self-classification pattern above, not a new
220
+ # escalation tier: a sealed-scope refusal has no stronger-model retry,
221
+ # since the file stays sealed regardless of which model resolves it.
222
+
223
+ # Marker a sealed conflict-fix worker's STUCK: line starts with when the
224
+ # conflict reaches outside the one file it's authorized to touch (a test
225
+ # body, contract.md, a mock, a fixture, an entry-point registration, or a
226
+ # manifest.yml edit that isn't a clean additive case). Same shape as
227
+ # SEMANTIC_STUCK_MARKER above — a fixed, machine-parseable string, not prose
228
+ # — but deliberately a DIFFERENT marker: `detect_semantic_conflict`/
229
+ # `semantic_verdict_in_text` must not mistake this for a mechanical/semantic
230
+ # verdict and route it into the (not sealed-aware) stronger-model escalation
231
+ # path, which would just reproduce the same self-refusal one level up.
232
+ SEALED_SCOPE_STUCK_MARKER = "coord:conflict=sealed-scope"
233
+
234
+ # Title prefix for a sealed-author conflict-fix dispatch — visible in the TUI
235
+ # Pipeline row so an operator can tell at a glance that this conflict-fix
236
+ # used the narrower, sealed-aware briefing rather than the ordinary one.
237
+ SEALED_CONFLICT_FIX_TITLE_PREFIX = "[sealed-conflict-fix]"
238
+
239
+ SEALED_MANIFEST_CONFLICT_SYSTEM_PROMPT = f"""\
240
+ You are a Claude Code conflict-fix worker for a SEALED acceptance-oracle \
241
+ branch (a test-author/mock-author slice under `tests/acceptance/`). The \
242
+ merge of this branch into its target failed because the branch is out of \
243
+ date or conflicts with another slice.
244
+
245
+ This repo's CLAUDE.md tells every ordinary worker to never touch \
246
+ `tests/acceptance/**` — that rule keeps the acceptance oracle independent \
247
+ of the workers it grades. It does NOT apply to you for this one narrow \
248
+ purpose: resolving a merge conflict in a milestone's \
249
+ `tests/acceptance/ms-NN/{SEALED_MANIFEST_FILENAME}`, the file every slice \
250
+ under that milestone appends its own block to. You are explicitly \
251
+ authorized to edit ONLY that file, and only additively.
252
+
253
+ Rules:
254
+ - The coordinator denies `gh` and `git push --force` for this worker. \
255
+ Don't try to use them — the harness will reject the call.
256
+ - Stay on the worker's branch — do NOT push to main / develop / target.
257
+ - Use git push --force-with-lease (NOT --force).
258
+ - Rebase onto the target branch. If the ONLY conflict is inside a \
259
+ `{SEALED_MANIFEST_FILENAME}` under `tests/acceptance/`, resolve it \
260
+ ADDITIVELY: keep BOTH sides' issue blocks, without reordering or rewriting \
261
+ any block that isn't yours. Never delete or rewrite another issue's block \
262
+ — this mirrors the "one block per issue, later slices merge in" rule the \
263
+ manifest files document in their own header comment.
264
+ - Do NOT create, edit, or delete ANY OTHER file under `tests/acceptance/` \
265
+ — not a test body, not `contract.md`, not a mock, not a fixture, not an \
266
+ entry-point registration. Those stay sealed even for you.
267
+ - If the conflict is NOT confined to a `{SEALED_MANIFEST_FILENAME}` — it \
268
+ also touches a test body or any other sealed file, OR the \
269
+ `{SEALED_MANIFEST_FILENAME}` conflict itself is not a clean additive case \
270
+ (e.g. the same issue's own block was edited two different ways) — DO NOT \
271
+ GUESS and do NOT touch it. Exit non-zero with a STUCK: line that starts \
272
+ with the exact marker `{SEALED_SCOPE_STUCK_MARKER}` and then names the \
273
+ file(s) in conflict, e.g.
274
+ STUCK: {SEALED_SCOPE_STUCK_MARKER} tests/acceptance/ms-33/audit.rs:1-40 \
275
+ — conflict is in a test body, not {SEALED_MANIFEST_FILENAME}
276
+ The coordinator reads that marker and hands this off to a human — there is \
277
+ no stronger-model retry for this class of conflict, since the file stays \
278
+ sealed regardless of which model resolves it.
279
+
280
+ Progress reporting:
281
+ - After each significant step (rebase started, manifest conflict resolved, \
282
+ tests passed, pushed), output:
283
+ STATUS: [what you just did] → [what you're about to do] → [confidence]
284
+ - If you stop, output the STUCK: line described above and wait for \
285
+ guidance.\
286
+ """
287
+
288
+
289
+ def build_sealed_manifest_conflict_briefing(
290
+ *,
291
+ entry: QueuedMerge,
292
+ repo_path: str,
293
+ test_command: str | None,
294
+ ) -> str:
295
+ """Briefing for a conflict-fix dispatched against a
296
+ :data:`coord.models.SEALED_PATH_AUTHOR_TYPES` branch (#2555).
297
+
298
+ Unlike :func:`build_conflict_fix_briefing`, this worker IS authorized to
299
+ edit one specific sealed file — the milestone's ``manifest.yml`` —
300
+ because that is the one file every acceptance slice under a milestone
301
+ appends an additive block to (see e.g.
302
+ ``tests/acceptance/ms-33/manifest.yml``'s own header comment), so a
303
+ two-slice collision there is a mechanical, written-down-rule merge, not
304
+ a semantic one. Everything else under ``tests/acceptance/`` stays
305
+ off-limits — see :data:`SEALED_MANIFEST_CONFLICT_SYSTEM_PROMPT`'s
306
+ "Rules" for the exact boundary and :data:`SEALED_SCOPE_STUCK_MARKER`,
307
+ the marker the worker uses to escalate when the conflict crosses it.
308
+ """
309
+ test_cmd = test_command or "echo '(no test command configured)'"
310
+ lines: list[str] = [
311
+ f"# Sealed conflict fix: {entry.repo_github} branch `{entry.branch}`",
312
+ "",
313
+ f"The merge of `{entry.branch}` → `{entry.target_branch}` failed.",
314
+ f"Reason: {entry.error or 'unknown conflict'}",
315
+ "",
316
+ f"Issue: #{entry.issue_number} — {entry.issue_title}",
317
+ f"Assignment type: `{entry.assignment_type}` — this branch's whole "
318
+ "job was authoring under `tests/acceptance/`, so its conflict is "
319
+ f"almost always another slice's additive edit to the same "
320
+ f"milestone's `{SEALED_MANIFEST_FILENAME}`.",
321
+ "",
322
+ "## Where you are",
323
+ "",
324
+ f"You are already in a dedicated git worktree checked out on "
325
+ f"`{entry.branch}` — the coordinator created it for you. Work HERE.",
326
+ "",
327
+ f"Do **NOT** `cd {repo_path}` (that is the machine's shared base "
328
+ "checkout) and do NOT `git checkout` / `git switch` anywhere. Leaving "
329
+ f"the base checkout parked on `{entry.branch}` breaks every later "
330
+ "dispatch against that branch on this machine (#1694).",
331
+ "",
332
+ "## Steps",
333
+ "",
334
+ "1. `git fetch origin`",
335
+ f"2. `git pull --rebase origin {entry.target_branch}`",
336
+ f"3. If a conflict marker appears in a `{SEALED_MANIFEST_FILENAME}` "
337
+ "under `tests/acceptance/`, resolve it by keeping BOTH sides' issue "
338
+ "blocks (additive — see the system prompt's rules). If a conflict "
339
+ "marker appears ANYWHERE ELSE, stop — see \"When NOT to guess\" "
340
+ "below.",
341
+ f"4. Run tests: `{test_cmd}`",
342
+ f"5. `git push --force-with-lease origin {entry.branch}`",
343
+ "6. Exit 0 if push succeeds; non-zero otherwise.",
344
+ "",
345
+ "## When NOT to guess",
346
+ "",
347
+ f"You are authorized to edit ONLY a `{SEALED_MANIFEST_FILENAME}` "
348
+ "under `tests/acceptance/`, and only additively. If the conflict "
349
+ "touches a test body, `contract.md`, a mock, a fixture, an "
350
+ "entry-point registration, or anything else sealed — or the "
351
+ f"`{SEALED_MANIFEST_FILENAME}` conflict is not a clean additive "
352
+ "case — DO NOT touch it. Exit non-zero with a `STUCK:` line "
353
+ f"starting with the exact marker `{SEALED_SCOPE_STUCK_MARKER}` and "
354
+ "the file(s)/reason, e.g.",
355
+ "",
356
+ f" STUCK: {SEALED_SCOPE_STUCK_MARKER} tests/acceptance/ms-33/"
357
+ "audit.rs:1-40 — conflict is in a test body, not "
358
+ f"{SEALED_MANIFEST_FILENAME}",
359
+ "",
360
+ "The coordinator reads that marker and hands this off to a human — "
361
+ "there is no stronger-model retry for this class of conflict, since "
362
+ "the file stays sealed regardless of which model resolves it.",
363
+ "",
364
+ "You will NOT use `gh` or `git push --force` — both are denied by "
365
+ "the harness. The coordinator owns PR retries and issue posting.",
366
+ ]
367
+ return "\n".join(lines)
368
+
369
+
370
+ def sealed_scope_verdict_in_text(text: str | None) -> bool:
371
+ """True when a sealed conflict-fix worker's log carries the
372
+ :data:`SEALED_SCOPE_STUCK_MARKER` — i.e. it refused because the conflict
373
+ reached outside the one ``manifest.yml`` it was authorized to touch.
374
+ Mirrors :func:`semantic_verdict_in_text`.
375
+ """
376
+ if not text:
377
+ return False
378
+ return SEALED_SCOPE_STUCK_MARKER in _decode_worker_text(text)
379
+
380
+
381
+ def _is_sealed_manifest_path(path: str) -> bool:
382
+ """True when *path* is (any milestone's) ``manifest.yml`` — the one file
383
+ a sealed-author conflict-fix dispatch is authorized to touch."""
384
+ return path.rsplit("/", 1)[-1] == SEALED_MANIFEST_FILENAME
385
+
386
+
387
+ def sealed_conflict_is_manifest_only(files: list[str]) -> bool:
388
+ """True when every path in *files* is a milestone acceptance
389
+ ``manifest.yml`` — exactly the shape :func:`dispatch_conflict_fix`'s
390
+ sealed-author branch (#2555) is authorized to resolve.
391
+
392
+ *files* is expected to already be confirmed confined to a repo's sealed
393
+ acceptance paths (e.g. via ``coord.notify._conflict_confined_to_sealed_
394
+ paths``, a GitHub-compare-API best-effort check) — this function only
395
+ narrows that further, from "somewhere under the sealed tree" to
396
+ "nowhere but a manifest.yml". A conflict that also touches a test body,
397
+ ``contract.md``, a mock, or any other sealed file returns ``False`` —
398
+ out of this resolver's authority, still needs a human. An empty list
399
+ also returns ``False`` (nothing to confirm as manifest-only).
400
+
401
+ NOTE (#2555 review): this is an EXACT-match test, and *files* coming
402
+ from a whole-branch compare (as opposed to the actual git-conflicting
403
+ subset) is normally a SUPERSET of what is really in conflict — a real
404
+ test-author/mock-author slice's own diff almost always also contains
405
+ the spec/test file(s) it authored alongside its ``manifest.yml`` edit.
406
+ Do not use this function to GATE a dispatch decision against a whole-
407
+ branch-diff file list — it will reject the common, textbook-compliant
408
+ case outright. Use :func:`sealed_conflict_could_touch_manifest` for
409
+ that; this function stays as the precise "IS it manifest-only" test for
410
+ a caller that already has the true conflicting-file set (e.g. a future
411
+ local ``git merge-tree``-based check — #2555 review, fix direction b).
412
+ """
413
+ return bool(files) and all(_is_sealed_manifest_path(f) for f in files)
414
+
415
+
416
+ def sealed_conflict_could_touch_manifest(files: list[str]) -> bool:
417
+ """True when at least one path in *files* is a milestone acceptance
418
+ ``manifest.yml`` — i.e. the sealed-aware conflict-fix branch (#2555)
419
+ MIGHT have something to resolve here.
420
+
421
+ Unlike :func:`sealed_conflict_is_manifest_only` (which requires EVERY
422
+ file to be a manifest.yml), *files* here is expected to be a branch's
423
+ WHOLE changed-file list (``coord.notify._conflict_confined_to_sealed_
424
+ paths``'s three-dot compare) — a SUPERSET of whatever is actually in
425
+ git-merge conflict, since GitHub's compare API has no notion of "which
426
+ files conflict", only "which files differ between two refs". Requiring
427
+ every file in that superset to be a manifest.yml rejects the common,
428
+ textbook-compliant test-author/mock-author shape outright: such a
429
+ branch's own diff almost always also contains the new spec/test file(s)
430
+ it authored alongside its ``manifest.yml`` edit (#2555 review finding).
431
+
432
+ Requiring only that a manifest.yml appears SOMEWHERE in the branch's
433
+ diff is still a sound negative filter: a file can only be in conflict
434
+ if this branch's diff touches it too, so when no manifest.yml appears
435
+ in *files* at all, no manifest.yml conflict is possible and dispatching
436
+ the sealed-aware resolver is a guaranteed no-op — safe to skip. When a
437
+ manifest.yml IS present (whether alongside other sealed files or not),
438
+ dispatch and let the worker's own additive-only restriction
439
+ (:data:`SEALED_MANIFEST_CONFLICT_SYSTEM_PROMPT`) do the PRECISE
440
+ filtering at rebase time — it refuses via
441
+ :data:`SEALED_SCOPE_STUCK_MARKER` the instant the actual conflict
442
+ reaches beyond that one file, exactly as designed.
443
+ """
444
+ return any(_is_sealed_manifest_path(f) for f in files)
445
+
446
+
186
447
  def build_conflict_fix_briefing(
187
448
  *,
188
449
  entry: QueuedMerge,
@@ -522,6 +783,25 @@ def dispatch_conflict_fix(
522
783
  while another conflict-fix is in flight. Because the escalated attempt
523
784
  is itself a ``conflict-fix`` row, its failure consumes the ordinary
524
785
  retry cap and the entry goes HUMAN_REQUIRED — no loop.
786
+
787
+ #2555: when *entry.assignment_type* is a
788
+ :data:`coord.models.SEALED_PATH_AUTHOR_TYPES` member (``test-author``/
789
+ ``mock-author``) — captured on the entry at ``enqueue()`` time, so no
790
+ extra board lookup is needed — and *semantic* is ``False``, this
791
+ dispatches the sealed-aware briefing (see
792
+ :func:`build_sealed_manifest_conflict_briefing`) instead of the ordinary
793
+ one. The ordinary briefing is a guaranteed no-op for this branch class:
794
+ its worker gets no authorization to touch ``tests/acceptance/**`` and
795
+ this repo's own CLAUDE.md, loaded into every session regardless of
796
+ ``system_prompt``, tells it never to. The sealed-aware briefing narrowly
797
+ authorizes exactly the one file (a milestone's ``manifest.yml``) most of
798
+ these conflicts actually live in, and refuses (STUCK, retry cap consumed
799
+ exactly like any other conflict-fix failure) the moment the conflict
800
+ reaches beyond it — same retry-cap and machine-selection logic as
801
+ everywhere else in this function, only the briefing/system-prompt/title
802
+ differ. Not wired into the ``semantic=True`` escalation path: a sealed
803
+ entry's refusal is a scope boundary, not a call for a stronger model —
804
+ the file stays sealed regardless of which model resolves it.
525
805
  """
526
806
  if semantic:
527
807
  if has_prior_semantic_escalation(board, entry.assignment_id):
@@ -533,6 +813,8 @@ def dispatch_conflict_fix(
533
813
  ):
534
814
  return None
535
815
 
816
+ sealed_author = not semantic and entry.assignment_type in SEALED_PATH_AUTHOR_TYPES
817
+
536
818
  repo = config.repo(entry.repo_name)
537
819
  if repo is None:
538
820
  return None
@@ -561,6 +843,14 @@ def dispatch_conflict_fix(
561
843
  title = f"{SEMANTIC_FIX_TITLE_PREFIX} {entry.issue_title}"
562
844
  if model:
563
845
  title = f"{SEMANTIC_FIX_TITLE_PREFIX}[{model}] {entry.issue_title}"
846
+ elif sealed_author:
847
+ briefing = build_sealed_manifest_conflict_briefing(
848
+ entry=entry,
849
+ repo_path=repo_path,
850
+ test_command=repo.test_command,
851
+ )
852
+ system_prompt = SEALED_MANIFEST_CONFLICT_SYSTEM_PROMPT
853
+ title = f"{SEALED_CONFLICT_FIX_TITLE_PREFIX} {entry.issue_title}"
564
854
  else:
565
855
  briefing = build_conflict_fix_briefing(
566
856
  entry=entry,
@@ -683,6 +973,10 @@ def dispatch_conflict_fix(
683
973
  "merge_entry_id": entry.assignment_id,
684
974
  "semantic": semantic,
685
975
  "model": model,
976
+ # #2555: lets the audit trail (and anyone diffing it) tell a
977
+ # narrowly-authorized sealed-manifest dispatch apart from the
978
+ # ordinary conflict-fix without re-deriving it from the title.
979
+ "sealed_author": sealed_author,
686
980
  },
687
981
  )
688
982
 
@@ -292,6 +292,16 @@ WORK_LIKE_TYPES: frozenset[str] = frozenset({"work", "mock-author", "test-author
292
292
  # needs to be added in one place.
293
293
  SEALED_PATH_AUTHOR_TYPES: frozenset[str] = frozenset({"test-author", "mock-author"})
294
294
 
295
+ # #2555: filename of the one sealed-acceptance file a `type="conflict-fix"`
296
+ # dispatch is ever authorized to edit for a SEALED_PATH_AUTHOR_TYPES branch —
297
+ # every milestone's `tests/acceptance/ms-NN/manifest.yml`, which every slice
298
+ # under that milestone additively appends its own issue block to (see e.g.
299
+ # `tests/acceptance/ms-33/manifest.yml`'s own header comment: "Merged (never
300
+ # clobbered) across issues"). `coord.conflict_fix`'s sealed-author dispatch
301
+ # branch and `coord.notify`'s stalled-pipeline confinement check both key off
302
+ # this exact name, kept here as a single shared constant so they can't drift.
303
+ SEALED_MANIFEST_FILENAME = "manifest.yml"
304
+
295
305
  # #1077: subset of WORK_LIKE_TYPES whose ``issue_number`` is the issue the PR
296
306
  # actually *resolves* — i.e. merging it should auto-close that issue. "work"
297
307
  # qualifies. "mock-author" (Gate A) is WORK_LIKE (it flows through the same
@@ -993,14 +993,22 @@ class StalledDispatchAction:
993
993
  (#602).
994
994
  - ``"skipped_human_required"`` — the conflict-fix retry cap was already
995
995
  hit; surfacing to a human, not auto-retrying.
996
- - ``"skipped_sealed_conflict"`` (#2537) — ``merge_conflict_unresolved``
997
- on a :data:`coord.models.SEALED_PATH_AUTHOR_TYPES` row whose conflict
998
- was confirmed (:func:`_conflict_confined_to_sealed_paths`) to be
999
- confined to the repo's sealed acceptance-oracle paths — a
1000
- conflict-fix worker is guaranteed to self-restrict and push nothing
1001
- there, so the dispatch was skipped rather than spending a worker
1002
- session on a known no-op; needs a sealed-path-aware rebase dispatcher
1003
- (a follow-up issue, not yet implemented).
996
+ - ``"skipped_sealed_conflict"`` (#2537, narrowed by #2555) —
997
+ ``merge_conflict_unresolved`` on a
998
+ :data:`coord.models.SEALED_PATH_AUTHOR_TYPES` row whose conflict was
999
+ confirmed (:func:`_conflict_confined_to_sealed_paths`) to be confined
1000
+ to the repo's sealed acceptance-oracle paths AND (#2555:
1001
+ :func:`coord.conflict_fix.sealed_conflict_could_touch_manifest`) NO
1002
+ file in that (whole-branch-diff) list is even a milestone
1003
+ ``manifest.yml`` — i.e. a manifest.yml conflict is provably
1004
+ impossible, so the sealed-aware conflict-fix branch is guaranteed to
1005
+ have nothing to resolve. Whenever a manifest.yml DOES appear in that
1006
+ list — whether alone or alongside other sealed files the branch also
1007
+ authored, the realistic common shape — this no longer skips here: it
1008
+ falls through to :func:`coord.conflict_fix.dispatch_conflict_fix`,
1009
+ whose sealed-author branch (#2555) attempts it and lets the worker's
1010
+ own additive-only restriction do the precise, per-file filtering at
1011
+ rebase time.
1004
1012
  - ``"disabled"`` — ``pipeline.auto_dispatch_stalled`` is
1005
1013
  off; detection/narration still happened, dispatch did not.
1006
1014
  """
@@ -1150,11 +1158,20 @@ def dispatch_stalled_pipeline_action(
1150
1158
  :data:`coord.models.SEALED_PATH_AUTHOR_TYPES` row AND the conflict can
1151
1159
  be confirmed (via :func:`_conflict_confined_to_sealed_paths`, a
1152
1160
  compare-API-only check) to be confined to the repo's sealed
1153
- acceptance-oracle paths a conflict-fix worker is REQUIRED by
1154
- CLAUDE.md's own sealed-path rule to self-restrict from editing those,
1155
- so it is guaranteed to push nothing; that case returns
1156
- ``"skipped_sealed_conflict"`` instead of spending a worker session on
1157
- a known no-op.
1161
+ acceptance-oracle paths AND (#2555:
1162
+ :func:`coord.conflict_fix.sealed_conflict_could_touch_manifest`) that
1163
+ confined, whole-branch-diff file list contains no manifest.yml at
1164
+ all a manifest.yml conflict is then provably impossible, and a
1165
+ conflict-fix worker is REQUIRED by CLAUDE.md's own sealed-path rule to
1166
+ self-restrict from editing any OTHER sealed file, so it is guaranteed
1167
+ to push nothing; that case returns ``"skipped_sealed_conflict"``
1168
+ instead of spending a worker session on a known no-op. When a
1169
+ manifest.yml IS present in that list (even alongside other sealed
1170
+ files the branch also authored — the realistic common shape), this
1171
+ falls through to the ordinary dispatch, whose sealed-author branch
1172
+ (#2555) resolves a genuine manifest-only conflict and self-refuses,
1173
+ exactly like any other conflict-fix failure, the instant the actual
1174
+ conflict reaches beyond that file.
1158
1175
  - ``review_failed_no_verdict`` (#1584) → :func:`coord.review.dispatch_review`
1159
1176
  again, the SAME call as ``done_no_review`` — the failed review left no
1160
1177
  verdict behind, so recovery is identical to "no review was ever
@@ -1479,6 +1496,7 @@ def dispatch_stalled_pipeline_action(
1479
1496
  from coord.conflict_fix import ( # noqa: PLC0415
1480
1497
  dispatch_conflict_fix,
1481
1498
  has_prior_conflict_fix,
1499
+ sealed_conflict_could_touch_manifest,
1482
1500
  )
1483
1501
  from coord.merge_queue import load_queue # noqa: PLC0415
1484
1502
 
@@ -1496,35 +1514,51 @@ def dispatch_stalled_pipeline_action(
1496
1514
  kind="skipped_human_required",
1497
1515
  detail="conflict-fix already active or its retry cap was already hit",
1498
1516
  )
1499
- # #2537: dispatch_conflict_fix is guaranteed to no-op on a conflict
1500
- # confined to the repo's sealed acceptance-oracle paths — the
1501
- # conflict-fix worker is REQUIRED by CLAUDE.md's own sealed-path
1502
- # rule to self-restrict from editing them (the additive carve-out
1503
- # applies only to test-author/mock-author dispatches, never
1504
- # conflict-fix), so it pushes nothing and the entry just re-stalls
1505
- # next tick. Confirmed live on coord-portal#132/#135: a manually
1506
- # forced dispatch_conflict_fix restored its worktree clean and
1507
- # pushed nothing. Skip the known-wasted dispatch when we can
1508
- # confirm confinement in advance; resolving it for real needs a
1509
- # sealed-path-aware re-dispatch (tracked as a follow-up issue, not
1510
- # yet implemented) dispatch_conflict_fix stays the fallback for
1511
- # every other case (can't confirm confinement, or genuinely not
1512
- # confined).
1517
+ # #2537/#2555: dispatch_conflict_fix used to be guaranteed to no-op on
1518
+ # a conflict confined to the repo's sealed acceptance-oracle paths —
1519
+ # an ordinary conflict-fix worker is required by CLAUDE.md's own
1520
+ # sealed-path rule to self-restrict from editing them (the additive
1521
+ # carve-out applied only to test-author/mock-author dispatches, never
1522
+ # conflict-fix) so it pushed nothing and the entry just re-stalled
1523
+ # next tick (confirmed live on coord-portal#132/#135). #2555 gave
1524
+ # `dispatch_conflict_fix` a sealed-aware branch (keyed off
1525
+ # `entry.assignment_type`, the same field checked below) that CAN
1526
+ # resolve the one shape that guarantee doesn't hold for: a conflict
1527
+ # confined to a milestone's `manifest.yml` the file every slice
1528
+ # under that milestone additively appends its own block to.
1529
+ #
1530
+ # `sealed_files` here is `entry`'s WHOLE branch diff (the three-dot
1531
+ # compare), not the actual conflicting subset — GitHub's compare API
1532
+ # cannot report "which files conflict", only "which files differ".
1533
+ # A real test-author/mock-author slice's own diff almost always ALSO
1534
+ # contains the spec/test file(s) it authored alongside its
1535
+ # `manifest.yml` edit, so gating on "every file in this superset is
1536
+ # a manifest.yml" (`sealed_conflict_is_manifest_only`) rejected the
1537
+ # common, textbook-compliant case outright (#2555 review finding).
1538
+ # Gate on "a manifest.yml appears somewhere in the superset" instead
1539
+ # (`sealed_conflict_could_touch_manifest`) — still a sound negative
1540
+ # filter (a file can only conflict if this branch touches it too, so
1541
+ # NO manifest.yml anywhere in the diff means a manifest.yml conflict
1542
+ # is impossible and dispatch would be a guaranteed no-op) — and let
1543
+ # the worker's own additive-only restriction do the PRECISE
1544
+ # filtering at rebase time, refusing via `SEALED_SCOPE_STUCK_MARKER`
1545
+ # the instant the actual conflict reaches beyond that one file.
1513
1546
  if work.type in SEALED_PATH_AUTHOR_TYPES:
1514
1547
  sealed_files = _conflict_confined_to_sealed_paths(entry, config)
1515
1548
  if sealed_files is not None:
1516
- return StalledDispatchAction(
1517
- kind="skipped_sealed_conflict",
1518
- detail=(
1519
- "conflict is confined to sealed acceptance paths ("
1520
- + ", ".join(sealed_files)
1521
- + ") — a conflict-fix worker is required to "
1522
- "self-restrict from editing them (CLAUDE.md's "
1523
- "sealed-path rule) and would push nothing; needs a "
1524
- "sealed-path-aware rebase dispatcher (follow-up "
1525
- "issue), not dispatch_conflict_fix"
1526
- ),
1527
- )
1549
+ if not sealed_conflict_could_touch_manifest(sealed_files):
1550
+ return StalledDispatchAction(
1551
+ kind="skipped_sealed_conflict",
1552
+ detail=(
1553
+ "conflict is confined to sealed acceptance paths ("
1554
+ + ", ".join(sealed_files)
1555
+ + ") and none of them is a manifest.yml — the "
1556
+ "sealed conflict-fix branch (#2555) is only "
1557
+ "authorized to resolve a manifest.yml conflict, "
1558
+ "so a worker would push nothing here; needs a "
1559
+ "human"
1560
+ ),
1561
+ )
1528
1562
  fix = dispatch_conflict_fix(entry, board, config, prefer_machine=work.machine_name)
1529
1563
  if fix is None:
1530
1564
  return StalledDispatchAction(