code-coordinator 0.5.223__tar.gz → 0.5.225__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (810) hide show
  1. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/confirm_test.py +67 -2
  5. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notify.py +34 -3
  6. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/coord-test-runner.sh +26 -0
  7. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_confirm_test.py +129 -3
  8. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_coord_test_runner_baseline.py +77 -0
  9. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notify.py +1 -1
  10. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.claude/commands/board.md +0 -0
  11. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.claude/commands/complete-session.md +0 -0
  12. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.claude/commands/coordinator.md +0 -0
  13. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.githooks/_lib.sh +0 -0
  14. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.githooks/post-checkout +0 -0
  15. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.githooks/post-commit +0 -0
  16. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.githooks/post-merge +0 -0
  17. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  18. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.github/coord-ci-acceptance.yml +0 -0
  19. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.github/workflows/auto-release.yml +0 -0
  20. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.github/workflows/cargo-test.yml +0 -0
  21. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.github/workflows/publish.yml +0 -0
  22. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.github/workflows/release-tui.yml +0 -0
  23. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.github/workflows/test.yml +0 -0
  24. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/.gitignore +0 -0
  25. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/CLAUDE.md +0 -0
  26. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/GOAL.md +0 -0
  27. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/LICENSE +0 -0
  28. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/MANIFEST.in +0 -0
  29. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/README.md +0 -0
  30. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/SOURCES.txt +0 -0
  31. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/dependency_links.txt +0 -0
  32. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/entry_points.txt +0 -0
  33. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/requires.txt +0 -0
  34. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/scm_file_list.json +0 -0
  35. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/code_coordinator.egg-info/top_level.txt +0 -0
  36. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/__init__.py +0 -0
  37. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/_board_mapping.py +0 -0
  38. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/acceptance.py +0 -0
  39. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/acceptance_drivers.py +0 -0
  40. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/agent.py +0 -0
  41. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/agent_app.py +0 -0
  42. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/agent_update.py +0 -0
  43. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/agents/opencode/.gitignore +0 -0
  44. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/agents/opencode/agents/work.md +0 -0
  45. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/agents/opencode/routing.jsonc +0 -0
  46. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/approved_work.py +0 -0
  47. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/audit.py +0 -0
  48. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/auto_loop.py +0 -0
  49. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/block_log.py +0 -0
  50. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/board_bool_guard.py +0 -0
  51. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/board_service.py +0 -0
  52. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/board_wire.py +0 -0
  53. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/brain.py +0 -0
  54. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/branch_model.py +0 -0
  55. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/bug_intake.py +0 -0
  56. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/cargo_cache.py +0 -0
  57. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/ci_fix.py +0 -0
  58. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/ci_github.py +0 -0
  59. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/ci_gitlab.py +0 -0
  60. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/ci_store.py +0 -0
  61. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/claim.py +0 -0
  62. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/cli.py +0 -0
  63. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/client.py +0 -0
  64. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/__init__.py +0 -0
  65. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/_common.py +0 -0
  66. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/acceptance.py +0 -0
  67. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/agent_ops.py +0 -0
  68. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/audit.py +0 -0
  69. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/chat.py +0 -0
  70. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/dispatch.py +0 -0
  71. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/dispatch_workers.py +0 -0
  72. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/drive.py +0 -0
  73. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/drive_queue.py +0 -0
  74. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/gate_a.py +0 -0
  75. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/gates.py +0 -0
  76. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/issues.py +0 -0
  77. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/lifecycle.py +0 -0
  78. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/merge.py +0 -0
  79. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/milestone.py +0 -0
  80. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/plan_followup.py +0 -0
  81. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/plans.py +0 -0
  82. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/portal.py +0 -0
  83. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/release.py +0 -0
  84. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/repo.py +0 -0
  85. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/report.py +0 -0
  86. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/review.py +0 -0
  87. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/scorecard.py +0 -0
  88. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/sessions.py +0 -0
  89. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/setup.py +0 -0
  90. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/status.py +0 -0
  91. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/terminal.py +0 -0
  92. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/test_gate.py +0 -0
  93. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/commands/tui.py +0 -0
  94. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/comments.py +0 -0
  95. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/config.py +0 -0
  96. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/config_reload.py +0 -0
  97. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/conflict_fix.py +0 -0
  98. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dao.py +0 -0
  99. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dashboard/__init__.py +0 -0
  100. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dashboard/fixture.py +0 -0
  101. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dashboard/index.html +0 -0
  102. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dashboard/server.py +0 -0
  103. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dashboard/terminal.py +0 -0
  104. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/db.py +0 -0
  105. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dead_end.py +0 -0
  106. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/README.md +0 -0
  107. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-agent.service +0 -0
  108. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-db-backup.service +0 -0
  109. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-db-backup.sh +0 -0
  110. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-db-backup.timer +0 -0
  111. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-drive-queue.service +0 -0
  112. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-drive-queue.timer +0 -0
  113. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-notify.service +0 -0
  114. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-notify.timer +0 -0
  115. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-release-propagate.service +0 -0
  116. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-release-propagate.timer +0 -0
  117. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-release-window.service +0 -0
  118. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-release-window.timer +0 -0
  119. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-serve.service +0 -0
  120. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-web-dist-build.service +0 -0
  121. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-web-dist-build.timer +0 -0
  122. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy/coord-web.service +0 -0
  123. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy_manifest.py +0 -0
  124. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deploy_units.py +0 -0
  125. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/deps.py +0 -0
  126. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/diagnose.py +0 -0
  127. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dispatch.py +0 -0
  128. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/dist_name.py +0 -0
  129. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/drive.py +0 -0
  130. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/drive_queue.py +0 -0
  131. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/drive_state.py +0 -0
  132. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/events.py +0 -0
  133. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/failure_class.py +0 -0
  134. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/filelock.py +0 -0
  135. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/fleet_config_health.py +0 -0
  136. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/forge_availability.py +0 -0
  137. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/freshness.py +0 -0
  138. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/gate_a.py +0 -0
  139. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/gate_b.py +0 -0
  140. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/gate_snapshot.py +0 -0
  141. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/gates.py +0 -0
  142. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/github_ops.py +0 -0
  143. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/goal.py +0 -0
  144. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/graph_health.py +0 -0
  145. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/__init__.py +0 -0
  146. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/aggregate.py +0 -0
  147. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/__init__.py +0 -0
  148. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/agent_install.py +0 -0
  149. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/cargo_targets.py +0 -0
  150. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/claude_binary.py +0 -0
  151. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/coord_web_ci_pin.py +0 -0
  152. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/deploy_lane_facts.py +0 -0
  153. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/disk.py +0 -0
  154. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/fleet_board.py +0 -0
  155. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  156. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/fleet_phantom.py +0 -0
  157. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/fleet_unit_drift.py +0 -0
  158. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/graph.py +0 -0
  159. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/graphify_cli.py +0 -0
  160. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/index_lock.py +0 -0
  161. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/plan_usage.py +0 -0
  162. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/repo_state.py +0 -0
  163. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/spawned_coord.py +0 -0
  164. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/timer_active.py +0 -0
  165. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/toolchain.py +0 -0
  166. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/unit_drift.py +0 -0
  167. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/unit_enablement.py +0 -0
  168. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/checks/worktrees.py +0 -0
  169. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/cli.py +0 -0
  170. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/context.py +0 -0
  171. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/fleet_snapshot.py +0 -0
  172. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/models.py +0 -0
  173. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/pypi.py +0 -0
  174. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/registry.py +0 -0
  175. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/render.py +0 -0
  176. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/health/units.py +0 -0
  177. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/hooks.py +0 -0
  178. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/housekeeping.py +0 -0
  179. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/interactive.py +0 -0
  180. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/issue_store.py +0 -0
  181. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/liveness_auditor.py +0 -0
  182. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/machine_pause.py +0 -0
  183. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/merge_queue.py +0 -0
  184. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/milestone_chat.py +0 -0
  185. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/milestone_dispatch.py +0 -0
  186. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/milestone_gate.py +0 -0
  187. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/milestone_order.py +0 -0
  188. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/mock_author.py +0 -0
  189. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/models.py +0 -0
  190. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/network.py +0 -0
  191. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/new_issue_chat.py +0 -0
  192. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/__init__.py +0 -0
  193. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/baseline.py +0 -0
  194. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/cli.py +0 -0
  195. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/collect.py +0 -0
  196. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/digest.py +0 -0
  197. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/models.py +0 -0
  198. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/predicate.py +0 -0
  199. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/service.py +0 -0
  200. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/store.py +0 -0
  201. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/notifier/transport.py +0 -0
  202. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/openapi.py +0 -0
  203. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/overlap_fence.py +0 -0
  204. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/overlap_predict.py +0 -0
  205. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/parentage.py +0 -0
  206. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/parentage_github.py +0 -0
  207. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/pipeline.py +0 -0
  208. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/plan_parser.py +0 -0
  209. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/plans.py +0 -0
  210. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/platform_paths.py +0 -0
  211. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/portal_bridge.py +0 -0
  212. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/portal_store.py +0 -0
  213. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/portal_sync.py +0 -0
  214. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/pr_body_lint.py +0 -0
  215. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/prereqs.py +0 -0
  216. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/progress.py +0 -0
  217. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/providers/__init__.py +0 -0
  218. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/providers/base.py +0 -0
  219. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/providers/claude.py +0 -0
  220. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/providers/claude_pty.py +0 -0
  221. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/providers/opencode.py +0 -0
  222. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/queue_diagnose.py +0 -0
  223. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/reconcile.py +0 -0
  224. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/reconcile_tick.py +0 -0
  225. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/refine_chat.py +0 -0
  226. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/release_cordon.py +0 -0
  227. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/release_propagate.py +0 -0
  228. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/release_verify.py +0 -0
  229. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/release_window.py +0 -0
  230. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/repo_edit.py +0 -0
  231. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/repo_onboard.py +0 -0
  232. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/reports.py +0 -0
  233. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/revalidate.py +0 -0
  234. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/review.py +0 -0
  235. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/scorecard.py +0 -0
  236. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/self_health.py +0 -0
  237. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/serve_app.py +0 -0
  238. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  239. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  240. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  241. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  242. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  243. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/portal-followup/SKILL.md +0 -0
  244. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  245. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  246. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/skills/update-issue/SKILL.md +0 -0
  247. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/smoke.py +0 -0
  248. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/spend_ceiling.py +0 -0
  249. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/split_work.py +0 -0
  250. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/stage_projection.py +0 -0
  251. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/state.py +0 -0
  252. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/test_author.py +0 -0
  253. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/test_chat.py +0 -0
  254. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/test_orchestrator.py +0 -0
  255. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/test_report.py +0 -0
  256. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/tui_release.py +0 -0
  257. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/usage.py +0 -0
  258. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/usage_limits.py +0 -0
  259. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/usage_rollup.py +0 -0
  260. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coord/worker_events.py +0 -0
  261. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/coordinator.example.yml +0 -0
  262. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-agent.service +0 -0
  263. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-db-backup.service +0 -0
  264. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-db-backup.sh +0 -0
  265. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-db-backup.timer +0 -0
  266. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-drive-queue.service +0 -0
  267. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-drive-queue.timer +0 -0
  268. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-notify.service +0 -0
  269. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-notify.timer +0 -0
  270. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-release-propagate.service +0 -0
  271. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-release-propagate.timer +0 -0
  272. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-release-window.service +0 -0
  273. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-release-window.timer +0 -0
  274. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-serve.service +0 -0
  275. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-web-dist-build.service +0 -0
  276. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-web-dist-build.sh +0 -0
  277. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-web-dist-build.timer +0 -0
  278. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-web-rollback.sh +0 -0
  279. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/coord-web.service +0 -0
  280. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/deploy/node-shim.sh +0 -0
  281. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  282. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/ADR_COORD_WEB_CI.md +0 -0
  283. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/ADR_COORD_WEB_DIST.md +0 -0
  284. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/AGENT_OPERATIONS.md +0 -0
  285. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/ARCHITECTURE.md +0 -0
  286. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/ARCH_SECURITY_GATES.md +0 -0
  287. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/COCKPIT.md +0 -0
  288. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/CONTROL_CENTER.md +0 -0
  289. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/COST_DISCIPLINE.md +0 -0
  290. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/CROSS_PLATFORM.md +0 -0
  291. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/CUSTOMER_PORTAL.md +0 -0
  292. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/DRIVE_QUEUE.md +0 -0
  293. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/EPHEMERAL_WORKERS.md +0 -0
  294. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/FORGE_MIGRATION.md +0 -0
  295. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/GRAPHIFY_SETUP.md +0 -0
  296. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/ISSUE_GUIDANCE.md +0 -0
  297. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/MAC_MINI.md +0 -0
  298. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  299. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/NOTIFIER.md +0 -0
  300. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/OPENCODE_VERIFICATION.md +0 -0
  301. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/OPERATING_GOTCHAS.md +0 -0
  302. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/ORACLE_LOOP.md +0 -0
  303. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/PHONE_WEBAPP.md +0 -0
  304. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/PIPELINE_V2.md +0 -0
  305. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/PLATFORM_EVOLUTION.md +0 -0
  306. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/SECOND_BACKEND.md +0 -0
  307. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/STORE_SERVICE.md +0 -0
  308. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  309. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/WEB_CONTROL_CENTER.md +0 -0
  310. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/WSL_WINDOWS_WORKER.md +0 -0
  311. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/mocks/web/README.md +0 -0
  312. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/mocks/web/_tokens.css +0 -0
  313. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/mocks/web/issue-detail.html +0 -0
  314. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/mocks/web/pipeline-narrow.html +0 -0
  315. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/docs/mocks/web/pipeline-wide.html +0 -0
  316. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/graphify-out/.gitignore +0 -0
  317. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/install-agent.sh +0 -0
  318. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/pyproject.toml +0 -0
  319. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/audit_review_verdict_overrides.py +0 -0
  320. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  321. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/build-worker-image.sh +0 -0
  322. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/coordinator-machine.py +0 -0
  323. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/epic-down.sh +0 -0
  324. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/epic-up.sh +0 -0
  325. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/preflight.sh +0 -0
  326. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/provision-worker.sh +0 -0
  327. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  328. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  329. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/azure-workers/verify-github-token.sh +0 -0
  330. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/check_gh_argv_containment.py +0 -0
  331. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/codegen.py +0 -0
  332. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/drive-batch.sh +0 -0
  333. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/gen_board_fixture.py +0 -0
  334. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/gen_mock_index.py +0 -0
  335. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/next_release_tag.py +0 -0
  336. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/run_tests_in_populated_home.sh +0 -0
  337. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/run_tests_without_gh.sh +0 -0
  338. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/smoke_437_interactive.py +0 -0
  339. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/verify_878_review_capture.py +0 -0
  340. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/verify_release_published.py +0 -0
  341. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/scripts/verify_release_wheel.py +0 -0
  342. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/setup.cfg +0 -0
  343. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/SMOKE_SET.md +0 -0
  344. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/__init__.py +0 -0
  345. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  346. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-33/contract.md +0 -0
  347. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-33/manifest.yml +0 -0
  348. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  349. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  350. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  351. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  352. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-37/conftest.py +0 -0
  353. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-37/contract.md +0 -0
  354. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-37/manifest.yml +0 -0
  355. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  356. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  357. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/contract.md +0 -0
  358. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/manifest.yml +0 -0
  359. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  360. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  361. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  362. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  363. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  364. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  365. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  366. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  367. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  368. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  369. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-51/contract.md +0 -0
  370. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  371. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  372. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-51/manifest.yml +0 -0
  373. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  374. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-51/tsconfig.json +0 -0
  375. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  376. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  377. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  378. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/contract.md +0 -0
  379. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  380. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/manifest.yml +0 -0
  381. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  382. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  383. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  384. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  385. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  386. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  387. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  388. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  389. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  390. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  391. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  392. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
  393. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/contract.md +0 -0
  394. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/manifest.yml +0 -0
  395. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
  396. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
  397. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
  398. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
  399. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
  400. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  401. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/conftest.py +0 -0
  402. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/board-pipeline-basic.json +0 -0
  403. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  404. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  405. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  406. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  407. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/playwright/all_pass.json +0 -0
  408. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  409. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/playwright/mixed_fail.json +0 -0
  410. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  411. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  412. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/playwright/skip.json +0 -0
  413. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/playwright/truncated.json +0 -0
  414. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  415. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  416. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  417. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  418. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  419. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  420. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  421. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  422. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_acceptance.py +0 -0
  423. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_acceptance_drivers.py +0 -0
  424. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent.py +0 -0
  425. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_api_error.py +0 -0
  426. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_app.py +0 -0
  427. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_branch_base.py +0 -0
  428. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_branch_capture.py +0 -0
  429. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_config_free_1712.py +0 -0
  430. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_deploy_units_endpoint.py +0 -0
  431. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_dirty_worktree.py +0 -0
  432. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  433. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_graph_self_heal.py +0 -0
  434. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_health_h3.py +0 -0
  435. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_idle_restart.py +0 -0
  436. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_push_failure.py +0 -0
  437. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_reap.py +0 -0
  438. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_repos_and_pull.py +0 -0
  439. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_restart_services_endpoint.py +0 -0
  440. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_skills_self_heal.py +0 -0
  441. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_startup_diagnostics.py +0 -0
  442. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_update.py +0 -0
  443. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_update_bluegreen.py +0 -0
  444. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_usage_limit.py +0 -0
  445. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_agent_zero_commit.py +0 -0
  446. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_ambient_home_isolation.py +0 -0
  447. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_approve_reject_plan.py +0 -0
  448. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_approve_usage_gate.py +0 -0
  449. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_approved_work_2532.py +0 -0
  450. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_assignment_already_recorded_daemon.py +0 -0
  451. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_audit_log.py +0 -0
  452. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_audit_outcome.py +0 -0
  453. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_audit_query.py +0 -0
  454. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_auto_loop.py +0 -0
  455. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_auto_release_publish_2035.py +0 -0
  456. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_base_checkout_restore.py +0 -0
  457. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_block_log.py +0 -0
  458. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_board_cap_762.py +0 -0
  459. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_board_fixture.py +0 -0
  460. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_board_read_path.py +0 -0
  461. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_board_service.py +0 -0
  462. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_board_state.py +0 -0
  463. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_board_wire.py +0 -0
  464. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_brain.py +0 -0
  465. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_branch_model.py +0 -0
  466. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_bug_intake.py +0 -0
  467. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_build_worker_image_env_update.py +0 -0
  468. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cargo_cache.py +0 -0
  469. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_check_gh_argv_containment.py +0 -0
  470. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_ci_acceptance_gate_1950.py +0 -0
  471. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_ci_fix.py +0 -0
  472. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_ci_gitlab.py +0 -0
  473. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_ci_parity_2091.py +0 -0
  474. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_ci_store.py +0 -0
  475. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_claim.py +0 -0
  476. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_acceptance.py +0 -0
  477. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_assign.py +0 -0
  478. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  479. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_assign_interactive_remote.py +0 -0
  480. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_assign_provider.py +0 -0
  481. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  482. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_audit.py +0 -0
  483. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_chat_continue.py +0 -0
  484. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_decide.py +0 -0
  485. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_diagnose_config_provenance.py +0 -0
  486. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_diagnose_forge_availability.py +0 -0
  487. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_diagnose_graph.py +0 -0
  488. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_diagnose_self.py +0 -0
  489. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_doctor.py +0 -0
  490. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_doctor_config_free_1801.py +0 -0
  491. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  492. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_drive.py +0 -0
  493. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_drive_queue.py +0 -0
  494. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_escalate.py +0 -0
  495. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_fix_headless_review.py +0 -0
  496. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_gate_a.py +0 -0
  497. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_install_drift.py +0 -0
  498. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_install_skills.py +0 -0
  499. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_issue_create_label.py +0 -0
  500. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_issue_reopen.py +0 -0
  501. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_merge.py +0 -0
  502. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_assign.py +0 -0
  503. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_capture.py +0 -0
  504. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_chat_add_child.py +0 -0
  505. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_dispatch.py +0 -0
  506. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_gate_b.py +0 -0
  507. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_gate_c.py +0 -0
  508. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_order.py +0 -0
  509. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  510. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_milestone_ship.py +0 -0
  511. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_network.py +0 -0
  512. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_new_issue_chat.py +0 -0
  513. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_plans.py +0 -0
  514. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_portal.py +0 -0
  515. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_pull_artifact.py +0 -0
  516. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_queue.py +0 -0
  517. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_reattach_sessions.py +0 -0
  518. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_refine_board.py +0 -0
  519. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_release_preflight.py +0 -0
  520. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_release_propagate.py +0 -0
  521. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_release_window.py +0 -0
  522. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_repo_2220.py +0 -0
  523. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_scorecard.py +0 -0
  524. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_set_review_findings.py +0 -0
  525. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_status_advisory_terminal.py +0 -0
  526. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_status_merge_queue.py +0 -0
  527. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_status_provider.py +0 -0
  528. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_status_review_finalizing.py +0 -0
  529. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_status_test_failed_tag.py +0 -0
  530. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_status_usage_limit.py +0 -0
  531. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_sync_comments_873.py +0 -0
  532. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_test_plan.py +0 -0
  533. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_track.py +0 -0
  534. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_tui_update.py +0 -0
  535. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cli_wait.py +0 -0
  536. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_client_base_install.py +0 -0
  537. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_comments.py +0 -0
  538. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_completion_summary.py +0 -0
  539. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_config.py +0 -0
  540. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_config_acceptance.py +0 -0
  541. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_config_audit.py +0 -0
  542. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_config_pricing.py +0 -0
  543. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  544. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_config_usage_gate.py +0 -0
  545. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_conflict_fix.py +0 -0
  546. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_conflict_fix_semantic.py +0 -0
  547. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_coord_test.py +0 -0
  548. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_coord_test_runner_populated_home.py +0 -0
  549. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_coord_test_runner_routing.py +0 -0
  550. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_coord_test_runner_toolchain.py +0 -0
  551. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_coord_web_sse_restart_live.py +0 -0
  552. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_coordinator_machine.py +0 -0
  553. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_cross_platform_imports.py +0 -0
  554. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dashboard.py +0 -0
  555. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dashboard_fixture.py +0 -0
  556. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dashboard_terminal.py +0 -0
  557. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dashboard_terminal_live.py +0 -0
  558. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_db.py +0 -0
  559. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dead_end.py +0 -0
  560. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_coord_db_backup.py +0 -0
  561. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_coord_web_dist.py +0 -0
  562. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_coord_web_rollback.py +0 -0
  563. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_drive_queue_unit.py +0 -0
  564. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_manifest.py +0 -0
  565. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_notify_unit.py +0 -0
  566. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_units_lane.py +0 -0
  567. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deploy_web_unit.py +0 -0
  568. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_deps.py +0 -0
  569. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_diagnose.py +0 -0
  570. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dispatch.py +0 -0
  571. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dispatch_target_validation.py +0 -0
  572. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_dist_name.py +0 -0
  573. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_done_housekeeping.py +0 -0
  574. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_drive.py +0 -0
  575. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_drive_queue.py +0 -0
  576. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_drive_state.py +0 -0
  577. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_drive_tmux.py +0 -0
  578. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_epic_up_capability_detection.py +0 -0
  579. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  580. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_epic_up_image_provenance.py +0 -0
  581. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_errors.py +0 -0
  582. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_events.py +0 -0
  583. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_failure_class.py +0 -0
  584. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_filelock.py +0 -0
  585. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  586. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_fix_of_force_override.py +0 -0
  587. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_fleet_config_health.py +0 -0
  588. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_fleet_health_probes.py +0 -0
  589. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_fleet_health_snapshot.py +0 -0
  590. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_forge_availability.py +0 -0
  591. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_freshness.py +0 -0
  592. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_gate_a.py +0 -0
  593. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_gate_b.py +0 -0
  594. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_gate_snapshot_staleness.py +0 -0
  595. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_gates.py +0 -0
  596. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  597. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_gen_mock_index.py +0 -0
  598. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_generated_types_fixture.py +0 -0
  599. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_github_ops.py +0 -0
  600. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_goal.py +0 -0
  601. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_graph_health.py +0 -0
  602. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_graph_selfheal_absent_2237.py +0 -0
  603. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_handoff.py +0 -0
  604. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_checks.py +0 -0
  605. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_cli.py +0 -0
  606. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_cli_graph.py +0 -0
  607. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_config.py +0 -0
  608. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_context.py +0 -0
  609. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_coord_web_ci_pin.py +0 -0
  610. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_deploy_lane_facts.py +0 -0
  611. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_incident_regression.py +0 -0
  612. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_pypi.py +0 -0
  613. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_registry.py +0 -0
  614. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_timer_active.py +0 -0
  615. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_toolchain.py +0 -0
  616. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_unit_drift.py +0 -0
  617. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_health_unit_enablement.py +0 -0
  618. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_hooks.py +0 -0
  619. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_human_attended_437.py +0 -0
  620. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_init.py +0 -0
  621. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_integration.py +0 -0
  622. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_interactive_briefing_echo.py +0 -0
  623. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_interactive_prefill_state.py +0 -0
  624. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_interactive_session_relaunch.py +0 -0
  625. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_interactive_test_verdict_backstop.py +0 -0
  626. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_interactive_token_attribution.py +0 -0
  627. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_interactive_worktree.py +0 -0
  628. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_issue_store_seam.py +0 -0
  629. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_liveness_auditor.py +0 -0
  630. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_liveness_notify.py +0 -0
  631. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_machine_pause.py +0 -0
  632. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_merge_queue.py +0 -0
  633. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_merge_verify.py +0 -0
  634. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_milestone_chat.py +0 -0
  635. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_milestone_dispatch.py +0 -0
  636. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_milestone_gate.py +0 -0
  637. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_milestone_order.py +0 -0
  638. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_milestone_seam.py +0 -0
  639. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_mock_author.py +0 -0
  640. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_model_tiering.py +0 -0
  641. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_models.py +0 -0
  642. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_models_config_labels.py +0 -0
  643. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_needs_attention.py +0 -0
  644. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_network.py +0 -0
  645. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_new_issue_chat.py +0 -0
  646. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_next_release_tag.py +0 -0
  647. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_node_shim.py +0 -0
  648. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_baseline.py +0 -0
  649. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_cli.py +0 -0
  650. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_collect.py +0 -0
  651. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_config.py +0 -0
  652. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_drive_seam.py +0 -0
  653. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_isolation.py +0 -0
  654. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_predicate.py +0 -0
  655. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_quiet_hours.py +0 -0
  656. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notifier_service.py +0 -0
  657. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_notify_drain.py +0 -0
  658. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_openapi.py +0 -0
  659. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_operational_defaults.py +0 -0
  660. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_overlap_fence.py +0 -0
  661. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_overlap_predict.py +0 -0
  662. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_packaged_deploy_units.py +0 -0
  663. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_parentage.py +0 -0
  664. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_paste_landed.py +0 -0
  665. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_pipeline.py +0 -0
  666. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_plan_followup_approve_plan_command.py +0 -0
  667. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_plan_followup_pr_command.py +0 -0
  668. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_plan_followup_review_command.py +0 -0
  669. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_plan_only.py +0 -0
  670. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_plan_parser.py +0 -0
  671. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_platform_paths.py +0 -0
  672. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_portal_bridge.py +0 -0
  673. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_portal_config.py +0 -0
  674. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_portal_store.py +0 -0
  675. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_portal_sync.py +0 -0
  676. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_pr_body_lint.py +0 -0
  677. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_prereqs.py +0 -0
  678. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_production_db_guard.py +0 -0
  679. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_progress.py +0 -0
  680. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_provider_seam.py +0 -0
  681. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_providers.py +0 -0
  682. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_providers_config_labels.py +0 -0
  683. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_providers_pty.py +0 -0
  684. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_quiet_hours.py +0 -0
  685. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_quiet_hours_store_2146.py +0 -0
  686. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reap_merged_sessions.py +0 -0
  687. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reap_stale_interactive_tick.py +0 -0
  688. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reconcile.py +0 -0
  689. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reconcile_branch.py +0 -0
  690. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reconcile_completions.py +0 -0
  691. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reconcile_merges.py +0 -0
  692. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reconcile_no_agent_record.py +0 -0
  693. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reconcile_tick.py +0 -0
  694. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reconcile_usage_limit_done.py +0 -0
  695. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_refine_chat.py +0 -0
  696. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_cordon_2101.py +0 -0
  697. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  698. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_cordon_deadlock_2240.py +0 -0
  699. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_cordon_stuck_2490.py +0 -0
  700. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_propagate.py +0 -0
  701. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_unified_1242.py +0 -0
  702. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_verify.py +0 -0
  703. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_release_window.py +0 -0
  704. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_remote_auto_prune.py +0 -0
  705. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_remote_interactive_reaper.py +0 -0
  706. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_repo_edit_2220.py +0 -0
  707. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_repo_graph_fleet_2237.py +0 -0
  708. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_repo_onboard_2220.py +0 -0
  709. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_report_result_push.py +0 -0
  710. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_reports.py +0 -0
  711. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_retry.py +0 -0
  712. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_retry_advisory_1606.py +0 -0
  713. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_retry_type_1636.py +0 -0
  714. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_revalidate.py +0 -0
  715. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review.py +0 -0
  716. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_end_review_without_verdict.py +0 -0
  717. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_parse_failure_diagnostic.py +0 -0
  718. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_reaffirm.py +0 -0
  719. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_state.py +0 -0
  720. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_verdict_backstop.py +0 -0
  721. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_verdict_override_audit.py +0 -0
  722. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_verdict_relay.py +0 -0
  723. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_review_zero_commits.py +0 -0
  724. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_scoped_review_wiring.py +0 -0
  725. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_scorecard.py +0 -0
  726. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_self_health.py +0 -0
  727. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_serve.py +0 -0
  728. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_serve_app_board_trim.py +0 -0
  729. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_session.py +0 -0
  730. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_slice_issue_attribution.py +0 -0
  731. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_smoke.py +0 -0
  732. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_smoke_live_checkout_restore.py +0 -0
  733. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_smoke_workflow.py +0 -0
  734. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_spend_ceiling.py +0 -0
  735. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_spend_ceiling_coordinator.py +0 -0
  736. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_split.py +0 -0
  737. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_split_work.py +0 -0
  738. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_stage_projection.py +0 -0
  739. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_stalled_pipeline.py +0 -0
  740. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_state.py +0 -0
  741. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_state_review_findings_daemon.py +0 -0
  742. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_status_fleet_footer.py +0 -0
  743. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_stop_1567.py +0 -0
  744. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_stuck.py +0 -0
  745. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_terminal_command.py +0 -0
  746. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_test_author.py +0 -0
  747. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_test_chat.py +0 -0
  748. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_test_orchestrator.py +0 -0
  749. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_test_report.py +0 -0
  750. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_test_verdict_parsing.py +0 -0
  751. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_test_verdict_transcript_floor.py +0 -0
  752. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_thin_client_board_audit.py +0 -0
  753. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_thin_client_config_load_1080.py +0 -0
  754. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_thin_client_daemon_routing_906.py +0 -0
  755. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_tmux_host.py +0 -0
  756. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_tmux_session.py +0 -0
  757. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_transcript_floor.py +0 -0
  758. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_usage.py +0 -0
  759. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_usage_limits.py +0 -0
  760. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_usage_rollup.py +0 -0
  761. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_venv_live_install_2121.py +0 -0
  762. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_version_single_source.py +0 -0
  763. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_watch.py +0 -0
  764. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  765. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_worker_events.py +0 -0
  766. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_worker_image_pin_sync.py +0 -0
  767. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_worker_safety.py +0 -0
  768. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_worker_test_scoping.py +0 -0
  769. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_worktree.py +0 -0
  770. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  771. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/Cargo.lock +0 -0
  772. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/Cargo.toml +0 -0
  773. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/cargo-config-local-quadraui.toml.example +0 -0
  774. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/approved.rs +0 -0
  775. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/audit.rs +0 -0
  776. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/chat.rs +0 -0
  777. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/data.rs +0 -0
  778. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/dialogs.rs +0 -0
  779. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/doc_tabs.rs +0 -0
  780. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/drive.rs +0 -0
  781. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/drive_queue.rs +0 -0
  782. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/escalation.rs +0 -0
  783. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/events.rs +0 -0
  784. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/fixtures.rs +0 -0
  785. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/fleet_health.rs +0 -0
  786. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/fleet_sessions.rs +0 -0
  787. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/fleet_terminals.rs +0 -0
  788. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/format.rs +0 -0
  789. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/milestone_dag.rs +0 -0
  790. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/mod.rs +0 -0
  791. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/msv.rs +0 -0
  792. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/pipeline.rs +0 -0
  793. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/plans.rs +0 -0
  794. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/render.rs +0 -0
  795. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/reports.rs +0 -0
  796. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/sessions.rs +0 -0
  797. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/settings_ui.rs +0 -0
  798. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/sidebar.rs +0 -0
  799. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/terminal.rs +0 -0
  800. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/tests.rs +0 -0
  801. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/types.rs +0 -0
  802. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/app/workspace.rs +0 -0
  803. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/bin/gtk.rs +0 -0
  804. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/commands.rs +0 -0
  805. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/lib.rs +0 -0
  806. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/main.rs +0 -0
  807. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/src/settings.rs +0 -0
  808. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/tests/acceptance.rs +0 -0
  809. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/tui/tests/cli.rs +0 -0
  810. {code_coordinator-0.5.223 → code_coordinator-0.5.225}/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.223
3
+ Version: 0.5.225
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.223
3
+ Version: 0.5.225
4
4
  Summary: Coordinate Claude Code workers across multiple machines and repos.
5
5
  Author-email: John Donaghy <johnfdonaghy@gmail.com>
6
6
  License-Expression: LicenseRef-FSL-1.1-MIT
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.223",
2
+ "tag": "0.5.225",
3
3
  "distance": 0,
4
- "node": "g744223e42f4d266aef3954a9aaed09de74827289",
4
+ "node": "g58cb8cb15dcd2273e9500a56722b2430b3601848",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-22"
@@ -333,6 +333,45 @@ class ConfirmationResult:
333
333
  return self.kind in INCONCLUSIVE_KINDS
334
334
 
335
335
 
336
+ def write_confirmation_output(assignment_id: str, result: ConfirmationResult) -> Path | None:
337
+ """Persist a confirmation run's captured output tail for the fix briefing (#2563).
338
+
339
+ ``coord fix`` (:mod:`coord.commands.plan_followup`) already prefers
340
+ ``COORD_DIR/test_output/<assignment_id>.txt`` over every other evidence
341
+ source when it composes an escalated fix worker's briefing — `coord test
342
+ --fail --output` (:mod:`coord.commands.test_gate`) has written it there
343
+ since #1337. Before this function existed, a #2464 refutation captured
344
+ ``result.output`` (already bounded to a tail by :func:`_tail` in
345
+ :func:`_classify_failure` / :func:`_timeout_output`) and then only ever
346
+ handed it to ``log.warning`` — the fix worker got a one-line reason and no
347
+ failing test names, no tracebacks, and had to re-derive the diagnosis the
348
+ daemon already held in memory.
349
+
350
+ *assignment_id* is the parent **work** row's id (the one the fix leg is
351
+ spawned from), not the confirming smoke transition's id — same key
352
+ :func:`coord.commands.plan_followup.fix` reads back by.
353
+
354
+ A no-op, returning ``None``, when there is nothing to write (``KIND_OK``
355
+ and ``KIND_SETUP`` both carry an empty ``.output`` — the former because
356
+ nothing failed, the latter because no command ever ran) or when the write
357
+ itself fails (a read-only ``COORD_DIR``, a full disk, ...); this must
358
+ never break verdict recording, which is why the caller in
359
+ :mod:`coord.notify` treats it as best-effort.
360
+ """
361
+ if not result.output:
362
+ return None
363
+ from coord.state import COORD_DIR # noqa: PLC0415
364
+
365
+ try:
366
+ test_output_dir = COORD_DIR / "test_output"
367
+ test_output_dir.mkdir(parents=True, exist_ok=True)
368
+ stored = test_output_dir / f"{assignment_id}.txt"
369
+ stored.write_text(result.output)
370
+ except OSError:
371
+ return None
372
+ return stored
373
+
374
+
336
375
  def confirmation_enabled(config=None) -> bool:
337
376
  """Whether Test-stage PASS claims get independently confirmed.
338
377
 
@@ -488,6 +527,29 @@ def unmet_confirmation_capabilities(
488
527
  return [cap for cap in match_rules(touched, rules) if cap not in have]
489
528
 
490
529
 
530
+ def _timeout_output(exc: subprocess.TimeoutExpired) -> str:
531
+ """Partial stdout/stderr captured before a confirmation command timed out.
532
+
533
+ ``subprocess.run(..., capture_output=True, timeout=...)`` fills ``.stdout``
534
+ / ``.stderr`` in on `TimeoutExpired` — the child had already written
535
+ *something* by the deadline — but the two `except subprocess.TimeoutExpired`
536
+ arms in :func:`confirm_branch` discarded it entirely, so a TIMEOUT verdict
537
+ carried strictly less evidence than BASELINE_RED/SIGNAL did even though the
538
+ same partial output was sitting right there on the exception (#2563).
539
+ Guards for ``None``/bytes since a test's stand-in *runner* seam may raise a
540
+ bare ``TimeoutExpired(cmd, timeout)`` with neither attribute set.
541
+ """
542
+ out = getattr(exc, "stdout", None) or ""
543
+ err = getattr(exc, "stderr", None) or ""
544
+ if isinstance(out, bytes):
545
+ out = out.decode("utf-8", errors="replace")
546
+ if isinstance(err, bytes):
547
+ err = err.decode("utf-8", errors="replace")
548
+ if not out and not err:
549
+ return ""
550
+ return _tail(out + "\n" + err)
551
+
552
+
491
553
  def _classify_failure(
492
554
  stage: str, returncode: int, output: str, worktree: Path, command: str,
493
555
  ) -> ConfirmationResult:
@@ -741,7 +803,7 @@ def confirm_branch(
741
803
  echo(f" confirming build: {build_command}")
742
804
  try:
743
805
  built = run_cmd(build_command, wt_path, _left())
744
- except subprocess.TimeoutExpired:
806
+ except subprocess.TimeoutExpired as exc:
745
807
  return ConfirmationResult(
746
808
  kind=KIND_TIMEOUT,
747
809
  reason=(
@@ -749,6 +811,7 @@ def confirm_branch(
749
811
  "suite that did not finish says nothing about the "
750
812
  "branch"
751
813
  ),
814
+ output=_timeout_output(exc),
752
815
  command=build_command,
753
816
  worktree=wt_path,
754
817
  )
@@ -780,13 +843,14 @@ def confirm_branch(
780
843
  echo(f" confirming tests: {test_command}")
781
844
  try:
782
845
  tested = run_cmd(test_command, wt_path, _left())
783
- except subprocess.TimeoutExpired:
846
+ except subprocess.TimeoutExpired as exc:
784
847
  return ConfirmationResult(
785
848
  kind=KIND_TIMEOUT,
786
849
  reason=(
787
850
  f"confirmation suite timed out after {timeout}s — a "
788
851
  "suite that did not finish says nothing about the branch"
789
852
  ),
853
+ output=_timeout_output(exc),
790
854
  command=test_command,
791
855
  worktree=wt_path,
792
856
  )
@@ -835,4 +899,5 @@ __all__ = [
835
899
  "notify_client_timeout_seconds",
836
900
  "spend_confirmation_budget",
837
901
  "unmet_confirmation_capabilities",
902
+ "write_confirmation_output",
838
903
  ]
@@ -2011,7 +2011,7 @@ def _run_pass_confirmation(transition: Transition, entry: dict):
2011
2011
 
2012
2012
 
2013
2013
  def _confirmed_pass_verdict(
2014
- transition: Transition, entry: dict, *, claim_reason: str,
2014
+ transition: Transition, entry: dict, parent_id: str, *, claim_reason: str,
2015
2015
  ) -> tuple[str, str]:
2016
2016
  """#2464: the ``(test_state, test_reason)`` to record for a *claimed* pass.
2017
2017
 
@@ -2033,7 +2033,19 @@ def _confirmed_pass_verdict(
2033
2033
  #2464, with ``UNCONFIRMED`` in the reason so the row says plainly that
2034
2034
  nobody checked. See :mod:`coord.confirm_test` on why a missing toolchain,
2035
2035
  a missing checkout or a timeout must never read as a failing branch.
2036
+
2037
+ #2563: whatever output the run captured — failing node ids, the
2038
+ assertion, tracebacks — is also persisted to *parent_id*'s
2039
+ ``test_output/<id>.txt`` (:func:`coord.confirm_test.write_confirmation_output`)
2040
+ before this returns, so the escalated fix worker's briefing
2041
+ (`coord/commands/plan_followup.py`, which already reads that file ahead of
2042
+ every other evidence source) quotes the real failure instead of the
2043
+ one-line *reason* alone. ``test_reason`` on the row stays exactly that
2044
+ one-line summary — #1337 deliberately keeps unbounded free text out of the
2045
+ board upsert, and this does not undo that; the file is the long form.
2036
2046
  """
2047
+ from coord.confirm_test import write_confirmation_output # noqa: PLC0415
2048
+
2037
2049
  result = _run_pass_confirmation(transition, entry)
2038
2050
 
2039
2051
  if result is None:
@@ -2044,6 +2056,24 @@ def _confirmed_pass_verdict(
2044
2056
  "(#2464).",
2045
2057
  )
2046
2058
 
2059
+ # Best-effort and unconditional on *kind*: REFUTED/BASELINE-RED/TIMEOUT/
2060
+ # INFRA/SIGNAL all carry a captured tail (`ConfirmationResult.output`) worth
2061
+ # keeping around; CONFIRMED and setup-stage inconclusives carry none, so
2062
+ # this is simply a no-op for them (`write_confirmation_output` checks
2063
+ # `.output` itself, and swallows `OSError`). Wrapped again here — this
2064
+ # runs inside the reap loop, and this whole module's standing rule is that
2065
+ # nothing in it may abandon a transition; a write failure must degrade to
2066
+ # "no file", never to a dropped verdict.
2067
+ try:
2068
+ write_confirmation_output(parent_id, result)
2069
+ except Exception as exc: # noqa: BLE001
2070
+ log.warning(
2071
+ "smoke %s: could not persist confirmation output for parent %s "
2072
+ "(%s) — the fix briefing will fall back to the one-line reason "
2073
+ "(#2563).",
2074
+ transition.assignment_id, parent_id, exc,
2075
+ )
2076
+
2047
2077
  if result.refuted:
2048
2078
  log.warning(
2049
2079
  "smoke %s: REFUTED the pass claim for %s — %s\n%s",
@@ -2153,7 +2183,7 @@ def _record_smoke_verdict(
2153
2183
  # claim would leave no trace it ever happened — including on the
2154
2184
  # next reap of the same already-passed parent.
2155
2185
  state, reason = _confirmed_pass_verdict(
2156
- transition, entry,
2186
+ transition, entry, parent_id,
2157
2187
  claim_reason="worker self-recorded via `coord test` (#2217)",
2158
2188
  )
2159
2189
  record_test_verdict(
@@ -2228,7 +2258,8 @@ def _record_smoke_verdict(
2228
2258
  # never finished polling (#2272/#2301). Confirm it against a real run
2229
2259
  # before it becomes a merge-gate-satisfying verdict.
2230
2260
  state, reason = _confirmed_pass_verdict(
2231
- transition, entry, claim_reason="headless smoke reported SMOKE: pass",
2261
+ transition, entry, parent_id,
2262
+ claim_reason="headless smoke reported SMOKE: pass",
2232
2263
  )
2233
2264
  record_test_verdict(
2234
2265
  assignment_id=parent_id,
@@ -829,6 +829,32 @@ run_python() {
829
829
  return $?
830
830
  fi
831
831
 
832
+ # #2562: the isolation re-run above is not all-or-nothing evidence — its
833
+ # own `FAILED ` lines say EXACTLY which node ids survived. Rebuild
834
+ # $failed from those before doing anything else: a test that dropped out
835
+ # PASSED in isolation and is by definition the flake case this whole
836
+ # block exists to catch. Handing the ORIGINAL (unpruned) set to the
837
+ # baseline comparison below is the bug this closes — one genuine failure
838
+ # was keeping a flake in the set, and the baseline comparison is itself
839
+ # all-or-nothing (#2170's unanimity), so the flake alone could suppress a
840
+ # correct BASELINE-RED downgrade.
841
+ local still_failed
842
+ still_failed="$(grep '^FAILED ' "$rerun" | awk '{print $2}' | sort -u || true)"
843
+ if [[ -z "$still_failed" ]]; then
844
+ # Non-zero exit but no parseable FAILED lines — e.g. a collection/
845
+ # import error on the isolated re-run. Nothing to prune against;
846
+ # fall back to the original set rather than claim a pruning that
847
+ # did not happen.
848
+ still_failed="$failed"
849
+ fi
850
+ local pruned_count; pruned_count="$(printf '%s\n' "$still_failed" | grep -c . || true)"
851
+ if [[ "$pruned_count" -lt "$count" ]]; then
852
+ log "$((count - pruned_count)) of $count failing test(s) passed in isolation — treating as flakes, comparing the remaining $pruned_count against the baseline"
853
+ FLAKES+=("python:$((count - pruned_count))")
854
+ fi
855
+ failed="$still_failed"
856
+ count="$pruned_count"
857
+
832
858
  # Not a flake. Before calling it the branch's fault, ask the question the
833
859
  # Test gate is actually asked: is this worse than $BASE_REF on THIS machine?
834
860
  # (#2170 — see the baseline section above for why this only ever downgrades
@@ -299,6 +299,30 @@ class TestConfirmBranch:
299
299
  assert result.refuted is False
300
300
  assert result.inconclusive is True
301
301
 
302
+ def test_timeout_captures_the_partial_output_before_the_kill(
303
+ self, checkout: Path
304
+ ) -> None:
305
+ """#2563: a timed-out suite still says SOMETHING — whatever it had
306
+ printed by the deadline. `subprocess.run(capture_output=True,
307
+ timeout=...)` fills `TimeoutExpired.stdout`/`.stderr` in on the way
308
+ out; before this, `confirm_branch` discarded both and a TIMEOUT
309
+ verdict carried strictly less evidence than a real failure did.
310
+ """
311
+ runner = _ScriptedRunner(
312
+ default=subprocess.TimeoutExpired(
313
+ cmd="run-the-suite", timeout=1,
314
+ output="tests/test_x.py::test_a PASSED\ntests/test_x.py::test_b ",
315
+ stderr="Traceback (hung mid-test)",
316
+ )
317
+ )
318
+ result = ct.confirm_branch(
319
+ "api", BRANCH, _StubConfig(repo_path=str(checkout)), runner=runner,
320
+ )
321
+
322
+ assert result.kind == KIND_TIMEOUT, result.reason
323
+ assert "test_a PASSED" in result.output
324
+ assert "Traceback (hung mid-test)" in result.output
325
+
302
326
  def test_signal_killed_suite_is_inconclusive_not_a_refutation(
303
327
  self, checkout: Path
304
328
  ) -> None:
@@ -592,6 +616,54 @@ class TestConfirmationEnabled:
592
616
  assert ct.confirmation_enabled(object()) is True
593
617
 
594
618
 
619
+ class TestWriteConfirmationOutput:
620
+ """#2563: the missing write — a confirmation's captured tail must reach
621
+ ``COORD_DIR/test_output/<assignment_id>.txt``, the same file `coord fix`
622
+ (`coord/commands/plan_followup.py`) already prefers over every other
623
+ evidence source when composing an escalated fix worker's briefing.
624
+ """
625
+
626
+ def test_writes_the_output_tail_keyed_by_assignment_id(
627
+ self, isolated_coord_dir: Path
628
+ ) -> None:
629
+ result = ct.ConfirmationResult(
630
+ kind=KIND_SUITE,
631
+ reason="the independently-run suite command FAILED (exit 1)",
632
+ output="tests/test_x.py::test_a FAILED\nE assert 0 == 1",
633
+ returncode=1,
634
+ )
635
+
636
+ stored = ct.write_confirmation_output("work-1", result)
637
+
638
+ expected = isolated_coord_dir / "test_output" / "work-1.txt"
639
+ assert stored == expected
640
+ assert expected.read_text() == result.output
641
+
642
+ def test_no_op_when_the_result_carries_no_output(
643
+ self, isolated_coord_dir: Path
644
+ ) -> None:
645
+ """`KIND_OK` (confirmed) and setup-stage inconclusives carry an empty
646
+ `.output` — nothing to persist, and nothing should be written."""
647
+ result = ct.ConfirmationResult(kind=KIND_OK, reason="passed", output="")
648
+
649
+ stored = ct.write_confirmation_output("work-1", result)
650
+
651
+ assert stored is None
652
+ assert not (isolated_coord_dir / "test_output").exists()
653
+
654
+ def test_a_write_failure_returns_none_rather_than_raising(
655
+ self, isolated_coord_dir: Path
656
+ ) -> None:
657
+ """This runs inside the reap path (`coord.notify`) — a read-only
658
+ `COORD_DIR`, a full disk, or any other `OSError` must degrade to "no
659
+ file", never abandon the verdict it is attached to."""
660
+ # A file sitting where the directory needs to go makes `mkdir` raise.
661
+ (isolated_coord_dir / "test_output").write_text("not a directory")
662
+ result = ct.ConfirmationResult(kind=KIND_SUITE, reason="x", output="boom")
663
+
664
+ assert ct.write_confirmation_output("work-1", result) is None
665
+
666
+
595
667
  # ── the wiring: end to end through post_transition ───────────────────────────
596
668
 
597
669
 
@@ -714,6 +786,51 @@ class TestSmokeVerdictIsConfirmed:
714
786
  f"guessing: {row['test_reason']!r}"
715
787
  )
716
788
 
789
+ def test_refutation_leaves_the_captured_tail_for_the_fix_briefing(
790
+ self, coord_db, tmp_path: Path, isolated_coord_dir: Path
791
+ ) -> None:
792
+ """#2563: before this, `result.output` reached `log.warning` and
793
+ nowhere else — the escalated fix worker got a one-line reason and no
794
+ failing test names, no tracebacks. `coord fix`
795
+ (`coord/commands/plan_followup.py:962`) reads
796
+ `COORD_DIR/test_output/<parent_work_id>.txt` ahead of every other
797
+ evidence source, so that is where the captured tail must land — keyed
798
+ by the WORK row's id (`work-1`), not the confirming smoke
799
+ transition's (`smoke-1`), since that is the assignment a fix leg is
800
+ spawned from.
801
+ """
802
+ self._record_work()
803
+ self._record_smoke()
804
+ transition, record, entry = self._transition(tmp_path, "SMOKE: pass")
805
+ captured_output = (
806
+ "tests/test_drive.py::test_a_dead_end_exit_code_reaches_the_"
807
+ "drive_exited_audit_row FAILED\n"
808
+ "tests/test_drive.py:2581: in "
809
+ "test_a_dead_end_exit_code_reaches_the_drive_exited_audit_row\n"
810
+ " assert len(escalations) == 1\n"
811
+ "E assert 0 == 1"
812
+ )
813
+
814
+ self._reap(
815
+ transition, record, entry,
816
+ ct.ConfirmationResult(
817
+ kind=KIND_SUITE,
818
+ reason="the independently-run suite command FAILED (exit 1)",
819
+ output=captured_output,
820
+ returncode=1,
821
+ ),
822
+ )
823
+
824
+ stored = isolated_coord_dir / "test_output" / "work-1.txt"
825
+ assert stored.exists(), (
826
+ "a refuted pass claim must leave the captured tail at "
827
+ f"{stored} for `coord fix` to read"
828
+ )
829
+ assert stored.read_text() == captured_output
830
+ # And nothing lands under the smoke leg's OWN id — `coord fix` is
831
+ # dispatched against the work row, not the smoke transition.
832
+ assert not (isolated_coord_dir / "test_output" / "smoke-1.txt").exists()
833
+
717
834
  def test_self_recorded_pass_is_overturned_by_a_failing_real_run(
718
835
  self, coord_db, tmp_path: Path
719
836
  ) -> None:
@@ -850,9 +967,14 @@ class TestSmokeVerdictIsConfirmed:
850
967
  )
851
968
 
852
969
  def test_baseline_red_confirmation_records_skipped(
853
- self, coord_db, tmp_path: Path
970
+ self, coord_db, tmp_path: Path, isolated_coord_dir: Path
854
971
  ) -> None:
855
- """#2170's convention: not the branch's fault, so no fix round burns."""
972
+ """#2170's convention: not the branch's fault, so no fix round burns.
973
+
974
+ #2563: a `skipped` verdict whose evidence is unreadable is only
975
+ marginally better than a bare one — the baseline-red tail gets the
976
+ same test_output-file treatment as a REFUTED one.
977
+ """
856
978
  self._record_work()
857
979
  self._record_smoke()
858
980
  transition, record, entry = self._transition(tmp_path, "SMOKE: pass")
@@ -860,7 +982,9 @@ class TestSmokeVerdictIsConfirmed:
860
982
  self._reap(
861
983
  transition, record, entry,
862
984
  ct.ConfirmationResult(
863
- kind=KIND_BASELINE_RED, reason="every failure reproduces on the base",
985
+ kind=KIND_BASELINE_RED,
986
+ reason="every failure reproduces on the base",
987
+ output="tests/test_x.py::test_a FAILED (also red on main)",
864
988
  ),
865
989
  )
866
990
 
@@ -868,6 +992,8 @@ class TestSmokeVerdictIsConfirmed:
868
992
  assert row["test_state"] == "skipped", (
869
993
  f"expected 'skipped' for a red baseline, got {row['test_state']!r}"
870
994
  )
995
+ stored = isolated_coord_dir / "test_output" / "work-1.txt"
996
+ assert stored.read_text() == "tests/test_x.py::test_a FAILED (also red on main)"
871
997
 
872
998
  def test_a_fail_marker_does_not_spend_a_confirmation_run(
873
999
  self, coord_db, tmp_path: Path
@@ -97,6 +97,15 @@ if [[ "$1" == "-m" && "$2" == "pytest" ]]; then
97
97
  printf '%s passed\n' "2"
98
98
  exit 0
99
99
  fi
100
+ # #2562: a PARTIAL isolation re-run — one node id genuinely still
101
+ # fails, the rest passed. Distinct from FAKE_RERUN_PASSES (all pass,
102
+ # exit 0) and from the "no override" default (everything in
103
+ # FAKE_BRANCH_FAILED fails again, as if isolation changed nothing).
104
+ if [[ "$_targeted" -eq 1 && -n "${FAKE_RERUN_STILL_FAILING:-}" ]]; then
105
+ _emit_failed "$FAKE_RERUN_STILL_FAILING"
106
+ printf '1 failed, 1 passed\n'
107
+ exit 1
108
+ fi
100
109
  _emit_failed "${FAKE_BRANCH_FAILED:-}"
101
110
  printf '2 failed\n'
102
111
  exit 1
@@ -393,6 +402,74 @@ def test_a_flake_is_still_a_flake_and_never_consults_the_baseline(repo: Path) ->
393
402
  assert "baseline:" not in result.stdout + result.stderr
394
403
 
395
404
 
405
+ # ── #2562: partial-flake pruning feeds baseline comparison ──────────────────
406
+ #
407
+ # The all-or-nothing bug: `pytest $failed` re-ran the whole failing set
408
+ # together, so ONE genuine failure alongside a flake kept the flake in
409
+ # `$failed` — and that poisoned set then went to `python_baseline_is_red`,
410
+ # itself unanimity-gated, where the flake (which passes on the baseline same
411
+ # as everywhere else) short-circuited a correct BASELINE-RED downgrade. The
412
+ # fix rebuilds `$failed` from the isolation re-run's own `FAILED ` lines
413
+ # before doing anything else with it.
414
+
415
+
416
+ def test_mixed_flake_and_genuine_prunes_to_baseline_red(repo: Path) -> None:
417
+ """{genuine, flake} prunes to {genuine}, and BASELINE-RED fires on just
418
+ that remainder — the exact CC#2556 shape from the issue: a real flake
419
+ sitting next to a test that fails identically on the merge-base must not
420
+ suppress the downgrade.
421
+ """
422
+ result = _run(
423
+ repo,
424
+ # Isolation re-run: test_one still fails, test_two (the flake) passed
425
+ # and dropped out.
426
+ FAKE_RERUN_STILL_FAILING="tests/test_ambient.py::test_one",
427
+ # Baseline reproduces the one that's left.
428
+ FAKE_BASELINE_FAILED="tests/test_ambient.py::test_one",
429
+ )
430
+
431
+ assert result.returncode == 4, (result.returncode, result.stdout, result.stderr)
432
+ assert "RESULT: BASELINE-RED (python)" in result.stdout
433
+ assert "1 of 2 failing test(s) passed in isolation" in result.stdout
434
+ assert "comparing the remaining 1 against the baseline" in result.stdout
435
+ assert "BASELINE-RED(python): all 1 failing test(s) fail identically" in result.stdout
436
+ # The pruned flake must not appear as part of the (now genuine-only) set.
437
+ assert "tests/test_ambient.py::test_one" in result.stdout
438
+ assert "RESULT: FAIL" not in result.stdout
439
+
440
+
441
+ def test_mixed_flake_and_genuine_prunes_to_a_smaller_genuine_fail(repo: Path) -> None:
442
+ """Same pruning, but the remainder is NOT baseline-red: still a FAIL, but
443
+ for the pruned count and node id only — the reported list must match
444
+ what actually failed on the isolation re-run, not the original set.
445
+ """
446
+ result = _run(
447
+ repo,
448
+ FAKE_RERUN_STILL_FAILING="tests/test_ambient.py::test_one",
449
+ # FAKE_BASELINE_FAILED unset ⇒ baseline is green for test_one too.
450
+ )
451
+
452
+ assert result.returncode == 1
453
+ assert "RESULT: FAIL (python)" in result.stdout
454
+ assert "BASELINE-RED" not in result.stdout
455
+ assert "1 of 2 failing test(s) passed in isolation" in result.stdout
456
+ assert "FAIL(python): 1 test(s) fail on re-run — genuine" in result.stdout
457
+ assert "tests/test_ambient.py::test_one" in result.stdout
458
+ assert "tests/test_ambient.py::test_two" not in (
459
+ result.stdout.split("FAIL(python): 1 test(s) fail on re-run — genuine")[1]
460
+ )
461
+
462
+
463
+ def test_all_genuine_failing_set_is_unaffected_by_pruning(repo: Path) -> None:
464
+ """Both failures still fail in isolation ⇒ nothing pruned, and behaviour
465
+ matches the pre-#2562 baseline-red path exactly (no pruning log line)."""
466
+ result = _run(repo, FAKE_BASELINE_FAILED=BRANCH_FAILED)
467
+
468
+ assert result.returncode == 4
469
+ assert "RESULT: BASELINE-RED (python)" in result.stdout
470
+ assert "passed in isolation" not in result.stdout
471
+
472
+
396
473
  # ── #2180 review fix: the Test stage must agree with CI on tests/acceptance ─
397
474
  #
398
475
  # Before this fix, `--ignore=tests/acceptance` dropped the sealed cli-pytest
@@ -2689,7 +2689,7 @@ class TestConfirmedPassVerdictSignalKill:
2689
2689
  "coord.notify._run_pass_confirmation", return_value=killed,
2690
2690
  ):
2691
2691
  state, reason = _confirmed_pass_verdict(
2692
- self._transition(), entry, claim_reason="SMOKE: pass",
2692
+ self._transition(), entry, "work-1", claim_reason="SMOKE: pass",
2693
2693
  )
2694
2694
 
2695
2695
  assert state == "passed", (