code-coordinator 0.5.234__tar.gz → 0.5.236__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 (815) hide show
  1. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. code_coordinator-0.5.236/code_coordinator.egg-info/scm_version.json +8 -0
  4. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/acceptance.py +38 -4
  5. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/agent.py +51 -8
  6. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/dispatch_workers.py +26 -0
  7. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/merge.py +28 -3
  8. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/interactive.py +30 -2
  9. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_acceptance.py +109 -1
  10. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_assign_interactive_remote.py +113 -14
  11. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_merge_verify.py +141 -4
  12. code_coordinator-0.5.234/code_coordinator.egg-info/scm_version.json +0 -8
  13. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/.claude/commands/board.md +0 -0
  14. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/.claude/commands/complete-session.md +0 -0
  15. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/.claude/commands/coordinator.md +0 -0
  16. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/.githooks/_lib.sh +0 -0
  17. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/.githooks/post-checkout +0 -0
  18. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/.githooks/post-commit +0 -0
  19. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/.githooks/post-merge +0 -0
  20. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  21. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/.github/coord-ci-acceptance.yml +0 -0
  22. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/.github/workflows/auto-release.yml +0 -0
  23. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/.github/workflows/cargo-test.yml +0 -0
  24. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/.github/workflows/publish.yml +0 -0
  25. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/.github/workflows/release-tui.yml +0 -0
  26. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/.github/workflows/test.yml +0 -0
  27. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/.gitignore +0 -0
  28. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/CLAUDE.md +0 -0
  29. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/GOAL.md +0 -0
  30. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/LICENSE +0 -0
  31. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/MANIFEST.in +0 -0
  32. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/README.md +0 -0
  33. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/code_coordinator.egg-info/SOURCES.txt +0 -0
  34. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/code_coordinator.egg-info/dependency_links.txt +0 -0
  35. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/code_coordinator.egg-info/entry_points.txt +0 -0
  36. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/code_coordinator.egg-info/requires.txt +0 -0
  37. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/code_coordinator.egg-info/scm_file_list.json +0 -0
  38. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/code_coordinator.egg-info/top_level.txt +0 -0
  39. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/__init__.py +0 -0
  40. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/_board_mapping.py +0 -0
  41. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/acceptance_drivers.py +0 -0
  42. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/agent_app.py +0 -0
  43. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/agent_update.py +0 -0
  44. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/agents/opencode/.gitignore +0 -0
  45. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/agents/opencode/agents/work.md +0 -0
  46. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/agents/opencode/routing.jsonc +0 -0
  47. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/approved_work.py +0 -0
  48. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/audit.py +0 -0
  49. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/auto_loop.py +0 -0
  50. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/block_log.py +0 -0
  51. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/board_bool_guard.py +0 -0
  52. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/board_service.py +0 -0
  53. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/board_wire.py +0 -0
  54. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/brain.py +0 -0
  55. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/branch_model.py +0 -0
  56. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/bug_intake.py +0 -0
  57. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/cargo_cache.py +0 -0
  58. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/ci_fix.py +0 -0
  59. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/ci_github.py +0 -0
  60. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/ci_gitlab.py +0 -0
  61. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/ci_store.py +0 -0
  62. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/claim.py +0 -0
  63. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/cli.py +0 -0
  64. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/client.py +0 -0
  65. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/__init__.py +0 -0
  66. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/_common.py +0 -0
  67. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/acceptance.py +0 -0
  68. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/agent_ops.py +0 -0
  69. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/audit.py +0 -0
  70. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/chat.py +0 -0
  71. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/dispatch.py +0 -0
  72. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/drive.py +0 -0
  73. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/drive_queue.py +0 -0
  74. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/gate_a.py +0 -0
  75. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/gates.py +0 -0
  76. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/issues.py +0 -0
  77. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/lifecycle.py +0 -0
  78. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/milestone.py +0 -0
  79. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/plan_followup.py +0 -0
  80. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/plans.py +0 -0
  81. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/portal.py +0 -0
  82. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/release.py +0 -0
  83. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/repo.py +0 -0
  84. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/report.py +0 -0
  85. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/review.py +0 -0
  86. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/scorecard.py +0 -0
  87. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/sessions.py +0 -0
  88. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/setup.py +0 -0
  89. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/status.py +0 -0
  90. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/terminal.py +0 -0
  91. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/test_gate.py +0 -0
  92. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/commands/tui.py +0 -0
  93. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/comments.py +0 -0
  94. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/config.py +0 -0
  95. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/config_reload.py +0 -0
  96. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/confirm_test.py +0 -0
  97. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/conflict_fix.py +0 -0
  98. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/dao.py +0 -0
  99. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/dashboard/__init__.py +0 -0
  100. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/dashboard/fixture.py +0 -0
  101. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/dashboard/index.html +0 -0
  102. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/dashboard/server.py +0 -0
  103. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/dashboard/terminal.py +0 -0
  104. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/db.py +0 -0
  105. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/dead_end.py +0 -0
  106. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/README.md +0 -0
  107. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-agent.service +0 -0
  108. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-db-backup.service +0 -0
  109. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-db-backup.sh +0 -0
  110. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-db-backup.timer +0 -0
  111. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-drive-queue.service +0 -0
  112. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-drive-queue.timer +0 -0
  113. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-notify.service +0 -0
  114. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-notify.timer +0 -0
  115. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-release-propagate.service +0 -0
  116. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-release-propagate.timer +0 -0
  117. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-release-window.service +0 -0
  118. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-release-window.timer +0 -0
  119. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-serve.service +0 -0
  120. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-web-dist-build.service +0 -0
  121. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-web-dist-build.timer +0 -0
  122. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy/coord-web.service +0 -0
  123. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy_manifest.py +0 -0
  124. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deploy_units.py +0 -0
  125. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/deps.py +0 -0
  126. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/diagnose.py +0 -0
  127. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/dispatch.py +0 -0
  128. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/dist_name.py +0 -0
  129. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/drive.py +0 -0
  130. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/drive_queue.py +0 -0
  131. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/drive_state.py +0 -0
  132. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/events.py +0 -0
  133. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/failure_class.py +0 -0
  134. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/filelock.py +0 -0
  135. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/fleet_config_health.py +0 -0
  136. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/forge_availability.py +0 -0
  137. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/freshness.py +0 -0
  138. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/gate_a.py +0 -0
  139. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/gate_b.py +0 -0
  140. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/gate_snapshot.py +0 -0
  141. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/gates.py +0 -0
  142. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/github_ops.py +0 -0
  143. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/goal.py +0 -0
  144. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/graph_health.py +0 -0
  145. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/__init__.py +0 -0
  146. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/aggregate.py +0 -0
  147. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/__init__.py +0 -0
  148. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/agent_install.py +0 -0
  149. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/cargo_targets.py +0 -0
  150. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/claude_binary.py +0 -0
  151. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/coord_web_ci_pin.py +0 -0
  152. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/deploy_lane_facts.py +0 -0
  153. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/disk.py +0 -0
  154. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/fleet_board.py +0 -0
  155. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  156. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/fleet_phantom.py +0 -0
  157. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/fleet_unit_drift.py +0 -0
  158. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/graph.py +0 -0
  159. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/graphify_cli.py +0 -0
  160. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/index_lock.py +0 -0
  161. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/plan_usage.py +0 -0
  162. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/repo_state.py +0 -0
  163. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/spawned_coord.py +0 -0
  164. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/timer_active.py +0 -0
  165. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/toolchain.py +0 -0
  166. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/unit_drift.py +0 -0
  167. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/unit_enablement.py +0 -0
  168. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/checks/worktrees.py +0 -0
  169. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/cli.py +0 -0
  170. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/context.py +0 -0
  171. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/fleet_snapshot.py +0 -0
  172. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/models.py +0 -0
  173. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/pypi.py +0 -0
  174. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/registry.py +0 -0
  175. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/render.py +0 -0
  176. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/health/units.py +0 -0
  177. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/hooks.py +0 -0
  178. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/housekeeping.py +0 -0
  179. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/issue_store.py +0 -0
  180. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/liveness_auditor.py +0 -0
  181. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/machine_pause.py +0 -0
  182. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/merge_queue.py +0 -0
  183. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/milestone_chat.py +0 -0
  184. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/milestone_dispatch.py +0 -0
  185. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/milestone_gate.py +0 -0
  186. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/milestone_order.py +0 -0
  187. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/mock_author.py +0 -0
  188. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/models.py +0 -0
  189. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/network.py +0 -0
  190. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/new_issue_chat.py +0 -0
  191. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/notifier/__init__.py +0 -0
  192. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/notifier/baseline.py +0 -0
  193. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/notifier/cli.py +0 -0
  194. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/notifier/collect.py +0 -0
  195. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/notifier/digest.py +0 -0
  196. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/notifier/models.py +0 -0
  197. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/notifier/predicate.py +0 -0
  198. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/notifier/service.py +0 -0
  199. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/notifier/store.py +0 -0
  200. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/notifier/transport.py +0 -0
  201. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/notify.py +0 -0
  202. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/openapi.py +0 -0
  203. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/overlap_fence.py +0 -0
  204. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/overlap_predict.py +0 -0
  205. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/parentage.py +0 -0
  206. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/parentage_github.py +0 -0
  207. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/pipeline.py +0 -0
  208. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/plan_parser.py +0 -0
  209. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/plans.py +0 -0
  210. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/platform_paths.py +0 -0
  211. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/portal_bridge.py +0 -0
  212. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/portal_store.py +0 -0
  213. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/portal_sync.py +0 -0
  214. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/pr_body_lint.py +0 -0
  215. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/prereqs.py +0 -0
  216. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/progress.py +0 -0
  217. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/providers/__init__.py +0 -0
  218. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/providers/base.py +0 -0
  219. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/providers/claude.py +0 -0
  220. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/providers/claude_pty.py +0 -0
  221. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/providers/opencode.py +0 -0
  222. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/queue_diagnose.py +0 -0
  223. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/reconcile.py +0 -0
  224. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/reconcile_tick.py +0 -0
  225. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/refine_chat.py +0 -0
  226. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/release_cordon.py +0 -0
  227. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/release_propagate.py +0 -0
  228. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/release_verify.py +0 -0
  229. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/release_window.py +0 -0
  230. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/repo_edit.py +0 -0
  231. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/repo_onboard.py +0 -0
  232. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/reports.py +0 -0
  233. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/revalidate.py +0 -0
  234. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/review.py +0 -0
  235. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/scorecard.py +0 -0
  236. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/self_health.py +0 -0
  237. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/serve_app.py +0 -0
  238. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  239. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  240. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  241. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  242. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  243. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/skills/portal-followup/SKILL.md +0 -0
  244. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  245. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  246. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/skills/update-issue/SKILL.md +0 -0
  247. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/smoke.py +0 -0
  248. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/spend_ceiling.py +0 -0
  249. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/split_work.py +0 -0
  250. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/stage_projection.py +0 -0
  251. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/state.py +0 -0
  252. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/test_author.py +0 -0
  253. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/test_chat.py +0 -0
  254. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/test_orchestrator.py +0 -0
  255. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/test_report.py +0 -0
  256. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/tui_release.py +0 -0
  257. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/usage.py +0 -0
  258. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/usage_limits.py +0 -0
  259. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/usage_rollup.py +0 -0
  260. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coord/worker_events.py +0 -0
  261. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/coordinator.example.yml +0 -0
  262. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-agent.service +0 -0
  263. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-db-backup.service +0 -0
  264. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-db-backup.sh +0 -0
  265. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-db-backup.timer +0 -0
  266. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-drive-queue.service +0 -0
  267. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-drive-queue.timer +0 -0
  268. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-notify.service +0 -0
  269. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-notify.timer +0 -0
  270. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-release-propagate.service +0 -0
  271. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-release-propagate.timer +0 -0
  272. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-release-window.service +0 -0
  273. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-release-window.timer +0 -0
  274. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-serve.service +0 -0
  275. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-web-dist-build.service +0 -0
  276. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-web-dist-build.sh +0 -0
  277. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-web-dist-build.timer +0 -0
  278. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-web-rollback.sh +0 -0
  279. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/coord-web.service +0 -0
  280. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/deploy/node-shim.sh +0 -0
  281. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  282. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/ADR_COORD_WEB_CI.md +0 -0
  283. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/ADR_COORD_WEB_DIST.md +0 -0
  284. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/AGENT_OPERATIONS.md +0 -0
  285. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/ARCHITECTURE.md +0 -0
  286. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/ARCH_SECURITY_GATES.md +0 -0
  287. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/COCKPIT.md +0 -0
  288. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/CONTROL_CENTER.md +0 -0
  289. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/COST_DISCIPLINE.md +0 -0
  290. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/CROSS_PLATFORM.md +0 -0
  291. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/CUSTOMER_PORTAL.md +0 -0
  292. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/DRIVE_QUEUE.md +0 -0
  293. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/EPHEMERAL_WORKERS.md +0 -0
  294. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/FORGE_MIGRATION.md +0 -0
  295. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/GRAPHIFY_SETUP.md +0 -0
  296. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/ISSUE_GUIDANCE.md +0 -0
  297. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/MAC_MINI.md +0 -0
  298. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  299. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/NOTIFIER.md +0 -0
  300. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/OPENCODE_VERIFICATION.md +0 -0
  301. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/OPERATING_GOTCHAS.md +0 -0
  302. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/ORACLE_LOOP.md +0 -0
  303. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/PHONE_WEBAPP.md +0 -0
  304. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/PIPELINE_V2.md +0 -0
  305. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/PLATFORM_EVOLUTION.md +0 -0
  306. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/SECOND_BACKEND.md +0 -0
  307. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/STORE_SERVICE.md +0 -0
  308. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  309. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/WEB_CONTROL_CENTER.md +0 -0
  310. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/WSL_WINDOWS_WORKER.md +0 -0
  311. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/mocks/web/README.md +0 -0
  312. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/mocks/web/_tokens.css +0 -0
  313. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/mocks/web/issue-detail.html +0 -0
  314. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/mocks/web/pipeline-narrow.html +0 -0
  315. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/docs/mocks/web/pipeline-wide.html +0 -0
  316. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/graphify-out/.gitignore +0 -0
  317. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/install-agent.sh +0 -0
  318. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/pyproject.toml +0 -0
  319. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/audit_review_verdict_overrides.py +0 -0
  320. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  321. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/azure-workers/build-worker-image.sh +0 -0
  322. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/azure-workers/coordinator-machine.py +0 -0
  323. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/azure-workers/epic-down.sh +0 -0
  324. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/azure-workers/epic-up.sh +0 -0
  325. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/azure-workers/preflight.sh +0 -0
  326. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/azure-workers/provision-worker.sh +0 -0
  327. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  328. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  329. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/azure-workers/verify-github-token.sh +0 -0
  330. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/check_gh_argv_containment.py +0 -0
  331. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/codegen.py +0 -0
  332. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/coord-test-runner.sh +0 -0
  333. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/drive-batch.sh +0 -0
  334. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/gen_board_fixture.py +0 -0
  335. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/gen_mock_index.py +0 -0
  336. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/next_release_tag.py +0 -0
  337. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/run_tests_in_populated_home.sh +0 -0
  338. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/run_tests_without_gh.sh +0 -0
  339. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/smoke_437_interactive.py +0 -0
  340. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/verify_878_review_capture.py +0 -0
  341. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/verify_release_published.py +0 -0
  342. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/scripts/verify_release_wheel.py +0 -0
  343. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/setup.cfg +0 -0
  344. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/SMOKE_SET.md +0 -0
  345. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/__init__.py +0 -0
  346. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  347. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-33/contract.md +0 -0
  348. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-33/manifest.yml +0 -0
  349. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  350. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  351. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  352. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  353. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-37/conftest.py +0 -0
  354. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-37/contract.md +0 -0
  355. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-37/manifest.yml +0 -0
  356. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  357. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  358. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-38/contract.md +0 -0
  359. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-38/manifest.yml +0 -0
  360. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  361. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  362. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  363. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  364. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  365. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  366. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  367. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  368. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  369. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  370. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-51/contract.md +0 -0
  371. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  372. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  373. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-51/manifest.yml +0 -0
  374. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  375. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-51/tsconfig.json +0 -0
  376. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  377. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  378. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  379. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/contract.md +0 -0
  380. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  381. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/manifest.yml +0 -0
  382. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  383. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  384. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  385. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  386. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  387. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  388. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  389. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  390. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  391. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  392. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  393. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
  394. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-67/contract.md +0 -0
  395. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
  396. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-67/manifest.yml +0 -0
  397. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
  398. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
  399. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
  400. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
  401. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
  402. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
  403. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  404. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/conftest.py +0 -0
  405. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/board-pipeline-basic.json +0 -0
  406. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  407. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  408. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  409. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  410. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/playwright/all_pass.json +0 -0
  411. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  412. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/playwright/mixed_fail.json +0 -0
  413. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  414. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  415. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/playwright/skip.json +0 -0
  416. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/playwright/truncated.json +0 -0
  417. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  418. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  419. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  420. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  421. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  422. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  423. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  424. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  425. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_acceptance_drivers.py +0 -0
  426. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent.py +0 -0
  427. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_api_error.py +0 -0
  428. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_app.py +0 -0
  429. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_branch_base.py +0 -0
  430. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_branch_capture.py +0 -0
  431. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_config_free_1712.py +0 -0
  432. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_deploy_units_endpoint.py +0 -0
  433. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_dirty_worktree.py +0 -0
  434. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  435. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_graph_self_heal.py +0 -0
  436. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_health_h3.py +0 -0
  437. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_idle_restart.py +0 -0
  438. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_push_failure.py +0 -0
  439. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_reap.py +0 -0
  440. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_repos_and_pull.py +0 -0
  441. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_restart_services_endpoint.py +0 -0
  442. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_skills_self_heal.py +0 -0
  443. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_startup_diagnostics.py +0 -0
  444. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_update.py +0 -0
  445. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_update_bluegreen.py +0 -0
  446. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_usage_limit.py +0 -0
  447. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_agent_zero_commit.py +0 -0
  448. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_ambient_home_isolation.py +0 -0
  449. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_approve_reject_plan.py +0 -0
  450. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_approve_usage_gate.py +0 -0
  451. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_approved_work_2532.py +0 -0
  452. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_assignment_already_recorded_daemon.py +0 -0
  453. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_audit_log.py +0 -0
  454. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_audit_outcome.py +0 -0
  455. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_audit_query.py +0 -0
  456. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_auto_loop.py +0 -0
  457. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_auto_release_publish_2035.py +0 -0
  458. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_base_checkout_restore.py +0 -0
  459. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_block_log.py +0 -0
  460. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_board_cap_762.py +0 -0
  461. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_board_fixture.py +0 -0
  462. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_board_read_path.py +0 -0
  463. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_board_service.py +0 -0
  464. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_board_state.py +0 -0
  465. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_board_wire.py +0 -0
  466. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_brain.py +0 -0
  467. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_branch_model.py +0 -0
  468. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_bug_intake.py +0 -0
  469. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_build_worker_image_env_update.py +0 -0
  470. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cargo_cache.py +0 -0
  471. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_check_gh_argv_containment.py +0 -0
  472. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_ci_acceptance_gate_1950.py +0 -0
  473. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_ci_fix.py +0 -0
  474. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_ci_gitlab.py +0 -0
  475. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_ci_parity_2091.py +0 -0
  476. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_ci_store.py +0 -0
  477. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_claim.py +0 -0
  478. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_acceptance.py +0 -0
  479. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_assign.py +0 -0
  480. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  481. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_assign_provider.py +0 -0
  482. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  483. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_audit.py +0 -0
  484. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_chat_continue.py +0 -0
  485. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_decide.py +0 -0
  486. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_diagnose_config_provenance.py +0 -0
  487. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_diagnose_forge_availability.py +0 -0
  488. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_diagnose_graph.py +0 -0
  489. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_diagnose_self.py +0 -0
  490. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_doctor.py +0 -0
  491. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_doctor_config_free_1801.py +0 -0
  492. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  493. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_drive.py +0 -0
  494. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_drive_queue.py +0 -0
  495. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_escalate.py +0 -0
  496. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_fix_headless_review.py +0 -0
  497. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_gate_a.py +0 -0
  498. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_install_drift.py +0 -0
  499. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_install_skills.py +0 -0
  500. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_issue_create_label.py +0 -0
  501. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_issue_reopen.py +0 -0
  502. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_merge.py +0 -0
  503. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_milestone_assign.py +0 -0
  504. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_milestone_capture.py +0 -0
  505. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_milestone_chat_add_child.py +0 -0
  506. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_milestone_dispatch.py +0 -0
  507. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_milestone_gate_b.py +0 -0
  508. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_milestone_gate_c.py +0 -0
  509. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_milestone_order.py +0 -0
  510. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  511. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_milestone_ship.py +0 -0
  512. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_network.py +0 -0
  513. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_new_issue_chat.py +0 -0
  514. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_plans.py +0 -0
  515. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_portal.py +0 -0
  516. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_pull_artifact.py +0 -0
  517. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_queue.py +0 -0
  518. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_reattach_sessions.py +0 -0
  519. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_refine_board.py +0 -0
  520. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_release_preflight.py +0 -0
  521. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_release_propagate.py +0 -0
  522. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_release_window.py +0 -0
  523. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_repo_2220.py +0 -0
  524. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_scorecard.py +0 -0
  525. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_set_review_findings.py +0 -0
  526. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_status_advisory_terminal.py +0 -0
  527. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_status_merge_queue.py +0 -0
  528. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_status_provider.py +0 -0
  529. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_status_review_finalizing.py +0 -0
  530. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_status_test_failed_tag.py +0 -0
  531. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_status_usage_limit.py +0 -0
  532. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_sync_comments_873.py +0 -0
  533. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_test_plan.py +0 -0
  534. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_track.py +0 -0
  535. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_tui_update.py +0 -0
  536. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cli_wait.py +0 -0
  537. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_client_base_install.py +0 -0
  538. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_comments.py +0 -0
  539. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_completion_summary.py +0 -0
  540. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_config.py +0 -0
  541. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_config_acceptance.py +0 -0
  542. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_config_audit.py +0 -0
  543. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_config_pricing.py +0 -0
  544. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  545. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_config_usage_gate.py +0 -0
  546. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_confirm_test.py +0 -0
  547. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_conflict_fix.py +0 -0
  548. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_conflict_fix_semantic.py +0 -0
  549. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_coord_test.py +0 -0
  550. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_coord_test_runner_baseline.py +0 -0
  551. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_coord_test_runner_populated_home.py +0 -0
  552. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_coord_test_runner_routing.py +0 -0
  553. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_coord_test_runner_toolchain.py +0 -0
  554. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_coord_web_sse_restart_live.py +0 -0
  555. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_coordinator_machine.py +0 -0
  556. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_cross_platform_imports.py +0 -0
  557. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_dashboard.py +0 -0
  558. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_dashboard_fixture.py +0 -0
  559. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_dashboard_terminal.py +0 -0
  560. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_dashboard_terminal_live.py +0 -0
  561. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_db.py +0 -0
  562. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_dead_end.py +0 -0
  563. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_deploy_coord_db_backup.py +0 -0
  564. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_deploy_coord_web_dist.py +0 -0
  565. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_deploy_coord_web_rollback.py +0 -0
  566. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_deploy_drive_queue_unit.py +0 -0
  567. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_deploy_manifest.py +0 -0
  568. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_deploy_notify_unit.py +0 -0
  569. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_deploy_units_lane.py +0 -0
  570. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_deploy_web_unit.py +0 -0
  571. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_deps.py +0 -0
  572. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_diagnose.py +0 -0
  573. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_dispatch.py +0 -0
  574. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_dispatch_target_validation.py +0 -0
  575. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_dist_name.py +0 -0
  576. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_done_housekeeping.py +0 -0
  577. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_drive.py +0 -0
  578. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_drive_queue.py +0 -0
  579. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_drive_state.py +0 -0
  580. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_drive_tmux.py +0 -0
  581. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_epic_up_capability_detection.py +0 -0
  582. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  583. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_epic_up_image_provenance.py +0 -0
  584. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_errors.py +0 -0
  585. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_events.py +0 -0
  586. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_failure_class.py +0 -0
  587. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_filelock.py +0 -0
  588. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  589. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_fix_of_force_override.py +0 -0
  590. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_fleet_config_health.py +0 -0
  591. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_fleet_health_probes.py +0 -0
  592. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_fleet_health_snapshot.py +0 -0
  593. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_forge_availability.py +0 -0
  594. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_freshness.py +0 -0
  595. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_gate_a.py +0 -0
  596. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_gate_b.py +0 -0
  597. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_gate_snapshot_staleness.py +0 -0
  598. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_gates.py +0 -0
  599. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  600. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_gen_mock_index.py +0 -0
  601. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_generated_types_fixture.py +0 -0
  602. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_github_ops.py +0 -0
  603. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_goal.py +0 -0
  604. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_graph_health.py +0 -0
  605. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_graph_selfheal_absent_2237.py +0 -0
  606. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_handoff.py +0 -0
  607. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_health_checks.py +0 -0
  608. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_health_cli.py +0 -0
  609. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_health_cli_graph.py +0 -0
  610. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_health_config.py +0 -0
  611. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_health_context.py +0 -0
  612. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_health_coord_web_ci_pin.py +0 -0
  613. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_health_deploy_lane_facts.py +0 -0
  614. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_health_incident_regression.py +0 -0
  615. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_health_pypi.py +0 -0
  616. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_health_registry.py +0 -0
  617. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_health_timer_active.py +0 -0
  618. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_health_toolchain.py +0 -0
  619. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_health_unit_drift.py +0 -0
  620. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_health_unit_enablement.py +0 -0
  621. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_hooks.py +0 -0
  622. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_human_attended_437.py +0 -0
  623. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_init.py +0 -0
  624. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_integration.py +0 -0
  625. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_interactive_briefing_echo.py +0 -0
  626. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_interactive_pane_log_2541.py +0 -0
  627. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_interactive_prefill_state.py +0 -0
  628. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_interactive_session_relaunch.py +0 -0
  629. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_interactive_test_verdict_backstop.py +0 -0
  630. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_interactive_token_attribution.py +0 -0
  631. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_interactive_worktree.py +0 -0
  632. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_issue_store_seam.py +0 -0
  633. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_liveness_auditor.py +0 -0
  634. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_liveness_notify.py +0 -0
  635. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_machine_pause.py +0 -0
  636. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_merge_queue.py +0 -0
  637. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_milestone_chat.py +0 -0
  638. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_milestone_dispatch.py +0 -0
  639. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_milestone_gate.py +0 -0
  640. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_milestone_order.py +0 -0
  641. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_milestone_seam.py +0 -0
  642. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_mock_author.py +0 -0
  643. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_model_tiering.py +0 -0
  644. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_models.py +0 -0
  645. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_models_config_labels.py +0 -0
  646. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_needs_attention.py +0 -0
  647. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_network.py +0 -0
  648. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_new_issue_chat.py +0 -0
  649. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_next_release_tag.py +0 -0
  650. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_node_shim.py +0 -0
  651. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_notifier_baseline.py +0 -0
  652. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_notifier_cli.py +0 -0
  653. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_notifier_collect.py +0 -0
  654. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_notifier_config.py +0 -0
  655. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_notifier_drive_seam.py +0 -0
  656. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_notifier_isolation.py +0 -0
  657. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_notifier_predicate.py +0 -0
  658. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_notifier_quiet_hours.py +0 -0
  659. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_notifier_service.py +0 -0
  660. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_notify.py +0 -0
  661. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_notify_drain.py +0 -0
  662. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_openapi.py +0 -0
  663. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_operational_defaults.py +0 -0
  664. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_overlap_fence.py +0 -0
  665. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_overlap_predict.py +0 -0
  666. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_packaged_deploy_units.py +0 -0
  667. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_parentage.py +0 -0
  668. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_paste_landed.py +0 -0
  669. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_pipeline.py +0 -0
  670. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_plan_followup_approve_plan_command.py +0 -0
  671. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_plan_followup_pr_command.py +0 -0
  672. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_plan_followup_review_command.py +0 -0
  673. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_plan_only.py +0 -0
  674. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_plan_parser.py +0 -0
  675. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_platform_paths.py +0 -0
  676. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_portal_bridge.py +0 -0
  677. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_portal_config.py +0 -0
  678. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_portal_store.py +0 -0
  679. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_portal_sync.py +0 -0
  680. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_pr_body_lint.py +0 -0
  681. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_prereqs.py +0 -0
  682. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_production_db_guard.py +0 -0
  683. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_progress.py +0 -0
  684. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_provider_seam.py +0 -0
  685. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_providers.py +0 -0
  686. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_providers_config_labels.py +0 -0
  687. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_providers_pty.py +0 -0
  688. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_quiet_hours.py +0 -0
  689. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_quiet_hours_store_2146.py +0 -0
  690. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_reap_merged_sessions.py +0 -0
  691. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_reap_stale_interactive_tick.py +0 -0
  692. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_reconcile.py +0 -0
  693. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_reconcile_branch.py +0 -0
  694. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_reconcile_completions.py +0 -0
  695. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_reconcile_merges.py +0 -0
  696. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_reconcile_no_agent_record.py +0 -0
  697. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_reconcile_tick.py +0 -0
  698. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_reconcile_usage_limit_done.py +0 -0
  699. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_refine_chat.py +0 -0
  700. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_release_cordon_2101.py +0 -0
  701. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  702. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_release_cordon_deadlock_2240.py +0 -0
  703. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_release_cordon_stuck_2490.py +0 -0
  704. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_release_propagate.py +0 -0
  705. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_release_roll_window_handoff.py +0 -0
  706. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_release_unified_1242.py +0 -0
  707. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_release_verify.py +0 -0
  708. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_release_window.py +0 -0
  709. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_remote_auto_prune.py +0 -0
  710. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_remote_interactive_reaper.py +0 -0
  711. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_repo_edit_2220.py +0 -0
  712. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_repo_graph_fleet_2237.py +0 -0
  713. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_repo_onboard_2220.py +0 -0
  714. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_report_result_push.py +0 -0
  715. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_reports.py +0 -0
  716. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_retry.py +0 -0
  717. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_retry_advisory_1606.py +0 -0
  718. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_retry_type_1636.py +0 -0
  719. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_revalidate.py +0 -0
  720. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_review.py +0 -0
  721. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_review_end_review_without_verdict.py +0 -0
  722. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_review_parse_failure_diagnostic.py +0 -0
  723. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_review_reaffirm.py +0 -0
  724. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_review_state.py +0 -0
  725. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_review_verdict_backstop.py +0 -0
  726. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_review_verdict_override_audit.py +0 -0
  727. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_review_verdict_relay.py +0 -0
  728. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_review_zero_commits.py +0 -0
  729. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_scoped_review_wiring.py +0 -0
  730. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_scorecard.py +0 -0
  731. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_self_health.py +0 -0
  732. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_serve.py +0 -0
  733. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_serve_app_board_trim.py +0 -0
  734. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_session.py +0 -0
  735. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_slice_issue_attribution.py +0 -0
  736. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_smoke.py +0 -0
  737. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_smoke_live_checkout_restore.py +0 -0
  738. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_smoke_workflow.py +0 -0
  739. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_spend_ceiling.py +0 -0
  740. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_spend_ceiling_coordinator.py +0 -0
  741. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_split.py +0 -0
  742. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_split_work.py +0 -0
  743. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_stage_projection.py +0 -0
  744. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_stalled_pipeline.py +0 -0
  745. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_state.py +0 -0
  746. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_state_review_findings_daemon.py +0 -0
  747. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_status_fleet_footer.py +0 -0
  748. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_stop_1567.py +0 -0
  749. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_stuck.py +0 -0
  750. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_terminal_command.py +0 -0
  751. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_test_author.py +0 -0
  752. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_test_chat.py +0 -0
  753. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_test_orchestrator.py +0 -0
  754. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_test_report.py +0 -0
  755. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_test_verdict_parsing.py +0 -0
  756. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_test_verdict_transcript_floor.py +0 -0
  757. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_thin_client_board_audit.py +0 -0
  758. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_thin_client_config_load_1080.py +0 -0
  759. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_thin_client_daemon_routing_906.py +0 -0
  760. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_tmux_host.py +0 -0
  761. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_tmux_session.py +0 -0
  762. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_transcript_floor.py +0 -0
  763. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_usage.py +0 -0
  764. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_usage_limits.py +0 -0
  765. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_usage_rollup.py +0 -0
  766. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_venv_live_install_2121.py +0 -0
  767. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_version_single_source.py +0 -0
  768. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_watch.py +0 -0
  769. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  770. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_worker_events.py +0 -0
  771. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_worker_image_pin_sync.py +0 -0
  772. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_worker_safety.py +0 -0
  773. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_worker_test_scoping.py +0 -0
  774. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_worktree.py +0 -0
  775. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  776. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/Cargo.lock +0 -0
  777. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/Cargo.toml +0 -0
  778. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/cargo-config-local-quadraui.toml.example +0 -0
  779. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/approved.rs +0 -0
  780. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/audit.rs +0 -0
  781. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/chat.rs +0 -0
  782. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/data.rs +0 -0
  783. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/dialogs.rs +0 -0
  784. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/doc_tabs.rs +0 -0
  785. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/drive.rs +0 -0
  786. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/drive_queue.rs +0 -0
  787. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/escalation.rs +0 -0
  788. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/events.rs +0 -0
  789. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/fixtures.rs +0 -0
  790. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/fleet_health.rs +0 -0
  791. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/fleet_sessions.rs +0 -0
  792. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/fleet_terminals.rs +0 -0
  793. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/format.rs +0 -0
  794. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/milestone_dag.rs +0 -0
  795. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/mod.rs +0 -0
  796. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/msv.rs +0 -0
  797. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/pipeline.rs +0 -0
  798. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/plans.rs +0 -0
  799. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/render.rs +0 -0
  800. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/reports.rs +0 -0
  801. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/sessions.rs +0 -0
  802. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/settings_ui.rs +0 -0
  803. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/sidebar.rs +0 -0
  804. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/terminal.rs +0 -0
  805. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/tests.rs +0 -0
  806. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/types.rs +0 -0
  807. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/app/workspace.rs +0 -0
  808. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/bin/gtk.rs +0 -0
  809. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/commands.rs +0 -0
  810. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/lib.rs +0 -0
  811. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/main.rs +0 -0
  812. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/src/settings.rs +0 -0
  813. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/tests/acceptance.rs +0 -0
  814. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/tui/tests/cli.rs +0 -0
  815. {code_coordinator-0.5.234 → code_coordinator-0.5.236}/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.234
3
+ Version: 0.5.236
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.234
3
+ Version: 0.5.236
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
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.5.236",
3
+ "distance": 0,
4
+ "node": "g5110d914da8b0140bb620fbe356079028f405900",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-08-23"
8
+ }
@@ -838,6 +838,36 @@ def _issue_header_re(issue_number: int) -> re.Pattern[str]:
838
838
  return re.compile(rf"^(\s*)['\"]?{issue_number}['\"]?\s*:\s*(#.*)?$")
839
839
 
840
840
 
841
+ def _parse_list_item_scalar(line: str) -> str | None:
842
+ """Resolve one YAML block-sequence item line (``- ...``) to its parsed
843
+ scalar value — the same value :func:`parse_manifest_text` would produce
844
+ for it — rather than the raw text as written. #2296: a Playwright test id
845
+ always starts with ``[chromium]``, so its manifest entry is *always*
846
+ quoted (an unquoted leading ``[`` is a YAML flow sequence, not a string);
847
+ comparing the raw scalar against the parsed id then never matches. Going
848
+ through :mod:`yaml` here instead handles double- and single-quoted
849
+ scalars (incl. the ``''`` embedded-quote escape) and, since YAML's own
850
+ comment rule applies, a ``#`` inside a quoted scalar is correctly treated
851
+ as data rather than truncated as a comment.
852
+
853
+ Returns ``None`` for anything that isn't a well-formed single-item
854
+ sequence line (blank/comment-only, flow-style, malformed YAML, or a
855
+ non-string value) so the caller leaves such lines untouched rather than
856
+ risk misclassifying them.
857
+ """
858
+ stripped = line.strip()
859
+ if not stripped.startswith("-"):
860
+ return None
861
+ try:
862
+ parsed = yaml.safe_load(stripped)
863
+ except yaml.YAMLError:
864
+ return None
865
+ if not isinstance(parsed, list) or len(parsed) != 1:
866
+ return None
867
+ value = parsed[0]
868
+ return value if isinstance(value, str) else None
869
+
870
+
841
871
  def _strip_cleared_ids_from_issue_block(
842
872
  body: "list[str]", issue_number: int, cleared_ids: "set[str]",
843
873
  ) -> "tuple[list[str], bool]":
@@ -871,9 +901,8 @@ def _strip_cleared_ids_from_issue_block(
871
901
  i += 1
872
902
  new_sub = []
873
903
  for sub_line in sub:
874
- code = sub_line.split("#", 1)[0].strip()
875
- item_m = re.match(r"^-\s*(.+?)\s*$", code)
876
- if item_m and item_m.group(1) in cleared_ids:
904
+ item = _parse_list_item_scalar(sub_line)
905
+ if item is not None and item in cleared_ids:
877
906
  changed = True
878
907
  continue
879
908
  new_sub.append(sub_line)
@@ -1286,7 +1315,12 @@ def clear_expected_red_via_pr(
1286
1315
 
1287
1316
  new_text = clear_expected_red_entries(text, issue_number, ids)
1288
1317
  if new_text is None:
1289
- return "expected_red text unchanged (nothing matched)"
1318
+ # #2296: ids were passed in and none matched — that's a defect in
1319
+ # the text surgery (or a manifest that no longer has this issue's
1320
+ # block), not a benign no-op. Prefix `warning:` so it's greppable
1321
+ # and so `coord acceptance expected-red --clear` doesn't report a
1322
+ # clean sweep over an operation that actually did nothing.
1323
+ return "warning: expected_red text unchanged (nothing matched)"
1290
1324
 
1291
1325
  get_head = getattr(ops, "get_default_branch_head", None)
1292
1326
  create_branch = getattr(ops, "create_remote_branch", None)
@@ -1110,14 +1110,36 @@ def _pushed_commits_ahead(repo_path: Path, base: str, branch: str) -> int | None
1110
1110
  _ISSUE_REF_RE = re.compile(r"#(\d+)")
1111
1111
 
1112
1112
 
1113
- def _foreign_issue_refs(subject: str, issue_number: int) -> frozenset[int]:
1113
+ def _foreign_issue_refs(
1114
+ subject: str,
1115
+ issue_number: int,
1116
+ extra_allowed: frozenset[int] = frozenset(),
1117
+ ) -> frozenset[int]:
1114
1118
  """Return the set of *foreign* issue numbers referenced in *subject* —
1115
- those that are not *issue_number*. Empty if the subject doesn't reference
1116
- any foreign issue."""
1119
+ those that are neither *issue_number* nor in *extra_allowed*. Empty if
1120
+ the subject doesn't reference any foreign issue.
1121
+
1122
+ *extra_allowed* (#2545): for a ``type="test-author"``/``"mock-author"``
1123
+ merge entry, *issue_number* is the milestone's TRACKING issue (every JIT
1124
+ slice for one milestone shares a single branch/PR — see
1125
+ ``Assignment.for_issue_number``'s docstring), but the slice's own commit
1126
+ correctly and necessarily cites its OWN child issue
1127
+ (``test(ms-4): ... slice #132``). Without this, every such commit was
1128
+ flagged FOREIGN on every single verify, regardless of whether the rebase
1129
+ was actually clean. Callers resolve the slice's own issue number (e.g.
1130
+ via ``coord.models.effective_issue_number``) and pass it here so a
1131
+ reference to *either* the tracking issue or the resolved slice issue
1132
+ counts as home, not foreign. Defaults to empty, preserving the original
1133
+ all-blocking-except-``issue_number`` behaviour for ordinary ``work``
1134
+ assignments.
1135
+ """
1117
1136
  refs = {int(m) for m in _ISSUE_REF_RE.findall(subject)}
1118
- if not refs or issue_number in refs:
1137
+ if not refs:
1119
1138
  return frozenset()
1120
- return frozenset(refs - {issue_number})
1139
+ home = {issue_number} | extra_allowed
1140
+ if refs & home:
1141
+ return frozenset()
1142
+ return frozenset(refs - home)
1121
1143
 
1122
1144
 
1123
1145
  def _resolve_base_ref(wt_path: Path, base: str) -> str | None:
@@ -1218,6 +1240,7 @@ def verify_merge_branch(
1218
1240
  *,
1219
1241
  base: str,
1220
1242
  issue_number: int,
1243
+ extra_allowed_issue_numbers: frozenset[int] = frozenset(),
1221
1244
  closed_issue_numbers: frozenset[int] = frozenset(),
1222
1245
  ) -> MergeVerify:
1223
1246
  """Verify a ``--merge-of`` branch before its terminal ``done`` is recorded.
@@ -1233,10 +1256,17 @@ def verify_merge_branch(
1233
1256
  ``claude``, no PTY — so the gate runs as a fast local-only test fixture.
1234
1257
 
1235
1258
  Args:
1259
+ extra_allowed_issue_numbers: Additional issue numbers, besides
1260
+ *issue_number*, that a commit subject may legitimately reference
1261
+ without being flagged foreign (#2545) — see
1262
+ :func:`_foreign_issue_refs`'s ``extra_allowed`` for why a
1263
+ ``test-author``/``mock-author`` merge entry needs this (its own
1264
+ slice issue, not just the milestone's tracking issue).
1236
1265
  closed_issue_numbers: Issue numbers that are known to be closed/merged
1237
1266
  in the upstream repo. When a commit's subject references *only*
1238
- issues in this set (and not ``issue_number``), it is downgraded
1239
- from a **blocking** foreign finding to an **advisory** one (#1279).
1267
+ issues in this set (and not ``issue_number`` or
1268
+ ``extra_allowed_issue_numbers``), it is downgraded from a
1269
+ **blocking** foreign finding to an **advisory** one (#1279).
1240
1270
  The rationale: a commit referencing a *closed* issue cannot be
1241
1271
  live rebase-pollution — it is almost certainly a worker typo in the
1242
1272
  commit subject. Pass the empty frozenset (default) to preserve the
@@ -1271,7 +1301,9 @@ def verify_merge_branch(
1271
1301
  foreign: list[tuple[str, str]] = []
1272
1302
  advisory_foreign: list[tuple[str, str]] = []
1273
1303
  for sha, subj in added:
1274
- foreign_refs = _foreign_issue_refs(subj, issue_number)
1304
+ foreign_refs = _foreign_issue_refs(
1305
+ subj, issue_number, extra_allowed=extra_allowed_issue_numbers
1306
+ )
1275
1307
  if not foreign_refs:
1276
1308
  continue # not flagged — own work or bare message
1277
1309
  # #1279: downgrade to advisory when ALL referenced foreign issues are
@@ -1312,6 +1344,17 @@ def resolve_closed_issue_numbers(
1312
1344
  Returns an empty frozenset immediately when *repo_github* is falsy or
1313
1345
  *foreign_commits* is empty, so callers can skip the second verify pass
1314
1346
  entirely (``if closed: ...``) without an extra branch.
1347
+
1348
+ Deliberately does **not** accept an ``extra_allowed_issue_numbers``
1349
+ parameter to thread through to :func:`_foreign_issue_refs` (#2545
1350
+ review): *foreign_commits* here is always the ``.foreign`` list a prior,
1351
+ ``extra_allowed``-aware :func:`verify_merge_branch` pass already
1352
+ produced, and ``_foreign_issue_refs`` treats any overlap with the "home"
1353
+ set (``{issue_number} | extra_allowed``) as voiding a commit's foreign
1354
+ status entirely — so no subject surviving into *foreign_commits* can
1355
+ reference an ``extra_allowed`` issue in the first place. If a future
1356
+ caller ever feeds this something other than a prior pass's ``.foreign``,
1357
+ re-check this assumption before relying on it.
1315
1358
  """
1316
1359
  foreign_commits = list(foreign_commits)
1317
1360
  if not repo_github or not foreign_commits:
@@ -3355,6 +3355,26 @@ def _dispatch_merge_of(
3355
3355
  )
3356
3356
  sys.exit(2)
3357
3357
 
3358
+ # #2545: a `type="test-author"`/`"mock-author"` work row's `issue_number`
3359
+ # (== `issue` above) is always the milestone's TRACKING issue, but its
3360
+ # commit correctly cites the slice's OWN child issue — resolved via the
3361
+ # canonical `coord.models.effective_issue_number` helper (built for
3362
+ # exactly this tracking-vs-slice distinction, #1553) rather than reading
3363
+ # `for_issue_number` directly, so this stays in sync with the other
3364
+ # callers of that helper (e.g. `merge_queue._test_author_effective_
3365
+ # issue_number`) instead of drifting as an independent copy. Without
3366
+ # allowing the resolved issue too, the #604 FOREIGN check below flags
3367
+ # every JIT slice's own, correctly-labeled commit on every single verify.
3368
+ # Ordinary `work` assignments have no `for_issue_number`, so this
3369
+ # resolves to `issue` itself — already in the "home" set, a harmless
3370
+ # no-op.
3371
+ from coord.models import effective_issue_number as _mg_effective_issue_number # noqa: PLC0415
3372
+
3373
+ _mg_for_issue = _mg_effective_issue_number(work)
3374
+ _mg_extra_allowed = (
3375
+ frozenset({_mg_for_issue}) if _mg_for_issue and _mg_for_issue != issue else frozenset()
3376
+ )
3377
+
3358
3378
  resolved_model = model if model else cfg.models.default
3359
3379
  assignment_id = _uuid.uuid4().hex[:12]
3360
3380
  if _is_local:
@@ -3607,6 +3627,9 @@ def _dispatch_merge_of(
3607
3627
  # #604: git truth overrides the agent's self-report on the
3608
3628
  # merge path — a botched rebase records `blocked`, not `done`.
3609
3629
  verify_merge=True,
3630
+ # #2545: allow the JIT slice's own child issue, not just the
3631
+ # tracking issue, in the FOREIGN check.
3632
+ extra_allowed_issue_numbers=_mg_extra_allowed,
3610
3633
  branch=work.branch,
3611
3634
  )
3612
3635
  _echo_merge_finalize(finalize_result, merge_target_branch)
@@ -3869,6 +3892,9 @@ def _dispatch_merge_of(
3869
3892
  exit_code=exit_code,
3870
3893
  started_at=started_at,
3871
3894
  verify_merge=True,
3895
+ # #2545: allow the JIT slice's own child issue, not just the
3896
+ # tracking issue, in the FOREIGN check.
3897
+ extra_allowed_issue_numbers=_mg_extra_allowed,
3872
3898
  )
3873
3899
  _echo_merge_finalize(finalize_result, merge_target_branch)
3874
3900
  _mv = finalize_result.merge_verify
@@ -11,7 +11,7 @@ import click
11
11
 
12
12
 
13
13
  from coord.commands._common import _CONFIG_OPTION, _load_config
14
- from coord.models import WORK_LIKE_TYPES
14
+ from coord.models import WORK_LIKE_TYPES, effective_issue_number
15
15
 
16
16
 
17
17
  def _machine_for_assignment(board, assignment_id: str | None) -> str | None:
@@ -726,10 +726,26 @@ def verify_merge(
726
726
  err=True,
727
727
  )
728
728
  sys.exit(2)
729
+ extra_allowed: frozenset[int] = frozenset()
729
730
  else:
730
731
  repo_name = work.repo_name
731
732
  issue_num = int(work.issue_number)
732
733
  branch_display = work.branch or "(unknown)"
734
+ # #2545: a `type="test-author"`/`"mock-author"` merge entry's
735
+ # `issue_number` is always the milestone's TRACKING issue (every JIT
736
+ # slice for one milestone shares a branch/PR), but its commit
737
+ # correctly cites the slice's OWN child issue — resolved via the
738
+ # canonical `effective_issue_number` helper (built for exactly this
739
+ # tracking-vs-slice distinction, #1553) rather than reading
740
+ # `for_issue_number` directly, so this stays in sync with the other
741
+ # callers of that helper (e.g. `merge_queue._test_author_effective_
742
+ # issue_number`) instead of drifting as an independent copy. Ordinary
743
+ # `work` assignments have no `for_issue_number`, so this resolves to
744
+ # `issue_num` itself — already in the "home" set, a harmless no-op.
745
+ _for_issue = effective_issue_number(work)
746
+ extra_allowed = (
747
+ frozenset({_for_issue}) if _for_issue and _for_issue != issue_num else frozenset()
748
+ )
733
749
 
734
750
  repo_cfg = cfg.repo(repo_name)
735
751
  base = (repo_cfg.default_branch if repo_cfg else None) or "main"
@@ -747,14 +763,23 @@ def verify_merge(
747
763
  repo_github = repo_cfg.github if repo_cfg else None
748
764
  wt_path = Path(path_opt).expanduser() if path_opt else Path.cwd()
749
765
 
750
- mv = verify_merge_branch(wt_path, base=base, issue_number=issue_num)
766
+ mv = verify_merge_branch(
767
+ wt_path,
768
+ base=base,
769
+ issue_number=issue_num,
770
+ extra_allowed_issue_numbers=extra_allowed,
771
+ )
751
772
  # #1279: only worth a `gh` round-trip when the cheap git-only pass above
752
773
  # actually found blocking foreign commits — corroborate against GitHub's
753
774
  # closed-issue state and re-verify with the downgrade signal populated.
754
775
  closed = resolve_closed_issue_numbers(repo_github, mv.foreign, issue_num)
755
776
  if closed:
756
777
  mv = verify_merge_branch(
757
- wt_path, base=base, issue_number=issue_num, closed_issue_numbers=closed
778
+ wt_path,
779
+ base=base,
780
+ issue_number=issue_num,
781
+ extra_allowed_issue_numbers=extra_allowed,
782
+ closed_issue_numbers=closed,
758
783
  )
759
784
 
760
785
  click.echo(f"branch: {branch_display}")
@@ -3057,6 +3057,7 @@ def finalize_interactive_exit(
3057
3057
  repo_path: str | None = None,
3058
3058
  artifact_paths: list[str] | None = None,
3059
3059
  verify_merge: bool = False,
3060
+ extra_allowed_issue_numbers: frozenset[int] = frozenset(),
3060
3061
  ssh_target: str | None = None,
3061
3062
  branch: str | None = None,
3062
3063
  smoke_repo_path: str | None = None,
@@ -3116,6 +3117,12 @@ def finalize_interactive_exit(
3116
3117
  session, with no structured block, no transcript floor, and no fallback
3117
3118
  if that command never ran (#1351). ``None`` (every non-smoke caller)
3118
3119
  makes this an unconditional no-op.
3120
+
3121
+ *extra_allowed_issue_numbers* (#2545): forwarded to
3122
+ :func:`coord.agent.verify_merge_branch`'s parameter of the same name —
3123
+ additional issue numbers a merge-prep commit subject may legitimately
3124
+ reference (besides *issue_number*) without tripping the #604 FOREIGN
3125
+ check. Only meaningful when *verify_merge* is set; ignored otherwise.
3119
3126
  """
3120
3127
  _effective_patterns = list(artifact_paths or [])
3121
3128
 
@@ -3197,7 +3204,10 @@ def finalize_interactive_exit(
3197
3204
  )
3198
3205
 
3199
3206
  merge_verify = verify_merge_branch(
3200
- wt_v, base=base_branch, issue_number=issue_number
3207
+ wt_v,
3208
+ base=base_branch,
3209
+ issue_number=issue_number,
3210
+ extra_allowed_issue_numbers=extra_allowed_issue_numbers,
3201
3211
  )
3202
3212
  # #1279: corroborate blocking foreign commits against GitHub's
3203
3213
  # closed-issue state before deciding — a typo'd reference to an
@@ -3210,6 +3220,7 @@ def finalize_interactive_exit(
3210
3220
  wt_v,
3211
3221
  base=base_branch,
3212
3222
  issue_number=issue_number,
3223
+ extra_allowed_issue_numbers=extra_allowed_issue_numbers,
3213
3224
  closed_issue_numbers=closed,
3214
3225
  )
3215
3226
  if not merge_verify.ok:
@@ -3915,6 +3926,7 @@ def _remote_verify_merge_branch(
3915
3926
  base: str,
3916
3927
  issue_number: int,
3917
3928
  timeout: float = 30.0,
3929
+ extra_allowed_issue_numbers: frozenset[int] = frozenset(),
3918
3930
  closed_issue_numbers: frozenset[int] = frozenset(),
3919
3931
  ) -> MergeVerify:
3920
3932
  """Remote (over ssh) analogue of :func:`coord.agent.verify_merge_branch`
@@ -3935,6 +3947,11 @@ def _remote_verify_merge_branch(
3935
3947
  same conservative "unverifiable ⇒ not ok" fallback as the local function.
3936
3948
 
3937
3949
  Args:
3950
+ extra_allowed_issue_numbers: Mirrors the same parameter in
3951
+ :func:`coord.agent.verify_merge_branch` (#2545) — additional
3952
+ issue numbers, besides *issue_number*, that a commit subject may
3953
+ legitimately reference without being flagged foreign (a
3954
+ ``test-author``/``mock-author`` slice's own child issue).
3938
3955
  closed_issue_numbers: Mirrors the same parameter in
3939
3956
  :func:`coord.agent.verify_merge_branch` — issue numbers known to
3940
3957
  be closed/merged. Foreign-subject commits referencing only
@@ -3990,7 +4007,9 @@ def _remote_verify_merge_branch(
3990
4007
  foreign: list[tuple[str, str]] = []
3991
4008
  advisory_foreign: list[tuple[str, str]] = []
3992
4009
  for sha, subj in added:
3993
- foreign_refs = _foreign_issue_refs(subj, issue_number)
4010
+ foreign_refs = _foreign_issue_refs(
4011
+ subj, issue_number, extra_allowed=extra_allowed_issue_numbers
4012
+ )
3994
4013
  if not foreign_refs:
3995
4014
  continue
3996
4015
  if closed_issue_numbers and foreign_refs.issubset(closed_issue_numbers):
@@ -4088,6 +4107,7 @@ def finalize_remote_interactive_exit(
4088
4107
  started_at: float | None = None,
4089
4108
  artifact_paths: list[str] | None = None,
4090
4109
  verify_merge: bool = False,
4110
+ extra_allowed_issue_numbers: frozenset[int] = frozenset(),
4091
4111
  ) -> InteractiveFinalizeResult:
4092
4112
  """Remote (#486d) analog of :func:`finalize_interactive_exit` for a remote
4093
4113
  interactive FIX (and, since #1007, a remote ``--merge-of``).
@@ -4116,6 +4136,12 @@ def finalize_remote_interactive_exit(
4116
4136
  self-report, so a botched remote rebase is never silently accepted as
4117
4137
  ``done``. This check runs FIRST, before the ``_assignment_already_recorded``
4118
4138
  fast path below — do NOT reorder it after that check.
4139
+
4140
+ ``extra_allowed_issue_numbers`` (#2545): mirrors the same parameter on
4141
+ :func:`finalize_interactive_exit` — forwarded to
4142
+ :func:`_remote_verify_merge_branch` so a ``test-author``/``mock-author``
4143
+ slice's own child-issue commit doesn't trip the FOREIGN check just
4144
+ because *issue_number* here is the milestone's tracking issue.
4119
4145
  """
4120
4146
  _effective_patterns = list(artifact_paths or [])
4121
4147
 
@@ -4130,6 +4156,7 @@ def finalize_remote_interactive_exit(
4130
4156
  merge_verify = _remote_verify_merge_branch(
4131
4157
  ssh_target, remote_worktree_sh,
4132
4158
  base=base_branch, issue_number=issue_number,
4159
+ extra_allowed_issue_numbers=extra_allowed_issue_numbers,
4133
4160
  )
4134
4161
  # #1279: same corroboration as the local finalize path — re-verify
4135
4162
  # with the closed-issue downgrade signal only when the first (cheap,
@@ -4141,6 +4168,7 @@ def finalize_remote_interactive_exit(
4141
4168
  merge_verify = _remote_verify_merge_branch(
4142
4169
  ssh_target, remote_worktree_sh,
4143
4170
  base=base_branch, issue_number=issue_number,
4171
+ extra_allowed_issue_numbers=extra_allowed_issue_numbers,
4144
4172
  closed_issue_numbers=closed,
4145
4173
  )
4146
4174
  if not merge_verify.ok:
@@ -571,6 +571,94 @@ class TestClearExpectedRedEntries:
571
571
  assert clear_expected_red_entries("tests:\n a: 1\n", 1, {"a"}) is None
572
572
 
573
573
 
574
+ class TestClearExpectedRedEntriesQuotedIds:
575
+ """#2296: every Playwright manifest id is double-quoted (an unquoted
576
+ leading `[chromium]` would parse as a YAML flow sequence, not a string),
577
+ so the clearer must compare the *parsed* scalar, not the raw line text,
578
+ or it can never match a real web-playwright manifest."""
579
+
580
+ PLAYWRIGHT_ID = "[chromium] ms-1/84-front-door.spec.ts › placeholder"
581
+
582
+ def test_double_quoted_id_is_cleared(self) -> None:
583
+ text = (
584
+ "expected_red:\n"
585
+ f' 84:\n - "{self.PLAYWRIGHT_ID}"\n'
586
+ )
587
+ result = clear_expected_red_entries(text, 84, {self.PLAYWRIGHT_ID})
588
+ assert result is not None
589
+ assert "expected_red" not in result
590
+ data = parse_manifest_text(text)
591
+ assert data.expected_red == {84: frozenset({self.PLAYWRIGHT_ID})}
592
+
593
+ def test_single_quoted_id_is_cleared(self) -> None:
594
+ text = "expected_red:\n 1:\n - 'plain single quoted'\n"
595
+ result = clear_expected_red_entries(text, 1, {"plain single quoted"})
596
+ assert result is not None
597
+ assert "expected_red" not in result
598
+
599
+ def test_single_quoted_id_with_embedded_quote_escape_is_cleared(self) -> None:
600
+ # YAML's single-quote escape for an embedded `'` is `''`.
601
+ text = "expected_red:\n 1:\n - 'it''s red'\n"
602
+ data = parse_manifest_text(text)
603
+ assert data.expected_red == {1: frozenset({"it's red"})}
604
+ result = clear_expected_red_entries(text, 1, {"it's red"})
605
+ assert result is not None
606
+ assert "expected_red" not in result
607
+
608
+ def test_plain_unquoted_id_still_clears(self) -> None:
609
+ """The unquoted case already worked before #2296 — must keep working."""
610
+ text = "expected_red:\n 1:\n - plain_unquoted_id\n"
611
+ result = clear_expected_red_entries(text, 1, {"plain_unquoted_id"})
612
+ assert result is not None
613
+ assert "expected_red" not in result
614
+
615
+ def test_id_containing_a_hash_is_cleared_not_truncated_as_a_comment(self) -> None:
616
+ """Inside a quoted scalar, `#` is data, not a comment delimiter —
617
+ `sub_line.split("#", 1)` would truncate the id and miss it."""
618
+ id_with_hash = "issue #84 regression check"
619
+ text = f'expected_red:\n 1:\n - "{id_with_hash}"\n'
620
+ data = parse_manifest_text(text)
621
+ assert data.expected_red == {1: frozenset({id_with_hash})}
622
+ result = clear_expected_red_entries(text, 1, {id_with_hash})
623
+ assert result is not None
624
+ assert "expected_red" not in result
625
+
626
+ def test_quoted_id_with_trailing_comment_is_still_cleared(self) -> None:
627
+ text = (
628
+ "expected_red:\n"
629
+ f' 84:\n - "{self.PLAYWRIGHT_ID}" # flaky, see #91\n'
630
+ )
631
+ result = clear_expected_red_entries(text, 84, {self.PLAYWRIGHT_ID})
632
+ assert result is not None
633
+ assert "expected_red" not in result
634
+
635
+ def test_mixed_quoted_and_plain_partial_clear_preserves_the_other(self) -> None:
636
+ text = (
637
+ "expected_red:\n"
638
+ " 84:\n"
639
+ f' - "{self.PLAYWRIGHT_ID}"\n'
640
+ " - plain_id_stays\n"
641
+ )
642
+ result = clear_expected_red_entries(text, 84, {self.PLAYWRIGHT_ID})
643
+ assert result is not None
644
+ assert "plain_id_stays" in result
645
+ data = parse_manifest_text(result)
646
+ assert data.expected_red == {84: frozenset({"plain_id_stays"})}
647
+
648
+ def test_playwright_manifest_reproduction(self) -> None:
649
+ """The exact reproduction from #2296: a manifest with several
650
+ double-quoted Playwright ids has ALL of them cleared and returns
651
+ updated (non-None) text."""
652
+ ids = [f"[chromium] ms-1/84-front-door.spec.ts › case {i}" for i in range(6)]
653
+ body = "\n".join(f' - "{i}"' for i in ids)
654
+ text = f"expected_red:\n 84:\n{body}\n"
655
+ parsed_ids = parse_manifest_text(text).expected_red[84]
656
+ assert len(parsed_ids) == 6
657
+ result = clear_expected_red_entries(text, 84, parsed_ids)
658
+ assert result is not None
659
+ assert "expected_red" not in result
660
+
661
+
574
662
  class _FakeApiGhOps:
575
663
  """Stub for the GitHub-API-only surface #2164's post-merge clearing
576
664
  sweep needs — no `gh` subprocess, no local checkout. Mirrors
@@ -861,6 +949,26 @@ class TestClearExpectedRedViaPr:
861
949
  msg = clear_expected_red_via_pr("acme/x", "coord-tui", "main", 944, gh_ops=ops)
862
950
  assert "no expected_red entries found" in msg
863
951
 
952
+ def test_no_match_in_text_surgery_is_reported_as_a_warning(self) -> None:
953
+ """#2296: when ids were resolved from the parsed manifest but the
954
+ text-surgery pass finds nothing to remove (e.g. a flow-style
955
+ `944: [ms01::a]` entry the block-style-only text surgery doesn't
956
+ understand — see `_issue_header_re`'s docstring), that is a defect,
957
+ not a benign no-op, and must be `warning:`-prefixed so
958
+ `classify_expected_red_clear_result` reads it as "failed" rather
959
+ than a clean sweep."""
960
+ ops = _FakeApiGhOps({
961
+ "tests/acceptance/ms01/manifest.yml": (
962
+ "tests:\n ms01::a: 944\n"
963
+ "expected_red:\n 944: [ms01::a]\n"
964
+ ),
965
+ })
966
+ msg = clear_expected_red_via_pr("acme/x", "coord-tui", "main", 944, gh_ops=ops)
967
+ assert msg.startswith("warning:")
968
+ assert "nothing matched" in msg
969
+ assert classify_expected_red_clear_result(msg) == "failed"
970
+ assert not ops.created_prs
971
+
864
972
  def test_clears_a_per_issue_fragment_file(self) -> None:
865
973
  """#2543: clearing an issue whose expected_red lives in its OWN
866
974
  manifest.d/<issue>.yml fragment edits exactly that file, and the
@@ -927,7 +1035,7 @@ class TestClassifyExpectedRedClearResult:
927
1035
 
928
1036
  def test_unchanged_text_is_a_failure(self) -> None:
929
1037
  assert classify_expected_red_clear_result(
930
- "expected_red text unchanged (nothing matched)"
1038
+ "warning: expected_red text unchanged (nothing matched)"
931
1039
  ) == "failed"
932
1040
 
933
1041