code-coordinator 0.5.454__tar.gz → 0.5.455__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 (878) hide show
  1. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/smoke.py +239 -57
  5. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_smoke.py +328 -2
  6. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.claude/commands/board.md +0 -0
  7. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.claude/commands/complete-session.md +0 -0
  8. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.claude/commands/coordinator.md +0 -0
  9. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.githooks/_lib.sh +0 -0
  10. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.githooks/post-checkout +0 -0
  11. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.githooks/post-commit +0 -0
  12. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.githooks/post-merge +0 -0
  13. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  14. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.github/coord-ci-acceptance.yml +0 -0
  15. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.github/workflows/auto-release.yml +0 -0
  16. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.github/workflows/publish.yml +0 -0
  17. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.github/workflows/test.yml +0 -0
  18. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/.gitignore +0 -0
  19. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/CLAUDE.md +0 -0
  20. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/GOAL.md +0 -0
  21. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/LICENSE +0 -0
  22. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/MANIFEST.in +0 -0
  23. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/README.md +0 -0
  24. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/SOURCES.txt +0 -0
  25. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/dependency_links.txt +0 -0
  26. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/entry_points.txt +0 -0
  27. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/requires.txt +0 -0
  28. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/scm_file_list.json +0 -0
  29. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/code_coordinator.egg-info/top_level.txt +0 -0
  30. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/__init__.py +0 -0
  31. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/_board_mapping.py +0 -0
  32. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/acceptance.py +0 -0
  33. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/acceptance_drivers.py +0 -0
  34. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/agent.py +0 -0
  35. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/agent_app.py +0 -0
  36. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/agent_update.py +0 -0
  37. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/agents/opencode/.gitignore +0 -0
  38. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/agents/opencode/agents/work.md +0 -0
  39. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/agents/opencode/routing.jsonc +0 -0
  40. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/approved_work.py +0 -0
  41. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/audit.py +0 -0
  42. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/auto_loop.py +0 -0
  43. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/backup.py +0 -0
  44. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/block_log.py +0 -0
  45. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/board_schema.py +0 -0
  46. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/board_service.py +0 -0
  47. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/board_wire.py +0 -0
  48. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/brain.py +0 -0
  49. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/branch_model.py +0 -0
  50. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/bug_intake.py +0 -0
  51. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/cargo_cache.py +0 -0
  52. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/ci_fix.py +0 -0
  53. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/ci_github.py +0 -0
  54. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/ci_gitlab.py +0 -0
  55. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/ci_store.py +0 -0
  56. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/claim.py +0 -0
  57. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/cli.py +0 -0
  58. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/client.py +0 -0
  59. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/codegen.py +0 -0
  60. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/__init__.py +0 -0
  61. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/_common.py +0 -0
  62. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/acceptance.py +0 -0
  63. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/agent_ops.py +0 -0
  64. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/audit.py +0 -0
  65. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/backup.py +0 -0
  66. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/chat.py +0 -0
  67. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/codegen.py +0 -0
  68. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/dispatch.py +0 -0
  69. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/dispatch_workers.py +0 -0
  70. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/dr.py +0 -0
  71. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/drive.py +0 -0
  72. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/drive_queue.py +0 -0
  73. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/gate_a.py +0 -0
  74. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/gates.py +0 -0
  75. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/issues.py +0 -0
  76. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/lifecycle.py +0 -0
  77. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/machine.py +0 -0
  78. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/merge.py +0 -0
  79. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/milestone.py +0 -0
  80. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/plan_followup.py +0 -0
  81. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/plans.py +0 -0
  82. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/portal.py +0 -0
  83. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/pr.py +0 -0
  84. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/release.py +0 -0
  85. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/repo.py +0 -0
  86. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/report.py +0 -0
  87. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/review.py +0 -0
  88. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/scorecard.py +0 -0
  89. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/sessions.py +0 -0
  90. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/setup.py +0 -0
  91. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/status.py +0 -0
  92. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/store_migrate.py +0 -0
  93. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/terminal.py +0 -0
  94. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/test_gate.py +0 -0
  95. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/commands/tui.py +0 -0
  96. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/comments.py +0 -0
  97. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/config.py +0 -0
  98. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/config_reload.py +0 -0
  99. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/confirm_test.py +0 -0
  100. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/conflict_fix.py +0 -0
  101. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dao.py +0 -0
  102. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dashboard/__init__.py +0 -0
  103. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dashboard/fixture.py +0 -0
  104. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dashboard/index.html +0 -0
  105. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dashboard/server.py +0 -0
  106. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dashboard/terminal.py +0 -0
  107. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/db.py +0 -0
  108. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dead_end.py +0 -0
  109. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/decomposition_chat.py +0 -0
  110. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/README.md +0 -0
  111. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-agent.service +0 -0
  112. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-backup.service +0 -0
  113. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-backup.timer +0 -0
  114. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-db-backup.service +0 -0
  115. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-db-backup.sh +0 -0
  116. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-db-backup.timer +0 -0
  117. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-dr-verify.service +0 -0
  118. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-dr-verify.timer +0 -0
  119. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-drive-queue.service +0 -0
  120. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-drive-queue.timer +0 -0
  121. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-failure-notify.service +0 -0
  122. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-fleet-watchdog.service +0 -0
  123. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  124. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-notify.service +0 -0
  125. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-notify.timer +0 -0
  126. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-release-propagate.service +0 -0
  127. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-release-propagate.timer +0 -0
  128. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-release-window.service +0 -0
  129. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-release-window.timer +0 -0
  130. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-serve.service +0 -0
  131. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-web-dist-build.service +0 -0
  132. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-web-dist-build.timer +0 -0
  133. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy/coord-web.service +0 -0
  134. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy_manifest.py +0 -0
  135. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deploy_units.py +0 -0
  136. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deprecation_telemetry.py +0 -0
  137. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/deps.py +0 -0
  138. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/diagnose.py +0 -0
  139. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dispatch.py +0 -0
  140. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dist_name.py +0 -0
  141. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dr_promote.py +0 -0
  142. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/dr_verify.py +0 -0
  143. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/drive.py +0 -0
  144. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/drive_queue.py +0 -0
  145. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/drive_state.py +0 -0
  146. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/events.py +0 -0
  147. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/failure_class.py +0 -0
  148. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/filelock.py +0 -0
  149. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/fleet_config_health.py +0 -0
  150. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/forge_availability.py +0 -0
  151. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/freshness.py +0 -0
  152. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/gate_a.py +0 -0
  153. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/gate_b.py +0 -0
  154. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/gate_snapshot.py +0 -0
  155. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/gates.py +0 -0
  156. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/gen_board_fixture.py +0 -0
  157. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/github_ops.py +0 -0
  158. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/github_throttle.py +0 -0
  159. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/goal.py +0 -0
  160. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/graph_health.py +0 -0
  161. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/__init__.py +0 -0
  162. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/aggregate.py +0 -0
  163. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/__init__.py +0 -0
  164. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/_ci_pin.py +0 -0
  165. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/agent_install.py +0 -0
  166. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/cargo_targets.py +0 -0
  167. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/claude_binary.py +0 -0
  168. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/config_drift.py +0 -0
  169. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  170. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/coord_web_ci_pin.py +0 -0
  171. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/deploy_lane_facts.py +0 -0
  172. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/disk.py +0 -0
  173. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/fleet_board.py +0 -0
  174. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  175. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/fleet_phantom.py +0 -0
  176. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/fleet_unit_drift.py +0 -0
  177. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/graph.py +0 -0
  178. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/graphify_cli.py +0 -0
  179. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/index_lock.py +0 -0
  180. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/issues_sync_staleness.py +0 -0
  181. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/plan_usage.py +0 -0
  182. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/pr_churn.py +0 -0
  183. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/release_cordon.py +0 -0
  184. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/repo_state.py +0 -0
  185. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/spawned_coord.py +0 -0
  186. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/stalled_pipeline.py +0 -0
  187. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/timer_active.py +0 -0
  188. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/toolchain.py +0 -0
  189. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/unit_drift.py +0 -0
  190. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/unit_enablement.py +0 -0
  191. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/wedged_drive_queue.py +0 -0
  192. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/checks/worktrees.py +0 -0
  193. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/cli.py +0 -0
  194. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/context.py +0 -0
  195. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/fleet_snapshot.py +0 -0
  196. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/models.py +0 -0
  197. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/pypi.py +0 -0
  198. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/registry.py +0 -0
  199. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/render.py +0 -0
  200. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/health/units.py +0 -0
  201. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/hooks.py +0 -0
  202. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/housekeeping.py +0 -0
  203. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/interactive.py +0 -0
  204. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/issue_store.py +0 -0
  205. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/issues_sync_status.py +0 -0
  206. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/liveness_auditor.py +0 -0
  207. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/machine_metrics.py +0 -0
  208. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/machine_onboard.py +0 -0
  209. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/machine_pause.py +0 -0
  210. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/machine_stats.py +0 -0
  211. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/merge_queue.py +0 -0
  212. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/milestone_chat.py +0 -0
  213. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/milestone_dispatch.py +0 -0
  214. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/milestone_gate.py +0 -0
  215. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/milestone_order.py +0 -0
  216. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/mock_author.py +0 -0
  217. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/models.py +0 -0
  218. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/network.py +0 -0
  219. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/new_issue_chat.py +0 -0
  220. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/__init__.py +0 -0
  221. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/baseline.py +0 -0
  222. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/cli.py +0 -0
  223. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/collect.py +0 -0
  224. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/digest.py +0 -0
  225. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/models.py +0 -0
  226. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/predicate.py +0 -0
  227. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/service.py +0 -0
  228. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/store.py +0 -0
  229. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notifier/transport.py +0 -0
  230. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/notify.py +0 -0
  231. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/openapi.py +0 -0
  232. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/overlap_fence.py +0 -0
  233. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/overlap_predict.py +0 -0
  234. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/parentage.py +0 -0
  235. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/parentage_github.py +0 -0
  236. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/pipeline.py +0 -0
  237. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/plan_parser.py +0 -0
  238. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/plans.py +0 -0
  239. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/platform_paths.py +0 -0
  240. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/portal_bridge.py +0 -0
  241. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/portal_store.py +0 -0
  242. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/portal_sync.py +0 -0
  243. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/pr_body_lint.py +0 -0
  244. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/prereqs.py +0 -0
  245. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/progress.py +0 -0
  246. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/providers/__init__.py +0 -0
  247. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/providers/base.py +0 -0
  248. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/providers/claude.py +0 -0
  249. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/providers/claude_pty.py +0 -0
  250. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/providers/opencode.py +0 -0
  251. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/queue_diagnose.py +0 -0
  252. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/reconcile.py +0 -0
  253. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/reconcile_tick.py +0 -0
  254. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/refine_chat.py +0 -0
  255. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/release_cordon.py +0 -0
  256. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/release_propagate.py +0 -0
  257. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/release_verify.py +0 -0
  258. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/release_window.py +0 -0
  259. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/repo_dormancy.py +0 -0
  260. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/repo_edit.py +0 -0
  261. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/repo_onboard.py +0 -0
  262. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/reports.py +0 -0
  263. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/rest_schema.py +0 -0
  264. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/revalidate.py +0 -0
  265. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/review.py +0 -0
  266. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/scorecard.py +0 -0
  267. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/self_health.py +0 -0
  268. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/serve_app.py +0 -0
  269. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  270. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  271. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  272. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  273. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  274. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/portal-followup/SKILL.md +0 -0
  275. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/release-now/SKILL.md +0 -0
  276. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  277. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  278. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/skills/update-issue/SKILL.md +0 -0
  279. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/spend_ceiling.py +0 -0
  280. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/split_work.py +0 -0
  281. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/sql.py +0 -0
  282. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/stage_projection.py +0 -0
  283. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/state.py +0 -0
  284. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/store_migrate.py +0 -0
  285. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/store_parity.py +0 -0
  286. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/templates/deploy-cloudflare.node.yml +0 -0
  287. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/test_author.py +0 -0
  288. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/test_chat.py +0 -0
  289. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/test_orchestrator.py +0 -0
  290. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/test_report.py +0 -0
  291. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/tui_release.py +0 -0
  292. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/uat_checks.py +0 -0
  293. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/usage.py +0 -0
  294. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/usage_limits.py +0 -0
  295. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/usage_rollup.py +0 -0
  296. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coord/worker_events.py +0 -0
  297. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/coordinator.example.yml +0 -0
  298. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-agent.service +0 -0
  299. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-backup.service +0 -0
  300. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-backup.timer +0 -0
  301. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-db-backup.service +0 -0
  302. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-db-backup.sh +0 -0
  303. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-db-backup.timer +0 -0
  304. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-dr-verify.service +0 -0
  305. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-dr-verify.timer +0 -0
  306. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-drive-queue.service +0 -0
  307. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-drive-queue.timer +0 -0
  308. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-failure-notify.service +0 -0
  309. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-failure-notify.sh +0 -0
  310. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-fleet-watchdog.service +0 -0
  311. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-fleet-watchdog.timer +0 -0
  312. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-notify.service +0 -0
  313. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-notify.timer +0 -0
  314. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-release-propagate.service +0 -0
  315. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-release-propagate.timer +0 -0
  316. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-release-window.service +0 -0
  317. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-release-window.timer +0 -0
  318. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-serve.service +0 -0
  319. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-web-dist-build.service +0 -0
  320. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-web-dist-build.sh +0 -0
  321. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-web-dist-build.timer +0 -0
  322. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-web-rollback.sh +0 -0
  323. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/coord-web.service +0 -0
  324. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/deploy/node-shim.sh +0 -0
  325. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ADR_COORD_TUI_CI.md +0 -0
  326. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  327. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ADR_COORD_WEB_CI.md +0 -0
  328. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ADR_COORD_WEB_DIST.md +0 -0
  329. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  330. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/AGENT_OPERATIONS.md +0 -0
  331. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ARCHITECTURE.md +0 -0
  332. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ARCH_SECURITY_GATES.md +0 -0
  333. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/COCKPIT.md +0 -0
  334. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/CONTROL_CENTER.md +0 -0
  335. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/COST_DISCIPLINE.md +0 -0
  336. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/CROSS_PLATFORM.md +0 -0
  337. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/CUSTOMER_FACING_APPS.md +0 -0
  338. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/CUSTOMER_PORTAL.md +0 -0
  339. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/DATA_STORE_SELECTION.md +0 -0
  340. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/DISASTER_RECOVERY.md +0 -0
  341. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/DRIVE_QUEUE.md +0 -0
  342. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/EPHEMERAL_WORKERS.md +0 -0
  343. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/FORGE_MIGRATION.md +0 -0
  344. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/GRAPHIFY_SETUP.md +0 -0
  345. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ISSUE_GUIDANCE.md +0 -0
  346. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/MAC_MINI.md +0 -0
  347. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  348. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/NOTIFIER.md +0 -0
  349. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/OPENCODE_VERIFICATION.md +0 -0
  350. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/OPERATING_GOTCHAS.md +0 -0
  351. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/OPERATOR_GUIDES.md +0 -0
  352. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/ORACLE_LOOP.md +0 -0
  353. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/PHONE_WEBAPP.md +0 -0
  354. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/PIPELINE_V2.md +0 -0
  355. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/PLATFORM_EVOLUTION.md +0 -0
  356. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/SECOND_BACKEND.md +0 -0
  357. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/STORE_SERVICE.md +0 -0
  358. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  359. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/WEB_CONTROL_CENTER.md +0 -0
  360. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/WSL_WINDOWS_WORKER.md +0 -0
  361. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/mocks/web/README.md +0 -0
  362. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/mocks/web/_tokens.css +0 -0
  363. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/mocks/web/issue-detail.html +0 -0
  364. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/mocks/web/pipeline-narrow.html +0 -0
  365. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/docs/mocks/web/pipeline-wide.html +0 -0
  366. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/graphify-out/.gitignore +0 -0
  367. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/install-agent.sh +0 -0
  368. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/pyproject.toml +0 -0
  369. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/audit_review_verdict_overrides.py +0 -0
  370. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  371. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/build-worker-image.sh +0 -0
  372. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/coordinator-machine.py +0 -0
  373. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/dr-down.sh +0 -0
  374. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/dr-up.sh +0 -0
  375. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/epic-down.sh +0 -0
  376. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/epic-up.sh +0 -0
  377. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/preflight.sh +0 -0
  378. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/provision-server.sh +0 -0
  379. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/provision-worker.sh +0 -0
  380. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  381. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  382. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/throwaway-vm.sh +0 -0
  383. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/azure-workers/verify-github-token.sh +0 -0
  384. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/check_gh_argv_containment.py +0 -0
  385. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/codegen.py +0 -0
  386. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/coord-test-runner.sh +0 -0
  387. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  388. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  389. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  390. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  391. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/coord-venv-rollback.sh +0 -0
  392. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/drive-batch.sh +0 -0
  393. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/extract-coord-tui.sh +0 -0
  394. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/fleet_watchdog.py +0 -0
  395. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/gen_board_fixture.py +0 -0
  396. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/gen_mock_index.py +0 -0
  397. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/lib/provision-core.sh +0 -0
  398. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/next_release_tag.py +0 -0
  399. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/provision-machine.sh +0 -0
  400. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/run_tests_in_populated_home.sh +0 -0
  401. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/run_tests_without_gh.sh +0 -0
  402. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/setup-macmini.sh +0 -0
  403. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/smoke_437_interactive.py +0 -0
  404. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/verify-provision-noble.sh +0 -0
  405. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/verify_878_review_capture.py +0 -0
  406. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/verify_release_published.py +0 -0
  407. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/scripts/verify_release_wheel.py +0 -0
  408. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/setup.cfg +0 -0
  409. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/SMOKE_SET.md +0 -0
  410. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/__init__.py +0 -0
  411. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-37/conftest.py +0 -0
  412. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-37/contract.md +0 -0
  413. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-37/manifest.yml +0 -0
  414. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  415. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  416. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-51/contract.md +0 -0
  417. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  418. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  419. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-51/manifest.yml +0 -0
  420. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  421. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-51/tsconfig.json +0 -0
  422. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  423. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/backends.py +0 -0
  424. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/conftest.py +0 -0
  425. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/board-pipeline-basic.json +0 -0
  426. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  427. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  428. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  429. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  430. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/playwright/all_pass.json +0 -0
  431. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  432. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/playwright/mixed_fail.json +0 -0
  433. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  434. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  435. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/playwright/skip.json +0 -0
  436. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/playwright/truncated.json +0 -0
  437. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  438. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  439. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  440. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  441. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  442. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  443. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  444. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  445. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_acceptance.py +0 -0
  446. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_acceptance_drivers.py +0 -0
  447. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent.py +0 -0
  448. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_api_error.py +0 -0
  449. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_app.py +0 -0
  450. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_branch_base.py +0 -0
  451. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_branch_capture.py +0 -0
  452. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_config_free_1712.py +0 -0
  453. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_deploy_units_endpoint.py +0 -0
  454. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_dirty_worktree.py +0 -0
  455. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  456. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_graph_self_heal.py +0 -0
  457. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_health_h3.py +0 -0
  458. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_idle_restart.py +0 -0
  459. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_push_failure.py +0 -0
  460. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_reap.py +0 -0
  461. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_repos_and_pull.py +0 -0
  462. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_restart_services_endpoint.py +0 -0
  463. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_skills_self_heal.py +0 -0
  464. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_startup_diagnostics.py +0 -0
  465. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_update.py +0 -0
  466. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_update_bluegreen.py +0 -0
  467. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_usage_limit.py +0 -0
  468. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_agent_zero_commit.py +0 -0
  469. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_ambient_home_isolation.py +0 -0
  470. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_approve_capability_reroute_3241.py +0 -0
  471. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_approve_dependency_busy_2804.py +0 -0
  472. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_approve_reject_plan.py +0 -0
  473. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_approve_usage_gate.py +0 -0
  474. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_approved_work_2532.py +0 -0
  475. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_approved_work_2996.py +0 -0
  476. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_assignment_already_recorded_daemon.py +0 -0
  477. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_audit_log.py +0 -0
  478. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_audit_outcome.py +0 -0
  479. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_audit_query.py +0 -0
  480. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_auto_loop.py +0 -0
  481. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_auto_release_publish_2035.py +0 -0
  482. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_backend_selection.py +0 -0
  483. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_backup.py +0 -0
  484. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_base_checkout_restore.py +0 -0
  485. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_block_log.py +0 -0
  486. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_board_cap_762.py +0 -0
  487. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_board_fixture.py +0 -0
  488. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_board_read_path.py +0 -0
  489. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_board_schema.py +0 -0
  490. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_board_service.py +0 -0
  491. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_board_state.py +0 -0
  492. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_board_wire.py +0 -0
  493. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_brain.py +0 -0
  494. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_branch_model.py +0 -0
  495. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_bug_intake.py +0 -0
  496. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_build_worker_image_env_update.py +0 -0
  497. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cargo_cache.py +0 -0
  498. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_check_gh_argv_containment.py +0 -0
  499. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_ci_acceptance_gate_1950.py +0 -0
  500. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_ci_fix.py +0 -0
  501. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_ci_github.py +0 -0
  502. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_ci_gitlab.py +0 -0
  503. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_ci_parity_2091.py +0 -0
  504. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_ci_store.py +0 -0
  505. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_claim.py +0 -0
  506. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_claude_md_budget.py +0 -0
  507. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_acceptance.py +0 -0
  508. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_assign.py +0 -0
  509. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  510. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_assign_interactive_remote.py +0 -0
  511. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_assign_provider.py +0 -0
  512. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  513. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_audit.py +0 -0
  514. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_chat_continue.py +0 -0
  515. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_codegen.py +0 -0
  516. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_decide.py +0 -0
  517. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_diagnose_capability_rules.py +0 -0
  518. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_diagnose_config_provenance.py +0 -0
  519. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_diagnose_forge_availability.py +0 -0
  520. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_diagnose_graph.py +0 -0
  521. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_diagnose_self.py +0 -0
  522. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_diagnose_test_coverage.py +0 -0
  523. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_doctor.py +0 -0
  524. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_doctor_config_free_1801.py +0 -0
  525. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  526. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  527. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_drive.py +0 -0
  528. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_drive_queue.py +0 -0
  529. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_escalate.py +0 -0
  530. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_fix_headless_review.py +0 -0
  531. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_gate_a.py +0 -0
  532. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_install_drift.py +0 -0
  533. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_install_skills.py +0 -0
  534. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_issue_comment.py +0 -0
  535. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_issue_create_label.py +0 -0
  536. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_issue_reopen.py +0 -0
  537. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_issue_view_list.py +0 -0
  538. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_merge.py +0 -0
  539. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_assign.py +0 -0
  540. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_capture.py +0 -0
  541. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_chat_add_child.py +0 -0
  542. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_dispatch.py +0 -0
  543. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_gate_b.py +0 -0
  544. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_gate_c.py +0 -0
  545. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_order.py +0 -0
  546. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  547. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_milestone_ship.py +0 -0
  548. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_network.py +0 -0
  549. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_new_issue_chat.py +0 -0
  550. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_plans.py +0 -0
  551. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_portal.py +0 -0
  552. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_pr.py +0 -0
  553. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_pull_artifact.py +0 -0
  554. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_queue.py +0 -0
  555. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_reattach_sessions.py +0 -0
  556. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_refine_board.py +0 -0
  557. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_release_preflight.py +0 -0
  558. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_release_propagate.py +0 -0
  559. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_release_window.py +0 -0
  560. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_repo_2220.py +0 -0
  561. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  562. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_scorecard.py +0 -0
  563. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_serve_store_backend_3084.py +0 -0
  564. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_set_review_findings.py +0 -0
  565. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_status_advisory_terminal.py +0 -0
  566. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_status_contested_tag.py +0 -0
  567. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_status_merge_queue.py +0 -0
  568. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_status_provider.py +0 -0
  569. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_status_review_finalizing.py +0 -0
  570. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_status_test_failed_tag.py +0 -0
  571. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_status_usage_limit.py +0 -0
  572. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_sync_comments_873.py +0 -0
  573. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_test_plan.py +0 -0
  574. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_track.py +0 -0
  575. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_tui_update.py +0 -0
  576. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cli_wait.py +0 -0
  577. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_client.py +0 -0
  578. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_client_base_install.py +0 -0
  579. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_client_config_cache_atomic_3052.py +0 -0
  580. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_client_resource_migration_1946.py +0 -0
  581. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_commands_common.py +0 -0
  582. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_comments.py +0 -0
  583. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_completion_summary.py +0 -0
  584. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_config.py +0 -0
  585. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_config_acceptance.py +0 -0
  586. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_config_audit.py +0 -0
  587. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_config_drift_check.py +0 -0
  588. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_config_pricing.py +0 -0
  589. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  590. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_config_usage_gate.py +0 -0
  591. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_confirm_test.py +0 -0
  592. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_conflict_fix.py +0 -0
  593. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_conflict_fix_semantic.py +0 -0
  594. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  595. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_test.py +0 -0
  596. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  597. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_test_runner_baseline.py +0 -0
  598. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_test_runner_populated_home.py +0 -0
  599. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_test_runner_routing.py +0 -0
  600. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_test_runner_toolchain.py +0 -0
  601. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_uat.py +0 -0
  602. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coord_web_sse_restart_live.py +0 -0
  603. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_coordinator_machine.py +0 -0
  604. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_cross_platform_imports.py +0 -0
  605. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dao.py +0 -0
  606. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dashboard.py +0 -0
  607. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dashboard_api.py +0 -0
  608. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dashboard_fixture.py +0 -0
  609. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dashboard_server.py +0 -0
  610. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dashboard_terminal.py +0 -0
  611. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dashboard_terminal_live.py +0 -0
  612. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_db.py +0 -0
  613. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dead_end.py +0 -0
  614. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_decomposition_chat.py +0 -0
  615. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_coord_db_backup.py +0 -0
  616. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_coord_web_dist.py +0 -0
  617. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_coord_web_rollback.py +0 -0
  618. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_db_backup_unit.py +0 -0
  619. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_drive_queue_unit.py +0 -0
  620. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_failure_notify_unit.py +0 -0
  621. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_manifest.py +0 -0
  622. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_notify_unit.py +0 -0
  623. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_units_lane.py +0 -0
  624. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deploy_web_unit.py +0 -0
  625. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deprecation_telemetry.py +0 -0
  626. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_deps.py +0 -0
  627. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_diagnose.py +0 -0
  628. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dispatch.py +0 -0
  629. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dispatch_target_validation.py +0 -0
  630. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dist_name.py +0 -0
  631. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_done_housekeeping.py +0 -0
  632. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dr_azure_scripts.py +0 -0
  633. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dr_promote.py +0 -0
  634. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_dr_verify.py +0 -0
  635. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive.py +0 -0
  636. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_queue.py +0 -0
  637. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_queue_blocked_rendering.py +0 -0
  638. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_queue_launch_argv.py +0 -0
  639. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  640. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_queue_roll_pending.py +0 -0
  641. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  642. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_state.py +0 -0
  643. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_drive_tmux.py +0 -0
  644. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_epic_up_capability_detection.py +0 -0
  645. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  646. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_epic_up_image_provenance.py +0 -0
  647. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_errors.py +0 -0
  648. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_events.py +0 -0
  649. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_failure_class.py +0 -0
  650. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_filelock.py +0 -0
  651. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  652. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_fix_of_force_override.py +0 -0
  653. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_fleet_config_health.py +0 -0
  654. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_fleet_health_probes.py +0 -0
  655. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_fleet_health_snapshot.py +0 -0
  656. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_fleet_watchdog.py +0 -0
  657. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_forge_availability.py +0 -0
  658. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_freshness.py +0 -0
  659. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_gate_a.py +0 -0
  660. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_gate_b.py +0 -0
  661. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_gate_snapshot_staleness.py +0 -0
  662. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_gates.py +0 -0
  663. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  664. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_gen_mock_index.py +0 -0
  665. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_generated_rust_fixture.py +0 -0
  666. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_generated_rust_requests.py +0 -0
  667. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_generated_types_fixture.py +0 -0
  668. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_github_ops.py +0 -0
  669. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_github_throttle.py +0 -0
  670. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_goal.py +0 -0
  671. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_graph_health.py +0 -0
  672. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_graph_selfheal_absent_2237.py +0 -0
  673. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_handoff.py +0 -0
  674. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_checks.py +0 -0
  675. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_cli.py +0 -0
  676. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_cli_graph.py +0 -0
  677. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_config.py +0 -0
  678. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_context.py +0 -0
  679. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_coord_tui_ci_pin.py +0 -0
  680. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_coord_web_ci_pin.py +0 -0
  681. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_deploy_lane_facts.py +0 -0
  682. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_fix.py +0 -0
  683. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_incident_regression.py +0 -0
  684. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_issues_sync_staleness.py +0 -0
  685. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_pr_churn.py +0 -0
  686. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_pypi.py +0 -0
  687. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_registry.py +0 -0
  688. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_release_cordon_probe.py +0 -0
  689. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_timer_active.py +0 -0
  690. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_toolchain.py +0 -0
  691. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_unit_drift.py +0 -0
  692. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_unit_enablement.py +0 -0
  693. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_health_wedged_drive_queue.py +0 -0
  694. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_hooks.py +0 -0
  695. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_housekeeping.py +0 -0
  696. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_human_attended_437.py +0 -0
  697. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_init.py +0 -0
  698. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_install_agent_venv_2911.py +0 -0
  699. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_integration.py +0 -0
  700. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_interactive_briefing_echo.py +0 -0
  701. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_interactive_pane_log_2541.py +0 -0
  702. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_interactive_prefill_state.py +0 -0
  703. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_interactive_session_relaunch.py +0 -0
  704. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_interactive_test_verdict_backstop.py +0 -0
  705. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_interactive_token_attribution.py +0 -0
  706. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_interactive_worktree.py +0 -0
  707. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_issue_store_seam.py +0 -0
  708. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_issues_sync_status.py +0 -0
  709. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_liveness_auditor.py +0 -0
  710. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_liveness_notify.py +0 -0
  711. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_lock_contention_ratchet.py +0 -0
  712. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_machine_metrics.py +0 -0
  713. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_machine_onboard.py +0 -0
  714. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_machine_pause.py +0 -0
  715. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_machine_stats.py +0 -0
  716. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_merge_queue.py +0 -0
  717. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_merge_verify.py +0 -0
  718. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_milestone_chat.py +0 -0
  719. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_milestone_dispatch.py +0 -0
  720. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_milestone_gate.py +0 -0
  721. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_milestone_order.py +0 -0
  722. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_milestone_seam.py +0 -0
  723. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_mock_author.py +0 -0
  724. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_model_tiering.py +0 -0
  725. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_models.py +0 -0
  726. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_models_config_labels.py +0 -0
  727. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_needs_attention.py +0 -0
  728. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_network.py +0 -0
  729. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_new_issue_chat.py +0 -0
  730. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_next_release_tag.py +0 -0
  731. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_node_shim.py +0 -0
  732. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_baseline.py +0 -0
  733. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_cli.py +0 -0
  734. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_collect.py +0 -0
  735. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_config.py +0 -0
  736. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_drive_seam.py +0 -0
  737. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_isolation.py +0 -0
  738. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_predicate.py +0 -0
  739. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_quiet_hours.py +0 -0
  740. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notifier_service.py +0 -0
  741. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notify.py +0 -0
  742. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_notify_drain.py +0 -0
  743. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_openapi.py +0 -0
  744. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_operational_defaults.py +0 -0
  745. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_overlap_fence.py +0 -0
  746. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_overlap_predict.py +0 -0
  747. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_packaged_deploy_units.py +0 -0
  748. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_parentage.py +0 -0
  749. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_paste_landed.py +0 -0
  750. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  751. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_pipeline.py +0 -0
  752. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_plan_followup_approve_plan_command.py +0 -0
  753. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_plan_followup_pr_command.py +0 -0
  754. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_plan_followup_review_command.py +0 -0
  755. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_plan_only.py +0 -0
  756. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_plan_parser.py +0 -0
  757. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_platform_paths.py +0 -0
  758. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_portal_bridge.py +0 -0
  759. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_portal_config.py +0 -0
  760. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_portal_store.py +0 -0
  761. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_portal_sync.py +0 -0
  762. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_pr_body_lint.py +0 -0
  763. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_prereqs.py +0 -0
  764. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_production_db_guard.py +0 -0
  765. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_progress.py +0 -0
  766. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_provider_seam.py +0 -0
  767. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_providers.py +0 -0
  768. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_providers_config_labels.py +0 -0
  769. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_providers_pty.py +0 -0
  770. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_provision_core.py +0 -0
  771. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_provision_machine.py +0 -0
  772. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_py_rust_mirror_inventory.py +0 -0
  773. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_quiet_hours.py +0 -0
  774. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_quiet_hours_store_2146.py +0 -0
  775. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reap_merged_sessions.py +0 -0
  776. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reap_stale_interactive_tick.py +0 -0
  777. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile.py +0 -0
  778. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile_branch.py +0 -0
  779. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile_completions.py +0 -0
  780. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  781. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile_merges.py +0 -0
  782. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile_no_agent_record.py +0 -0
  783. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile_tick.py +0 -0
  784. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reconcile_usage_limit_done.py +0 -0
  785. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_refine_chat.py +0 -0
  786. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_cordon_2101.py +0 -0
  787. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  788. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_cordon_deadlock_2240.py +0 -0
  789. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_cordon_stuck_2490.py +0 -0
  790. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_propagate.py +0 -0
  791. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_propagate_threshold.py +0 -0
  792. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_roll_between_legs_2854.py +0 -0
  793. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_roll_window_handoff.py +0 -0
  794. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_unified_1242.py +0 -0
  795. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_verify.py +0 -0
  796. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_release_window.py +0 -0
  797. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_remote_auto_prune.py +0 -0
  798. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_remote_interactive_reaper.py +0 -0
  799. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_repo_add.py +0 -0
  800. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_repo_dormancy.py +0 -0
  801. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_repo_edit_2220.py +0 -0
  802. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_repo_graph_fleet_2237.py +0 -0
  803. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_repo_onboard_2220.py +0 -0
  804. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_report_result_push.py +0 -0
  805. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_reports.py +0 -0
  806. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_retry.py +0 -0
  807. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_retry_advisory_1606.py +0 -0
  808. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_retry_type_1636.py +0 -0
  809. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_revalidate.py +0 -0
  810. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review.py +0 -0
  811. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_end_review_without_verdict.py +0 -0
  812. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_parse_failure_diagnostic.py +0 -0
  813. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_reaffirm.py +0 -0
  814. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_state.py +0 -0
  815. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_verdict_backstop.py +0 -0
  816. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_verdict_override_audit.py +0 -0
  817. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_verdict_relay.py +0 -0
  818. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_review_zero_commits.py +0 -0
  819. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_scoped_review_wiring.py +0 -0
  820. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_scorecard.py +0 -0
  821. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_self_health.py +0 -0
  822. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_serve.py +0 -0
  823. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_serve_app.py +0 -0
  824. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_serve_app_board_trim.py +0 -0
  825. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_serve_rest_routes.py +0 -0
  826. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_session.py +0 -0
  827. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_slice_issue_attribution.py +0 -0
  828. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_smoke_live_checkout_restore.py +0 -0
  829. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_smoke_workflow.py +0 -0
  830. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_spend_ceiling.py +0 -0
  831. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_spend_ceiling_coordinator.py +0 -0
  832. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_split.py +0 -0
  833. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_split_work.py +0 -0
  834. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_sql_dialect.py +0 -0
  835. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_sqlite_connect_ratchet.py +0 -0
  836. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_stage_projection.py +0 -0
  837. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_stale_busy_reviewer_697.py +0 -0
  838. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_stalled_pipeline.py +0 -0
  839. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_state.py +0 -0
  840. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_state_review_findings_daemon.py +0 -0
  841. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_status_fleet_footer.py +0 -0
  842. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_stop_1567.py +0 -0
  843. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_store_contract.py +0 -0
  844. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_store_migrate.py +0 -0
  845. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_stuck.py +0 -0
  846. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  847. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_terminal_command.py +0 -0
  848. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_test_author.py +0 -0
  849. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_test_chat.py +0 -0
  850. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_test_orchestrator.py +0 -0
  851. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_test_report.py +0 -0
  852. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_test_verdict_parsing.py +0 -0
  853. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_test_verdict_transcript_floor.py +0 -0
  854. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_text_io_encoding_audit.py +0 -0
  855. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_thin_client_board_audit.py +0 -0
  856. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_thin_client_config_load_1080.py +0 -0
  857. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_thin_client_daemon_routing_906.py +0 -0
  858. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_throwaway_vm.py +0 -0
  859. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_tmux_host.py +0 -0
  860. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_tmux_session.py +0 -0
  861. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_transcript_floor.py +0 -0
  862. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_uat_checks.py +0 -0
  863. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_usage.py +0 -0
  864. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_usage_limits.py +0 -0
  865. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_usage_rollup.py +0 -0
  866. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_venv_live_install_2121.py +0 -0
  867. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_version_single_source.py +0 -0
  868. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_watch.py +0 -0
  869. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  870. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_worker_env_venv_isolation.py +0 -0
  871. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_worker_events.py +0 -0
  872. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_worker_image_pin_sync.py +0 -0
  873. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_worker_safety.py +0 -0
  874. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_worker_test_scoping.py +0 -0
  875. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_worktree.py +0 -0
  876. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  877. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/test_write_parity.py +0 -0
  878. {code_coordinator-0.5.454 → code_coordinator-0.5.455}/tests/write_parity.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.454
3
+ Version: 0.5.455
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.454
3
+ Version: 0.5.455
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.454",
2
+ "tag": "0.5.455",
3
3
  "distance": 0,
4
- "node": "ga4a99bfd3ea79dd343b5828974ef637592ae4897",
4
+ "node": "ge3a7302a16cbfa48b92123e2dc69cfc2f37dbc87",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-09-11"
@@ -55,6 +55,7 @@ independence; for smoke we want a *capable* machine for hardware, and
55
55
 
56
56
  from __future__ import annotations
57
57
 
58
+ import base64
58
59
  import json
59
60
  import logging
60
61
  import re
@@ -295,9 +296,21 @@ def match_rules(touched_files: list[str], rules: list[SmokeRule]) -> list[str]:
295
296
  class SmokePartition:
296
297
  """One capability set that some single configured machine can satisfy —
297
298
  i.e. one Test-stage leg, if/when the fan-out described above ships.
299
+
300
+ `files` (#3298) are the touched paths that actually put THIS partition on
301
+ the board — the union of files matched by whichever `capability_rules`
302
+ entries contributed `capabilities`' requirements — as opposed to the
303
+ diff's full `touched_files`. Resolving the Test-stage command against
304
+ *this* narrower set, per partition, is what lets a `SmokeRule.command`
305
+ declared on the contributing rule win for only its own leg instead of
306
+ every leg in the fan-out (`coord.smoke.resolve_smoke_command`). Never
307
+ empty for a partition `partition_capability_requirements` actually
308
+ returns — every partition is built from at least one rule that matched at
309
+ least one touched file.
298
310
  """
299
311
 
300
312
  capabilities: tuple[str, ...]
313
+ files: tuple[str, ...] = ()
301
314
 
302
315
 
303
316
  @dataclass(frozen=True)
@@ -355,8 +368,22 @@ def partition_capability_requirements(
355
368
  Rules with an empty `requires` never enter this — they mean "no extra
356
369
  capability needed", already handled by the existing any-capable-machine
357
370
  path in `dispatch_smoke`, not a partition of their own.
371
+
372
+ #3298: each returned :class:`SmokePartition` also carries `files` — the
373
+ touched paths matched by whichever rule(s) contributed its capabilities
374
+ — so a caller can resolve the Test-stage command per partition, scoped to
375
+ only the files that put THAT partition on the board, instead of the
376
+ diff's full `touched_files`.
358
377
  """
359
- seen: dict[frozenset[str], tuple[int, list[str]]] = {}
378
+ # #3298 fix-round-1: `seen` used to keep only the FIRST rule matching a
379
+ # given `requires` set and silently drop every later one with the same
380
+ # set — so a second rule sharing a capability set (e.g. a broad `gtk`
381
+ # rule plus a narrower `gtk` override carrying its own `command`) never
382
+ # entered `order`/`group_rule_indices` at all, and its files never made
383
+ # it into the partition's `files`, so `resolve_rule_command` could never
384
+ # see them and its `command` could never win. Every rule matching a
385
+ # given key must accumulate here, not just the first.
386
+ seen: dict[frozenset[str], list[int]] = {}
360
387
  order: list[frozenset[str]] = []
361
388
  for i, rule in enumerate(rules):
362
389
  if not rule.requires:
@@ -365,18 +392,31 @@ def partition_capability_requirements(
365
392
  continue
366
393
  key = frozenset(rule.requires)
367
394
  if key not in seen:
368
- seen[key] = (i, list(rule.files))
395
+ seen[key] = []
369
396
  order.append(key)
397
+ seen[key].append(i)
370
398
 
371
399
  groups: list[set[str]] = []
400
+ group_rule_indices: list[list[int]] = []
372
401
  unroutable: list[UnroutableCapability] = []
373
402
  for key in order:
374
- rule_index, rule_files = seen[key]
403
+ rule_indices_for_key = seen[key]
375
404
  caps = set(key)
376
405
  if not capable_for(sorted(caps)):
406
+ # `rule_files` here is diagnostic text for `describe()` — the
407
+ # DECLARED file patterns of every rule sharing this unroutable
408
+ # capability set (e.g. `["src/cuda/"]`), same as pre-#3298-fix
409
+ # for a single rule, just unioned (order-preserving, deduped)
410
+ # across every rule now accumulated under this key instead of
411
+ # only the first.
412
+ rule_files: list[str] = []
413
+ for rule_index in rule_indices_for_key:
414
+ for f in rules[rule_index].files:
415
+ if f not in rule_files:
416
+ rule_files.append(f)
377
417
  unroutable.append(UnroutableCapability(
378
418
  capabilities=tuple(sorted(caps)),
379
- rule_index=rule_index,
419
+ rule_index=rule_indices_for_key[0],
380
420
  rule_files=tuple(rule_files),
381
421
  ))
382
422
  continue
@@ -385,12 +425,25 @@ def partition_capability_requirements(
385
425
  candidate = group | caps
386
426
  if capable_for(sorted(candidate)):
387
427
  groups[i] = candidate
428
+ group_rule_indices[i].extend(rule_indices_for_key)
388
429
  merged = True
389
430
  break
390
431
  if not merged:
391
432
  groups.append(caps)
392
-
393
- partitions = [SmokePartition(capabilities=tuple(sorted(g))) for g in groups]
433
+ group_rule_indices.append(list(rule_indices_for_key))
434
+
435
+ partitions = [
436
+ SmokePartition(
437
+ capabilities=tuple(sorted(group)),
438
+ files=tuple(sorted({
439
+ path
440
+ for rule_index in rule_indices
441
+ for path in touched_files
442
+ if _rule_matches([path], rules[rule_index])
443
+ })),
444
+ )
445
+ for group, rule_indices in zip(groups, group_rule_indices)
446
+ ]
394
447
  return partitions, unroutable
395
448
 
396
449
 
@@ -486,43 +539,70 @@ def smoke_leg_capabilities(issue_title: str | None) -> tuple[str, ...] | None:
486
539
  _FANOUT_MANIFEST_RE = re.compile(r"^\[\[smoke-fanout:([^\]]*)\]\]\n?")
487
540
 
488
541
 
489
- def _encode_fanout_manifest(legs: list[tuple[str, tuple[str, ...]]]) -> str:
542
+ def _encode_fanout_manifest(
543
+ legs: list[tuple[str, tuple[str, ...], str | None]],
544
+ ) -> str:
490
545
  """The manifest line stamped at the FRONT of the parent's ``test_reason``
491
- for a #3182 fan-out: ``[[smoke-fanout:<id>=<caps>,...]]``, one entry per
492
- leg dispatched (or already active/completed) this round. Preserved
493
- byte-for-byte across every later rewrite of the parent's ``test_reason``
494
- (the running-progress stamp, and the final aggregate) so
546
+ for a #3182 fan-out: ``[[smoke-fanout:<id>=<caps>=<command_b64>,...]]``,
547
+ one entry per leg dispatched (or already active/completed) this round.
548
+ Preserved byte-for-byte across every later rewrite of the parent's
549
+ ``test_reason`` (the running-progress stamp, and the final aggregate) so
495
550
  :func:`finalize_smoke_fanout` can always find its siblings again from
496
551
  just the parent's own row — see the module note above for why this, and
497
552
  not a new query endpoint.
553
+
554
+ ``command_b64`` (#3298) is the partition's own resolved Test-stage
555
+ command, URL-safe base64-encoded so an arbitrary shell command — commas,
556
+ brackets, newlines, anything a real ``test_command``/rule ``command`` can
557
+ contain — can never corrupt this manifest's own ``,``/``=``/``]``
558
+ delimiters. Encodes as an empty third field when the command is unknown
559
+ (``None``), which round-trips through :func:`_parse_fanout_manifest` as
560
+ ``command=None`` rather than raising or misparsing.
498
561
  """
499
- body = ",".join(
500
- f"{leg_id}={'+'.join(sorted(caps))}" for leg_id, caps in legs
501
- )
562
+ def _entry(leg_id: str, caps: tuple[str, ...], command: str | None) -> str:
563
+ cap_str = "+".join(sorted(caps))
564
+ cmd_b64 = (
565
+ base64.urlsafe_b64encode(command.encode()).decode() if command else ""
566
+ )
567
+ return f"{leg_id}={cap_str}={cmd_b64}"
568
+
569
+ body = ",".join(_entry(leg_id, caps, command) for leg_id, caps, command in legs)
502
570
  return f"[[smoke-fanout:{body}]]"
503
571
 
504
572
 
505
573
  def _parse_fanout_manifest(
506
574
  test_reason: str | None,
507
- ) -> list[tuple[str, tuple[str, ...]]] | None:
508
- """The ``(leg_id, capabilities)`` pairs :func:`_encode_fanout_manifest`
509
- wrote, or ``None`` when *test_reason* carries no manifest (not a fan-out
510
- row). Tolerates a malformed entry by skipping just that entry, never
511
- raising.
575
+ ) -> list[tuple[str, tuple[str, ...], str | None]] | None:
576
+ """The ``(leg_id, capabilities, command)`` triples
577
+ :func:`_encode_fanout_manifest` wrote, or ``None`` when *test_reason*
578
+ carries no manifest (not a fan-out row). Tolerates a malformed entry by
579
+ skipping just that entry, never raising.
580
+
581
+ ``command`` is ``None`` for a pre-#3298 two-field entry
582
+ (``<id>=<caps>``, no trailing ``=<command_b64>``) — an already-in-flight
583
+ row from before this field existed — as well as for a malformed base64
584
+ payload; either way the caller gets "unknown command", never a crash.
512
585
  """
513
586
  if not test_reason:
514
587
  return None
515
588
  m = _FANOUT_MANIFEST_RE.match(test_reason)
516
589
  if not m:
517
590
  return None
518
- legs: list[tuple[str, tuple[str, ...]]] = []
591
+ legs: list[tuple[str, tuple[str, ...], str | None]] = []
519
592
  for entry in m.group(1).split(","):
520
593
  if not entry:
521
594
  continue
522
- leg_id, _, caps = entry.partition("=")
595
+ leg_id, _, rest = entry.partition("=")
596
+ caps, _, cmd_b64 = rest.partition("=")
523
597
  if not leg_id or not caps:
524
598
  continue
525
- legs.append((leg_id, tuple(caps.split("+"))))
599
+ command: str | None = None
600
+ if cmd_b64:
601
+ try:
602
+ command = base64.urlsafe_b64decode(cmd_b64.encode()).decode()
603
+ except (ValueError, UnicodeDecodeError):
604
+ command = None
605
+ legs.append((leg_id, tuple(caps.split("+")), command))
526
606
  return legs
527
607
 
528
608
 
@@ -601,33 +681,44 @@ def finalize_smoke_fanout(work_parent_id: str) -> None:
601
681
  if not legs:
602
682
  return # not a fan-out row
603
683
 
604
- leg_states: list[tuple[tuple[str, ...], str | None, str | None]] = [
684
+ # #3298: carry each leg's own resolved command forward from the
685
+ # manifest (never re-read from the leg's row — `_record_smoke_verdict`
686
+ # overwrites a leg's own `test_reason` with its terminal verdict text,
687
+ # so the command it ran is only ever recoverable from here) into the
688
+ # failure report, so two failing legs that ran DIFFERENT commands
689
+ # (possible now that command resolution is scoped per partition) read
690
+ # as distinguishable instead of two identically-shaped failures.
691
+ leg_states: list[tuple[tuple[str, ...], str | None, str | None, str | None]] = [
605
692
  (
606
693
  caps,
607
694
  load_assignment_test_state(leg_id),
608
695
  load_assignment_test_reason(leg_id),
696
+ command,
609
697
  )
610
- for leg_id, caps in legs
698
+ for leg_id, caps, command in legs
611
699
  ]
612
- if any(state in (None, "running") for _, state, _ in leg_states):
700
+ if any(state in (None, "running") for _, state, _, _ in leg_states):
613
701
  return # not everyone has reported in yet
614
702
 
615
703
  severity = {"failed": 3, TEST_STATE_BLOCKED: 2, "skipped": 1, "passed": 0}
616
704
  worst = max(
617
- (state for _, state, _ in leg_states if state in severity),
705
+ (state for _, state, _, _ in leg_states if state in severity),
618
706
  key=lambda s: severity[s],
619
707
  default="passed",
620
708
  )
621
709
  summary = "; ".join(
622
- f"[{'+'.join(caps)}]={state}" for caps, state, _ in leg_states
710
+ f"[{'+'.join(caps)}]={state}" for caps, state, _, _ in leg_states
711
+ )
712
+ manifest_line = _encode_fanout_manifest(
713
+ [(lid, caps, command) for lid, caps, command in legs]
623
714
  )
624
- manifest_line = _encode_fanout_manifest([(lid, caps) for lid, caps in legs])
625
715
 
626
716
  if worst == "failed":
627
717
  named = "; ".join(
628
718
  f"capability set [{'+'.join(caps)}] failed"
719
+ + (f" (ran `{command}`)" if command else "")
629
720
  + (f" — {reason}" if reason else "")
630
- for caps, state, reason in leg_states
721
+ for caps, state, reason, command in leg_states
631
722
  if state == "failed"
632
723
  )
633
724
  final_state, headline = "failed", f"Test stage failed (#3182): {named}."
@@ -1591,6 +1682,61 @@ def _report_unroutable_partitions(
1591
1682
  completed.test_reason = reason
1592
1683
 
1593
1684
 
1685
+ def _report_unconfigured_smoke_command(
1686
+ completed: Assignment, caps: list[str],
1687
+ ) -> None:
1688
+ """#3298: a capability-partition leg's own files resolve to NO smoke
1689
+ command at all — every source (`smoke_tests.capability_rules[].command`,
1690
+ `repos[].ci_command`, `smoke_tests.default_command`,
1691
+ `repos[].test_command`) came up empty for the files that put THIS
1692
+ partition on the board.
1693
+
1694
+ A `coordinator.yml` config gap, never a routing puzzle — reported exactly
1695
+ like :func:`_report_unroutable_partitions`, but per partition and naming
1696
+ the capability set, so a misconfiguration on one platform (e.g. a repo
1697
+ whose `test_command` needs GTK, with a `macos` rule that carries no
1698
+ `command` override of its own) is never silently attributed to the whole
1699
+ fan-out — a sibling partition that DOES resolve a command still
1700
+ dispatches.
1701
+
1702
+ Never raises: a board-write failure must not take the caller down.
1703
+ """
1704
+ caps_label = "+".join(caps) if caps else "(none)"
1705
+ reason = (
1706
+ f"Test stage cannot run capability-partition leg [{caps_label}] "
1707
+ f"(#3298): no smoke command is configured for repo "
1708
+ f"{completed.repo_name!r} for this partition's own files (checked "
1709
+ "smoke_tests.capability_rules[].command, repos[].ci_command, "
1710
+ "smoke_tests.default_command, and repos[].test_command). Configure "
1711
+ "one — e.g. a `command` on the capability_rules entry that created "
1712
+ "this partition — so it stops silently no-oping."
1713
+ )
1714
+ logger.warning(
1715
+ "dispatch_smoke: %s#%s — %s", completed.repo_name,
1716
+ completed.issue_number, reason,
1717
+ )
1718
+ if completed.test_state == TEST_STATE_BLOCKED:
1719
+ return # already recorded — the report has been made
1720
+ if completed.assignment_id is None:
1721
+ return
1722
+ try:
1723
+ from coord.state import record_test_verdict
1724
+
1725
+ record_test_verdict(
1726
+ assignment_id=completed.assignment_id,
1727
+ test_state=TEST_STATE_BLOCKED,
1728
+ test_reason=reason,
1729
+ )
1730
+ except Exception: # noqa: BLE001 — reporting must never break dispatch
1731
+ logger.exception(
1732
+ "dispatch_smoke: failed to record the blocked Test verdict for %s",
1733
+ completed.assignment_id,
1734
+ )
1735
+ return
1736
+ completed.test_state = TEST_STATE_BLOCKED
1737
+ completed.test_reason = reason
1738
+
1739
+
1594
1740
  # ── Dispatch ────────────────────────────────────────────────────────────────
1595
1741
 
1596
1742
 
@@ -2168,45 +2314,61 @@ def _dispatch_smoke_fanout(
2168
2314
  probe contradiction, a missing `repo_paths` entry) is reported exactly
2169
2315
  like the single-leg unroutable case (`_report_unroutable_smoke`), naming
2170
2316
  that capability set — never a silent retry (#1678).
2317
+
2318
+ #3298: the Test-stage command is resolved ONCE PER PARTITION, scoped to
2319
+ that partition's own `SmokePartition.files` — not once, up front, against
2320
+ the WHOLE diff's `touched` — so a `SmokeRule.command` declared on the
2321
+ rule that created one partition can win for only that partition's leg
2322
+ instead of leaking into every other leg in the fan-out. A repo with no
2323
+ rule-scoped `command` anywhere is unaffected: every partition then falls
2324
+ through the same `ci_command`/`default_command`/`test_command`
2325
+ precedence it always has, which does not vary with which files are
2326
+ passed, so this is a no-op for every repo that hasn't opted in.
2171
2327
  """
2172
2328
  smoke_cfg = getattr(config, "smoke_tests", SmokeTestsConfig())
2173
2329
  repo = config.repo(completed.repo_name)
2174
2330
  if repo is None:
2175
2331
  return []
2176
2332
 
2177
- resolved = resolve_smoke_command(repo, smoke_cfg, touched_files=touched)
2178
- smoke_command = resolved.command
2179
- if smoke_command is None:
2180
- logger.warning(
2181
- "dispatch_smoke: %s#%s needs a %d-way capability fan-out %s but "
2182
- "no smoke command is configured (repos[].ci_command, "
2183
- "smoke_tests.default_command, or this repo's test_command) — "
2184
- "skipping. Configure one so the Test stage stops silently "
2185
- "no-oping for this repo.",
2186
- completed.repo_name, completed.issue_number, len(partitions),
2187
- [list(p.capabilities) for p in partitions],
2188
- )
2189
- return []
2190
- if not resolved.ci_equivalent and repo.github:
2191
- logger.warning(
2192
- "dispatch_smoke: %s#%s Test verdict will NOT be CI-equivalent — "
2193
- "running %s (%s) across a %d-way capability fan-out while CI "
2194
- "runs whatever %s's workflows say. Set repos[%s].ci_command to "
2195
- "the command CI runs (#2091).",
2196
- completed.repo_name, completed.issue_number, smoke_command,
2197
- resolved.source, len(partitions), repo.github, repo.name,
2198
- )
2199
-
2200
2333
  smoke_model_alias = config.models.default
2201
2334
  smoke_model_wire = config.models.resolve(smoke_model_alias)
2202
2335
 
2203
- leg_manifest: list[tuple[str, tuple[str, ...]]] = []
2336
+ leg_manifest: list[tuple[str, tuple[str, ...], str | None]] = []
2204
2337
  new_legs: list[Assignment] = []
2205
2338
  blocking: list[tuple[list[str], list[SmokeAttempt]]] = []
2339
+ unconfigured: list[list[str]] = []
2206
2340
 
2207
2341
  for partition in partitions:
2208
2342
  caps = list(partition.capabilities)
2209
2343
 
2344
+ # #3298: scope resolution to the files that put THIS partition on the
2345
+ # board — never the full diff's `touched` — so a rule-scoped command
2346
+ # is attributed to the one leg it was written for. `partition.files`
2347
+ # is never empty for a partition this function actually returned
2348
+ # (see `SmokePartition`'s docstring); the `or touched` is a defensive
2349
+ # fallback, not a path this should ever take.
2350
+ resolved = resolve_smoke_command(
2351
+ repo, smoke_cfg, touched_files=list(partition.files) or touched,
2352
+ )
2353
+ smoke_command = resolved.command
2354
+ if smoke_command is None:
2355
+ # Skip this partition — `_report_unconfigured_smoke_command`
2356
+ # below logs and records the board-visible reason exactly once,
2357
+ # same convention as the `blocking`/`_report_unroutable_smoke`
2358
+ # path just below: no separate log here, or every unconfigured
2359
+ # partition would be logged twice.
2360
+ unconfigured.append(caps)
2361
+ continue
2362
+ if not resolved.ci_equivalent and repo.github:
2363
+ logger.warning(
2364
+ "dispatch_smoke: %s#%s — capability-partition leg %s Test "
2365
+ "verdict will NOT be CI-equivalent — running %s (%s) while "
2366
+ "CI runs whatever %s's workflows say. Set "
2367
+ "repos[%s].ci_command to the command CI runs (#2091).",
2368
+ completed.repo_name, completed.issue_number, caps,
2369
+ smoke_command, resolved.source, repo.github, repo.name,
2370
+ )
2371
+
2210
2372
  existing = _find_leg_for_partition(
2211
2373
  board, repo_name=completed.repo_name, branch=completed.branch,
2212
2374
  capabilities=partition.capabilities,
@@ -2215,7 +2377,9 @@ def _dispatch_smoke_fanout(
2215
2377
  # Already dispatched (still running, or already terminal) by an
2216
2378
  # earlier call for this same row — this tick just fills whatever
2217
2379
  # OTHER partition is still missing, never re-dispatches this one.
2218
- leg_manifest.append((existing.assignment_id or "", partition.capabilities))
2380
+ leg_manifest.append(
2381
+ (existing.assignment_id or "", partition.capabilities, smoke_command)
2382
+ )
2219
2383
  continue
2220
2384
 
2221
2385
  candidates = rank_smoke_machines(
@@ -2269,6 +2433,12 @@ def _dispatch_smoke_fanout(
2269
2433
 
2270
2434
  choice, briefing, agent_response = result
2271
2435
  leg_id = agent_response.get("id") or uuid.uuid4().hex[:12]
2436
+ # Escape a literal backtick in the resolved command so it cannot
2437
+ # prematurely close the backtick-fenced span below — this
2438
+ # `test_reason` is informational display text only (the manifest
2439
+ # carries the authoritative base64-encoded copy), but a broken
2440
+ # fence is an easy, easily-avoided papercut.
2441
+ escaped_smoke_command = smoke_command.replace("`", "\\`")
2272
2442
  leg_assignment = Assignment(
2273
2443
  machine_name=choice.machine.name,
2274
2444
  repo_name=completed.repo_name,
@@ -2287,14 +2457,17 @@ def _dispatch_smoke_fanout(
2287
2457
  review_of_assignment_id=completed.assignment_id,
2288
2458
  model=smoke_model_alias,
2289
2459
  test_state="running",
2290
- test_reason=f"Test stage leg running — capability set {caps} (#3182)",
2460
+ test_reason=(
2461
+ f"Test stage leg running — capability set {caps} using "
2462
+ f"`{escaped_smoke_command}` (#3182/#3298)"
2463
+ ),
2291
2464
  )
2292
2465
  board.active.append(leg_assignment)
2293
2466
 
2294
2467
  from coord.state import record_dispatched_assignment # noqa: PLC0415
2295
2468
 
2296
2469
  record_dispatched_assignment(assignment=leg_assignment, repo_github=repo.github)
2297
- leg_manifest.append((leg_id, partition.capabilities))
2470
+ leg_manifest.append((leg_id, partition.capabilities, smoke_command))
2298
2471
  new_legs.append(leg_assignment)
2299
2472
 
2300
2473
  # A partition every candidate durably refused — report it exactly like
@@ -2303,6 +2476,13 @@ def _dispatch_smoke_fanout(
2303
2476
  for caps, attempts in blocking:
2304
2477
  _report_unroutable_smoke(completed, caps, attempts)
2305
2478
 
2479
+ # A partition whose own files resolve to NO smoke command at all — a
2480
+ # `coordinator.yml` config gap, never a routing puzzle (#3298). Reported
2481
+ # per partition, naming it, so a misconfiguration on one platform is
2482
+ # never silently attributed to the whole fan-out.
2483
+ for caps in unconfigured:
2484
+ _report_unconfigured_smoke_command(completed, caps)
2485
+
2306
2486
  # Stamp the parent's aggregate "running" — carrying the manifest so
2307
2487
  # `finalize_smoke_fanout` can find every leg again from just this row —
2308
2488
  # covering EVERY known partition so far, even on a partial round (some
@@ -2330,7 +2510,9 @@ def _dispatch_smoke_fanout(
2330
2510
  ):
2331
2511
  from coord.state import record_test_verdict # noqa: PLC0415
2332
2512
 
2333
- summary = "; ".join(f"[{'+'.join(sorted(caps))}]" for _, caps in leg_manifest)
2513
+ summary = "; ".join(
2514
+ f"[{'+'.join(sorted(caps))}]" for _, caps, _ in leg_manifest
2515
+ )
2334
2516
  manifest_line = _encode_fanout_manifest(leg_manifest)
2335
2517
  running_reason = (
2336
2518
  f"{manifest_line}\nTest stage running across {len(partitions)} "