code-coordinator 0.5.523__tar.gz → 0.5.525__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 (910) hide show
  1. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/ci_fix.py +85 -1
  5. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/ci_github.py +97 -17
  6. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/config.py +49 -0
  7. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/confirm_test.py +17 -1
  8. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/gates.py +8 -0
  9. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notify.py +140 -2
  10. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/smoke.py +240 -9
  11. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/state.py +2 -1
  12. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_ci_fix.py +179 -0
  13. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config.py +72 -0
  14. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_confirm_test.py +29 -0
  15. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_gates.py +14 -0
  16. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notify.py +249 -0
  17. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_smoke.py +314 -1
  18. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.claude/commands/board.md +0 -0
  19. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.claude/commands/complete-session.md +0 -0
  20. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.claude/commands/coordinator.md +0 -0
  21. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.githooks/_lib.sh +0 -0
  22. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.githooks/post-checkout +0 -0
  23. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.githooks/post-commit +0 -0
  24. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.githooks/post-merge +0 -0
  25. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  26. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.github/coord-ci-acceptance.yml +0 -0
  27. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.github/workflows/auto-release.yml +0 -0
  28. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.github/workflows/publish.yml +0 -0
  29. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.github/workflows/test.yml +0 -0
  30. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/.gitignore +0 -0
  31. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/CLAUDE.md +0 -0
  32. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/GOAL.md +0 -0
  33. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/LICENSE +0 -0
  34. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/MANIFEST.in +0 -0
  35. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/README.md +0 -0
  36. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/SOURCES.txt +0 -0
  37. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/dependency_links.txt +0 -0
  38. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/entry_points.txt +0 -0
  39. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/requires.txt +0 -0
  40. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/scm_file_list.json +0 -0
  41. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/code_coordinator.egg-info/top_level.txt +0 -0
  42. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/__init__.py +0 -0
  43. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/_board_mapping.py +0 -0
  44. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/acceptance.py +0 -0
  45. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/acceptance_drivers.py +0 -0
  46. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/agent.py +0 -0
  47. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/agent_app.py +0 -0
  48. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/agent_update.py +0 -0
  49. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/agents/opencode/.gitignore +0 -0
  50. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/agents/opencode/agents/work.md +0 -0
  51. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/agents/opencode/routing.jsonc +0 -0
  52. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/approved_work.py +0 -0
  53. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/audit.py +0 -0
  54. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/auto_loop.py +0 -0
  55. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/backup.py +0 -0
  56. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/block_log.py +0 -0
  57. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/board_schema.py +0 -0
  58. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/board_service.py +0 -0
  59. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/board_wire.py +0 -0
  60. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/brain.py +0 -0
  61. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/branch_model.py +0 -0
  62. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/bug_intake.py +0 -0
  63. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/cargo_cache.py +0 -0
  64. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/ci_gitlab.py +0 -0
  65. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/ci_store.py +0 -0
  66. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/claim.py +0 -0
  67. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/claude_setup_token.py +0 -0
  68. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/cli.py +0 -0
  69. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/client.py +0 -0
  70. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/codegen.py +0 -0
  71. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/__init__.py +0 -0
  72. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/_common.py +0 -0
  73. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/acceptance.py +0 -0
  74. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/agent_ops.py +0 -0
  75. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/audit.py +0 -0
  76. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/backup.py +0 -0
  77. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/chat.py +0 -0
  78. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/ci.py +0 -0
  79. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/codegen.py +0 -0
  80. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/dispatch.py +0 -0
  81. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/dispatch_workers.py +0 -0
  82. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/dr.py +0 -0
  83. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/drive.py +0 -0
  84. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/drive_queue.py +0 -0
  85. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/gate_a.py +0 -0
  86. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/gates.py +0 -0
  87. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/issues.py +0 -0
  88. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/lifecycle.py +0 -0
  89. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/machine.py +0 -0
  90. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/merge.py +0 -0
  91. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/milestone.py +0 -0
  92. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/plan_followup.py +0 -0
  93. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/plans.py +0 -0
  94. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/portal.py +0 -0
  95. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/pr.py +0 -0
  96. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/release.py +0 -0
  97. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/repo.py +0 -0
  98. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/report.py +0 -0
  99. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/review.py +0 -0
  100. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/scorecard.py +0 -0
  101. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/sessions.py +0 -0
  102. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/setup.py +0 -0
  103. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/status.py +0 -0
  104. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/store_migrate.py +0 -0
  105. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/terminal.py +0 -0
  106. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/test_gate.py +0 -0
  107. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/commands/tui.py +0 -0
  108. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/comments.py +0 -0
  109. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/config_reload.py +0 -0
  110. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/conflict_fix.py +0 -0
  111. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dao.py +0 -0
  112. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dashboard/__init__.py +0 -0
  113. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dashboard/fixture.py +0 -0
  114. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dashboard/index.html +0 -0
  115. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dashboard/server.py +0 -0
  116. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dashboard/terminal.py +0 -0
  117. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/db.py +0 -0
  118. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dead_end.py +0 -0
  119. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/decomposition_chat.py +0 -0
  120. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/README.md +0 -0
  121. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-agent.service +0 -0
  122. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-backup.service +0 -0
  123. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-backup.timer +0 -0
  124. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-db-backup.service +0 -0
  125. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-db-backup.sh +0 -0
  126. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-db-backup.timer +0 -0
  127. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-dr-verify.service +0 -0
  128. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-dr-verify.timer +0 -0
  129. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-drive-queue.service +0 -0
  130. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-drive-queue.timer +0 -0
  131. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-failure-notify.service +0 -0
  132. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-fleet-watchdog.service +0 -0
  133. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  134. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-notify.service +0 -0
  135. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-notify.timer +0 -0
  136. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-release-propagate.service +0 -0
  137. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-release-propagate.timer +0 -0
  138. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-release-window.service +0 -0
  139. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-release-window.timer +0 -0
  140. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-serve.service +0 -0
  141. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-web-dist-build.service +0 -0
  142. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-web-dist-build.timer +0 -0
  143. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy/coord-web.service +0 -0
  144. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy_manifest.py +0 -0
  145. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deploy_units.py +0 -0
  146. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deprecation_telemetry.py +0 -0
  147. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/deps.py +0 -0
  148. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/diagnose.py +0 -0
  149. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dispatch.py +0 -0
  150. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dispatch_liveness.py +0 -0
  151. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dist_name.py +0 -0
  152. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dr_promote.py +0 -0
  153. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/dr_verify.py +0 -0
  154. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/drive.py +0 -0
  155. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/drive_queue.py +0 -0
  156. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/drive_sessions_snapshot.py +0 -0
  157. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/drive_state.py +0 -0
  158. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/events.py +0 -0
  159. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/failure_class.py +0 -0
  160. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/failure_classifier.py +0 -0
  161. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/filelock.py +0 -0
  162. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/fleet_config_health.py +0 -0
  163. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/forge_availability.py +0 -0
  164. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/freshness.py +0 -0
  165. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/gate_a.py +0 -0
  166. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/gate_b.py +0 -0
  167. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/gate_snapshot.py +0 -0
  168. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/gen_board_fixture.py +0 -0
  169. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/github_ops.py +0 -0
  170. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/github_throttle.py +0 -0
  171. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/goal.py +0 -0
  172. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/graph_health.py +0 -0
  173. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/__init__.py +0 -0
  174. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/aggregate.py +0 -0
  175. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/__init__.py +0 -0
  176. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/_ci_pin.py +0 -0
  177. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/agent_install.py +0 -0
  178. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/cargo_targets.py +0 -0
  179. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/claude_binary.py +0 -0
  180. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/config_drift.py +0 -0
  181. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  182. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/coord_web_ci_pin.py +0 -0
  183. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/deploy_lane_facts.py +0 -0
  184. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/disk.py +0 -0
  185. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/fleet_board.py +0 -0
  186. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  187. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/fleet_phantom.py +0 -0
  188. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/fleet_unit_drift.py +0 -0
  189. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/graph.py +0 -0
  190. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/graphify_cli.py +0 -0
  191. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/index_lock.py +0 -0
  192. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/issues_sync_staleness.py +0 -0
  193. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/local_machine_identity.py +0 -0
  194. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/plan_usage.py +0 -0
  195. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/pr_churn.py +0 -0
  196. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/release_cordon.py +0 -0
  197. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/repo_state.py +0 -0
  198. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/spawned_coord.py +0 -0
  199. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/stalled_pipeline.py +0 -0
  200. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/timer_active.py +0 -0
  201. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/toolchain.py +0 -0
  202. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/unit_drift.py +0 -0
  203. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/unit_enablement.py +0 -0
  204. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/wedged_drive_queue.py +0 -0
  205. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/checks/worktrees.py +0 -0
  206. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/cli.py +0 -0
  207. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/context.py +0 -0
  208. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/fleet_snapshot.py +0 -0
  209. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/models.py +0 -0
  210. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/pypi.py +0 -0
  211. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/registry.py +0 -0
  212. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/render.py +0 -0
  213. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/health/units.py +0 -0
  214. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/hooks.py +0 -0
  215. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/housekeeping.py +0 -0
  216. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/interactive.py +0 -0
  217. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/invariant_alarms.py +0 -0
  218. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/issue_store.py +0 -0
  219. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/issues_sync_status.py +0 -0
  220. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/liveness_auditor.py +0 -0
  221. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/machine_fault.py +0 -0
  222. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/machine_metrics.py +0 -0
  223. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/machine_onboard.py +0 -0
  224. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/machine_pause.py +0 -0
  225. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/machine_stats.py +0 -0
  226. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/merge_queue.py +0 -0
  227. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/milestone_chat.py +0 -0
  228. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/milestone_dispatch.py +0 -0
  229. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/milestone_gate.py +0 -0
  230. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/milestone_order.py +0 -0
  231. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/mock_author.py +0 -0
  232. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/models.py +0 -0
  233. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/network.py +0 -0
  234. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/new_issue_chat.py +0 -0
  235. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/__init__.py +0 -0
  236. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/baseline.py +0 -0
  237. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/cli.py +0 -0
  238. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/collect.py +0 -0
  239. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/digest.py +0 -0
  240. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/models.py +0 -0
  241. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/predicate.py +0 -0
  242. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/service.py +0 -0
  243. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/store.py +0 -0
  244. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/notifier/transport.py +0 -0
  245. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/openapi.py +0 -0
  246. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/overlap_fence.py +0 -0
  247. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/overlap_predict.py +0 -0
  248. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/parentage.py +0 -0
  249. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/parentage_github.py +0 -0
  250. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/pipeline.py +0 -0
  251. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/plan_parser.py +0 -0
  252. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/plans.py +0 -0
  253. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/platform_paths.py +0 -0
  254. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/portal_bridge.py +0 -0
  255. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/portal_store.py +0 -0
  256. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/portal_sync.py +0 -0
  257. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/pr_body_lint.py +0 -0
  258. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/prereqs.py +0 -0
  259. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/progress.py +0 -0
  260. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/providers/__init__.py +0 -0
  261. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/providers/base.py +0 -0
  262. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/providers/claude.py +0 -0
  263. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/providers/claude_pty.py +0 -0
  264. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/providers/opencode.py +0 -0
  265. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/queue_diagnose.py +0 -0
  266. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/reconcile.py +0 -0
  267. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/reconcile_tick.py +0 -0
  268. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/refine_chat.py +0 -0
  269. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/release_cordon.py +0 -0
  270. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/release_propagate.py +0 -0
  271. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/release_verify.py +0 -0
  272. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/release_window.py +0 -0
  273. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/repo_dormancy.py +0 -0
  274. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/repo_edit.py +0 -0
  275. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/repo_onboard.py +0 -0
  276. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/reports.py +0 -0
  277. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/rest_schema.py +0 -0
  278. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/restart_cmd.py +0 -0
  279. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/revalidate.py +0 -0
  280. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/review.py +0 -0
  281. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/scorecard.py +0 -0
  282. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/self_health.py +0 -0
  283. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/serve_app.py +0 -0
  284. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  285. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  286. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  287. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  288. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  289. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/portal-followup/SKILL.md +0 -0
  290. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/release-now/SKILL.md +0 -0
  291. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  292. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  293. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/skills/update-issue/SKILL.md +0 -0
  294. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/spend_ceiling.py +0 -0
  295. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/split_work.py +0 -0
  296. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/sql.py +0 -0
  297. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/stage_projection.py +0 -0
  298. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/store_migrate.py +0 -0
  299. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/store_parity.py +0 -0
  300. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/templates/deploy-cloudflare.node.yml +0 -0
  301. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/test_author.py +0 -0
  302. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/test_chat.py +0 -0
  303. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/test_orchestrator.py +0 -0
  304. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/test_report.py +0 -0
  305. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/tui_release.py +0 -0
  306. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/uat_checks.py +0 -0
  307. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/usage.py +0 -0
  308. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/usage_limits.py +0 -0
  309. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/usage_rollup.py +0 -0
  310. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coord/worker_events.py +0 -0
  311. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/coordinator.example.yml +0 -0
  312. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-agent.service +0 -0
  313. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-backup.service +0 -0
  314. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-backup.timer +0 -0
  315. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-db-backup.service +0 -0
  316. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-db-backup.sh +0 -0
  317. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-db-backup.timer +0 -0
  318. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-dr-verify.service +0 -0
  319. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-dr-verify.timer +0 -0
  320. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-drive-queue.service +0 -0
  321. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-drive-queue.timer +0 -0
  322. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-failure-notify.service +0 -0
  323. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-failure-notify.sh +0 -0
  324. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-fleet-watchdog.service +0 -0
  325. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-fleet-watchdog.timer +0 -0
  326. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-notify.service +0 -0
  327. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-notify.timer +0 -0
  328. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-release-propagate.service +0 -0
  329. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-release-propagate.timer +0 -0
  330. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-release-window.service +0 -0
  331. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-release-window.timer +0 -0
  332. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-serve.service +0 -0
  333. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-web-dist-build.service +0 -0
  334. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-web-dist-build.sh +0 -0
  335. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-web-dist-build.timer +0 -0
  336. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-web-rollback.sh +0 -0
  337. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/coord-web.service +0 -0
  338. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/deploy/node-shim.sh +0 -0
  339. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ADR_COORD_TUI_CI.md +0 -0
  340. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  341. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ADR_COORD_WEB_CI.md +0 -0
  342. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ADR_COORD_WEB_DIST.md +0 -0
  343. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  344. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/AGENT_OPERATIONS.md +0 -0
  345. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ARCHITECTURE.md +0 -0
  346. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ARCH_SECURITY_GATES.md +0 -0
  347. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/COCKPIT.md +0 -0
  348. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/CONTROL_CENTER.md +0 -0
  349. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/COST_DISCIPLINE.md +0 -0
  350. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/CROSS_PLATFORM.md +0 -0
  351. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/CUSTOMER_FACING_APPS.md +0 -0
  352. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/CUSTOMER_PORTAL.md +0 -0
  353. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/DATA_STORE_SELECTION.md +0 -0
  354. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/DISASTER_RECOVERY.md +0 -0
  355. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/DRIVE_QUEUE.md +0 -0
  356. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/EPHEMERAL_WORKERS.md +0 -0
  357. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/FORGE_MIGRATION.md +0 -0
  358. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/GRAPHIFY_SETUP.md +0 -0
  359. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ISSUE_GUIDANCE.md +0 -0
  360. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/MAC_MINI.md +0 -0
  361. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  362. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/NOTIFIER.md +0 -0
  363. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/OPENCODE_VERIFICATION.md +0 -0
  364. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/OPERATING_GOTCHAS.md +0 -0
  365. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/OPERATOR_GUIDES.md +0 -0
  366. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/ORACLE_LOOP.md +0 -0
  367. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/PHONE_WEBAPP.md +0 -0
  368. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/PIPELINE_V2.md +0 -0
  369. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/PLATFORM_EVOLUTION.md +0 -0
  370. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/SECOND_BACKEND.md +0 -0
  371. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/STORE_SERVICE.md +0 -0
  372. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  373. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/WEB_CONTROL_CENTER.md +0 -0
  374. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/WSL_WINDOWS_WORKER.md +0 -0
  375. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/mocks/web/README.md +0 -0
  376. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/mocks/web/_tokens.css +0 -0
  377. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/mocks/web/issue-detail.html +0 -0
  378. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/mocks/web/pipeline-narrow.html +0 -0
  379. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/docs/mocks/web/pipeline-wide.html +0 -0
  380. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/graphify-out/.gitignore +0 -0
  381. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/install-agent.sh +0 -0
  382. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/pyproject.toml +0 -0
  383. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/audit_review_verdict_overrides.py +0 -0
  384. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  385. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/build-worker-image.sh +0 -0
  386. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/coordinator-machine.py +0 -0
  387. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/dr-down.sh +0 -0
  388. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/dr-up.sh +0 -0
  389. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/epic-down.sh +0 -0
  390. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/epic-up.sh +0 -0
  391. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/preflight.sh +0 -0
  392. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/provision-server.sh +0 -0
  393. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/provision-worker.sh +0 -0
  394. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  395. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  396. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/throwaway-vm.sh +0 -0
  397. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/azure-workers/verify-github-token.sh +0 -0
  398. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/check_gh_argv_containment.py +0 -0
  399. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/codegen.py +0 -0
  400. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/coord-test-runner.sh +0 -0
  401. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  402. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  403. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  404. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  405. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/coord-venv-rollback.sh +0 -0
  406. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/drive-batch.sh +0 -0
  407. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/extract-coord-tui.sh +0 -0
  408. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/fleet_watchdog.py +0 -0
  409. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/gen_board_fixture.py +0 -0
  410. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/gen_mock_index.py +0 -0
  411. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/lib/provision-core.sh +0 -0
  412. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/next_release_tag.py +0 -0
  413. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/provision-machine.sh +0 -0
  414. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/run_tests_in_populated_home.sh +0 -0
  415. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/run_tests_without_gh.sh +0 -0
  416. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/setup-macmini.sh +0 -0
  417. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/smoke_437_interactive.py +0 -0
  418. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/verify-provision-noble.sh +0 -0
  419. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/verify_878_review_capture.py +0 -0
  420. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/verify_release_published.py +0 -0
  421. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/scripts/verify_release_wheel.py +0 -0
  422. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/setup.cfg +0 -0
  423. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/SMOKE_SET.md +0 -0
  424. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/__init__.py +0 -0
  425. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-37/conftest.py +0 -0
  426. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-37/contract.md +0 -0
  427. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-37/manifest.yml +0 -0
  428. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  429. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  430. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-51/contract.md +0 -0
  431. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  432. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  433. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-51/manifest.yml +0 -0
  434. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  435. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-51/tsconfig.json +0 -0
  436. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  437. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/backends.py +0 -0
  438. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/conftest.py +0 -0
  439. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/board-pipeline-basic.json +0 -0
  440. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  441. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  442. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  443. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  444. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/playwright/all_pass.json +0 -0
  445. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  446. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/playwright/mixed_fail.json +0 -0
  447. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  448. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  449. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/playwright/skip.json +0 -0
  450. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/playwright/truncated.json +0 -0
  451. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  452. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  453. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  454. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  455. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  456. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  457. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  458. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  459. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_acceptance.py +0 -0
  460. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_acceptance_drivers.py +0 -0
  461. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent.py +0 -0
  462. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_api_error.py +0 -0
  463. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_app.py +0 -0
  464. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_branch_base.py +0 -0
  465. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_branch_capture.py +0 -0
  466. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_config_free_1712.py +0 -0
  467. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_deploy_units_endpoint.py +0 -0
  468. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_dirty_worktree.py +0 -0
  469. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  470. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_graph_self_heal.py +0 -0
  471. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_health_h3.py +0 -0
  472. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_idle_restart.py +0 -0
  473. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_push_failure.py +0 -0
  474. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_reap.py +0 -0
  475. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_repos_and_pull.py +0 -0
  476. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_restart_services_endpoint.py +0 -0
  477. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_skills_self_heal.py +0 -0
  478. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_startup_diagnostics.py +0 -0
  479. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_update.py +0 -0
  480. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_update_bluegreen.py +0 -0
  481. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_usage_limit.py +0 -0
  482. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_agent_zero_commit.py +0 -0
  483. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_ambient_home_isolation.py +0 -0
  484. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_approve_capability_reroute_3241.py +0 -0
  485. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_approve_dependency_busy_2804.py +0 -0
  486. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_approve_reject_plan.py +0 -0
  487. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_approve_usage_gate.py +0 -0
  488. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_approved_work_2532.py +0 -0
  489. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_approved_work_2996.py +0 -0
  490. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_assignment_already_recorded_daemon.py +0 -0
  491. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_audit_log.py +0 -0
  492. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_audit_outcome.py +0 -0
  493. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_audit_query.py +0 -0
  494. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_auto_loop.py +0 -0
  495. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_auto_release_publish_2035.py +0 -0
  496. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_backend_selection.py +0 -0
  497. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_backup.py +0 -0
  498. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_base_checkout_restore.py +0 -0
  499. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_block_log.py +0 -0
  500. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_board_cap_762.py +0 -0
  501. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_board_fixture.py +0 -0
  502. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_board_read_path.py +0 -0
  503. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_board_schema.py +0 -0
  504. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_board_service.py +0 -0
  505. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_board_state.py +0 -0
  506. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_board_wire.py +0 -0
  507. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_brain.py +0 -0
  508. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_branch_model.py +0 -0
  509. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_bug_intake.py +0 -0
  510. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_build_worker_image_env_update.py +0 -0
  511. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cargo_cache.py +0 -0
  512. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_check_gh_argv_containment.py +0 -0
  513. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_ci_acceptance_gate_1950.py +0 -0
  514. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_ci_github.py +0 -0
  515. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_ci_gitlab.py +0 -0
  516. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_ci_parity_2091.py +0 -0
  517. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_ci_store.py +0 -0
  518. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_claim.py +0 -0
  519. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_claude_md_budget.py +0 -0
  520. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_claude_setup_token.py +0 -0
  521. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_acceptance.py +0 -0
  522. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_assign.py +0 -0
  523. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  524. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_assign_interactive_remote.py +0 -0
  525. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_assign_provider.py +0 -0
  526. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  527. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_audit.py +0 -0
  528. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_chat_continue.py +0 -0
  529. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_ci.py +0 -0
  530. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_codegen.py +0 -0
  531. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_decide.py +0 -0
  532. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_diagnose_capability_rules.py +0 -0
  533. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_diagnose_config_provenance.py +0 -0
  534. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_diagnose_forge_availability.py +0 -0
  535. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_diagnose_graph.py +0 -0
  536. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_diagnose_self.py +0 -0
  537. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_diagnose_test_coverage.py +0 -0
  538. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_doctor.py +0 -0
  539. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_doctor_config_free_1801.py +0 -0
  540. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  541. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  542. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_drive.py +0 -0
  543. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_drive_queue.py +0 -0
  544. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_escalate.py +0 -0
  545. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_fix_headless_review.py +0 -0
  546. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_gate_a.py +0 -0
  547. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_install_drift.py +0 -0
  548. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_install_skills.py +0 -0
  549. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_issue_comment.py +0 -0
  550. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_issue_create_label.py +0 -0
  551. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_issue_reopen.py +0 -0
  552. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_issue_view_list.py +0 -0
  553. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_issues.py +0 -0
  554. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_merge.py +0 -0
  555. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_assign.py +0 -0
  556. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_capture.py +0 -0
  557. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_chat_add_child.py +0 -0
  558. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_dispatch.py +0 -0
  559. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_gate_b.py +0 -0
  560. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_gate_c.py +0 -0
  561. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_order.py +0 -0
  562. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  563. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_milestone_ship.py +0 -0
  564. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_network.py +0 -0
  565. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_new_issue_chat.py +0 -0
  566. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_plans.py +0 -0
  567. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_portal.py +0 -0
  568. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_pr.py +0 -0
  569. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_pull_artifact.py +0 -0
  570. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_queue.py +0 -0
  571. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_reattach_sessions.py +0 -0
  572. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_refine_board.py +0 -0
  573. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_release_preflight.py +0 -0
  574. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_release_propagate.py +0 -0
  575. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_release_window.py +0 -0
  576. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_repo_2220.py +0 -0
  577. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  578. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_scorecard.py +0 -0
  579. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_serve_store_backend_3084.py +0 -0
  580. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_set_review_findings.py +0 -0
  581. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_advisory_terminal.py +0 -0
  582. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_contested_tag.py +0 -0
  583. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_invariant_alarms.py +0 -0
  584. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_machine_fault.py +0 -0
  585. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_merge_queue.py +0 -0
  586. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_provider.py +0 -0
  587. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_retried_3340.py +0 -0
  588. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_review_finalizing.py +0 -0
  589. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_supervisor_3366.py +0 -0
  590. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_test_failed_tag.py +0 -0
  591. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_status_usage_limit.py +0 -0
  592. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_sync_comments_873.py +0 -0
  593. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_test_plan.py +0 -0
  594. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_track.py +0 -0
  595. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_tui_update.py +0 -0
  596. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cli_wait.py +0 -0
  597. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_client.py +0 -0
  598. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_client_base_install.py +0 -0
  599. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_client_config_cache_atomic_3052.py +0 -0
  600. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_client_resource_migration_1946.py +0 -0
  601. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_commands_common.py +0 -0
  602. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_comments.py +0 -0
  603. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_completion_summary.py +0 -0
  604. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config_acceptance.py +0 -0
  605. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config_audit.py +0 -0
  606. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config_drift_check.py +0 -0
  607. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config_effective.py +0 -0
  608. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config_pricing.py +0 -0
  609. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  610. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_config_usage_gate.py +0 -0
  611. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_conflict_fix.py +0 -0
  612. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_conflict_fix_semantic.py +0 -0
  613. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  614. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_test.py +0 -0
  615. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  616. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_test_runner_baseline.py +0 -0
  617. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_test_runner_populated_home.py +0 -0
  618. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_test_runner_routing.py +0 -0
  619. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_test_runner_toolchain.py +0 -0
  620. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_uat.py +0 -0
  621. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coord_web_sse_restart_live.py +0 -0
  622. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_coordinator_machine.py +0 -0
  623. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_cross_platform_imports.py +0 -0
  624. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dao.py +0 -0
  625. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dashboard.py +0 -0
  626. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dashboard_api.py +0 -0
  627. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dashboard_fixture.py +0 -0
  628. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dashboard_server.py +0 -0
  629. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dashboard_terminal.py +0 -0
  630. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dashboard_terminal_live.py +0 -0
  631. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_db.py +0 -0
  632. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dead_end.py +0 -0
  633. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_decomposition_chat.py +0 -0
  634. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_coord_db_backup.py +0 -0
  635. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_coord_web_dist.py +0 -0
  636. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_coord_web_rollback.py +0 -0
  637. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_db_backup_unit.py +0 -0
  638. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_drive_queue_unit.py +0 -0
  639. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_failure_notify_unit.py +0 -0
  640. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_manifest.py +0 -0
  641. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_notify_unit.py +0 -0
  642. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_units_lane.py +0 -0
  643. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deploy_web_unit.py +0 -0
  644. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deprecation_telemetry.py +0 -0
  645. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_deps.py +0 -0
  646. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_diagnose.py +0 -0
  647. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dispatch.py +0 -0
  648. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dispatch_liveness.py +0 -0
  649. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dispatch_target_validation.py +0 -0
  650. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dispatch_workers.py +0 -0
  651. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dist_name.py +0 -0
  652. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_done_housekeeping.py +0 -0
  653. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dr_azure_scripts.py +0 -0
  654. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dr_promote.py +0 -0
  655. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_dr_verify.py +0 -0
  656. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive.py +0 -0
  657. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_machine_fault.py +0 -0
  658. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_queue.py +0 -0
  659. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_queue_blocked_rendering.py +0 -0
  660. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_queue_launch_argv.py +0 -0
  661. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_queue_max_parallel_config.py +0 -0
  662. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  663. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_queue_roll_pending.py +0 -0
  664. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  665. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_sessions_snapshot.py +0 -0
  666. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_state.py +0 -0
  667. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_drive_tmux.py +0 -0
  668. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_epic_up_capability_detection.py +0 -0
  669. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  670. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_epic_up_image_provenance.py +0 -0
  671. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_errors.py +0 -0
  672. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_events.py +0 -0
  673. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_failure_class.py +0 -0
  674. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_failure_classifier.py +0 -0
  675. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_filelock.py +0 -0
  676. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  677. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_fix_escalation_classifier.py +0 -0
  678. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_fix_of_force_override.py +0 -0
  679. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_fleet_config_health.py +0 -0
  680. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_fleet_health_probes.py +0 -0
  681. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_fleet_health_snapshot.py +0 -0
  682. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_fleet_watchdog.py +0 -0
  683. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_forge_availability.py +0 -0
  684. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_freshness.py +0 -0
  685. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_gate_a.py +0 -0
  686. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_gate_b.py +0 -0
  687. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_gate_snapshot_staleness.py +0 -0
  688. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  689. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_gen_mock_index.py +0 -0
  690. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_generated_rust_fixture.py +0 -0
  691. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_generated_rust_requests.py +0 -0
  692. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_generated_types_fixture.py +0 -0
  693. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_github_ops.py +0 -0
  694. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_github_throttle.py +0 -0
  695. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_goal.py +0 -0
  696. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_graph_health.py +0 -0
  697. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_graph_selfheal_absent_2237.py +0 -0
  698. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_handoff.py +0 -0
  699. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_checks.py +0 -0
  700. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_cli.py +0 -0
  701. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_cli_graph.py +0 -0
  702. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_config.py +0 -0
  703. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_context.py +0 -0
  704. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_coord_tui_ci_pin.py +0 -0
  705. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_coord_web_ci_pin.py +0 -0
  706. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_deploy_lane_facts.py +0 -0
  707. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_fix.py +0 -0
  708. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_incident_regression.py +0 -0
  709. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_issues_sync_staleness.py +0 -0
  710. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_pr_churn.py +0 -0
  711. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_pypi.py +0 -0
  712. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_registry.py +0 -0
  713. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_release_cordon_probe.py +0 -0
  714. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_timer_active.py +0 -0
  715. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_toolchain.py +0 -0
  716. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_unit_drift.py +0 -0
  717. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_unit_enablement.py +0 -0
  718. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_health_wedged_drive_queue.py +0 -0
  719. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_hooks.py +0 -0
  720. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_housekeeping.py +0 -0
  721. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_human_attended_437.py +0 -0
  722. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_init.py +0 -0
  723. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_install_agent_venv_2911.py +0 -0
  724. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_integration.py +0 -0
  725. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive.py +0 -0
  726. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive_briefing_echo.py +0 -0
  727. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive_pane_log_2541.py +0 -0
  728. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive_prefill_state.py +0 -0
  729. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive_session_relaunch.py +0 -0
  730. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive_test_verdict_backstop.py +0 -0
  731. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive_token_attribution.py +0 -0
  732. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_interactive_worktree.py +0 -0
  733. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_invariant_alarms.py +0 -0
  734. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_issue_store_seam.py +0 -0
  735. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_issues_sync_status.py +0 -0
  736. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_liveness_auditor.py +0 -0
  737. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_liveness_notify.py +0 -0
  738. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_lock_contention_ratchet.py +0 -0
  739. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_machine_fault.py +0 -0
  740. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_machine_metrics.py +0 -0
  741. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_machine_onboard.py +0 -0
  742. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_machine_pause.py +0 -0
  743. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_machine_stats.py +0 -0
  744. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_merge_queue.py +0 -0
  745. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_merge_verify.py +0 -0
  746. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_milestone_chat.py +0 -0
  747. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_milestone_dispatch.py +0 -0
  748. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_milestone_gate.py +0 -0
  749. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_milestone_order.py +0 -0
  750. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_milestone_seam.py +0 -0
  751. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_mock_author.py +0 -0
  752. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_model_tiering.py +0 -0
  753. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_models.py +0 -0
  754. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_models_config_labels.py +0 -0
  755. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_needs_attention.py +0 -0
  756. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_network.py +0 -0
  757. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_new_issue_chat.py +0 -0
  758. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_next_release_tag.py +0 -0
  759. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_node_shim.py +0 -0
  760. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_baseline.py +0 -0
  761. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_cli.py +0 -0
  762. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_collect.py +0 -0
  763. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_config.py +0 -0
  764. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_drive_seam.py +0 -0
  765. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_isolation.py +0 -0
  766. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_predicate.py +0 -0
  767. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_quiet_hours.py +0 -0
  768. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notifier_service.py +0 -0
  769. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_notify_drain.py +0 -0
  770. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_openapi.py +0 -0
  771. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_operational_defaults.py +0 -0
  772. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_overlap_fence.py +0 -0
  773. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_overlap_predict.py +0 -0
  774. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_packaged_deploy_units.py +0 -0
  775. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_parentage.py +0 -0
  776. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_paste_landed.py +0 -0
  777. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  778. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_pipeline.py +0 -0
  779. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_plan_followup_approve_plan_command.py +0 -0
  780. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_plan_followup_pr_command.py +0 -0
  781. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_plan_followup_review_command.py +0 -0
  782. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_plan_only.py +0 -0
  783. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_plan_parser.py +0 -0
  784. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_platform_paths.py +0 -0
  785. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_portal_bridge.py +0 -0
  786. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_portal_config.py +0 -0
  787. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_portal_store.py +0 -0
  788. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_portal_sync.py +0 -0
  789. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_pr_body_lint.py +0 -0
  790. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_prereqs.py +0 -0
  791. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_production_db_guard.py +0 -0
  792. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_progress.py +0 -0
  793. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_provider_seam.py +0 -0
  794. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_providers.py +0 -0
  795. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_providers_config_labels.py +0 -0
  796. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_providers_pty.py +0 -0
  797. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_provision_core.py +0 -0
  798. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_provision_machine.py +0 -0
  799. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_py_rust_mirror_inventory.py +0 -0
  800. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_quiet_hours.py +0 -0
  801. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_quiet_hours_store_2146.py +0 -0
  802. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reap_merged_sessions.py +0 -0
  803. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reap_stale_interactive_tick.py +0 -0
  804. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile.py +0 -0
  805. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile_branch.py +0 -0
  806. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile_completions.py +0 -0
  807. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  808. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile_merges.py +0 -0
  809. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile_no_agent_record.py +0 -0
  810. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile_tick.py +0 -0
  811. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reconcile_usage_limit_done.py +0 -0
  812. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_refine_chat.py +0 -0
  813. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_cordon_2101.py +0 -0
  814. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  815. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_cordon_deadlock_2240.py +0 -0
  816. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  817. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_cordon_stuck_2490.py +0 -0
  818. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_propagate.py +0 -0
  819. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_propagate_threshold.py +0 -0
  820. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_roll_between_legs_2854.py +0 -0
  821. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_roll_window_handoff.py +0 -0
  822. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_unified_1242.py +0 -0
  823. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_verify.py +0 -0
  824. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_release_window.py +0 -0
  825. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_remote_auto_prune.py +0 -0
  826. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_remote_interactive_reaper.py +0 -0
  827. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_repo_add.py +0 -0
  828. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_repo_dormancy.py +0 -0
  829. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_repo_edit_2220.py +0 -0
  830. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_repo_graph_fleet_2237.py +0 -0
  831. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_repo_max_parallel_3423.py +0 -0
  832. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_repo_onboard_2220.py +0 -0
  833. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_report_result_push.py +0 -0
  834. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_reports.py +0 -0
  835. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_restart_cmd.py +0 -0
  836. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_retry.py +0 -0
  837. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_retry_advisory_1606.py +0 -0
  838. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_retry_escalation_classify_3360.py +0 -0
  839. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_retry_type_1636.py +0 -0
  840. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_revalidate.py +0 -0
  841. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review.py +0 -0
  842. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_end_review_without_verdict.py +0 -0
  843. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_parse_failure_diagnostic.py +0 -0
  844. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_reaffirm.py +0 -0
  845. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_state.py +0 -0
  846. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_verdict_backstop.py +0 -0
  847. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_verdict_override_audit.py +0 -0
  848. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_verdict_relay.py +0 -0
  849. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_review_zero_commits.py +0 -0
  850. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_scoped_review_wiring.py +0 -0
  851. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_scorecard.py +0 -0
  852. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_self_health.py +0 -0
  853. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_serve.py +0 -0
  854. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_serve_app.py +0 -0
  855. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_serve_app_board_trim.py +0 -0
  856. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_serve_rest_routes.py +0 -0
  857. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_session.py +0 -0
  858. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_slice_issue_attribution.py +0 -0
  859. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  860. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_smoke_live_checkout_restore.py +0 -0
  861. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_smoke_workflow.py +0 -0
  862. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_spend_ceiling.py +0 -0
  863. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_spend_ceiling_coordinator.py +0 -0
  864. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_split.py +0 -0
  865. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_split_work.py +0 -0
  866. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_sql_dialect.py +0 -0
  867. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_sqlite_connect_ratchet.py +0 -0
  868. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_stage_projection.py +0 -0
  869. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_stale_busy_reviewer_697.py +0 -0
  870. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_stalled_pipeline.py +0 -0
  871. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_state.py +0 -0
  872. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_state_review_findings_daemon.py +0 -0
  873. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_status_fleet_footer.py +0 -0
  874. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_stop_1567.py +0 -0
  875. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_store_contract.py +0 -0
  876. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_store_migrate.py +0 -0
  877. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_stuck.py +0 -0
  878. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  879. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_terminal_command.py +0 -0
  880. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_test_author.py +0 -0
  881. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_test_chat.py +0 -0
  882. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_test_orchestrator.py +0 -0
  883. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_test_report.py +0 -0
  884. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_test_verdict_parsing.py +0 -0
  885. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_test_verdict_transcript_floor.py +0 -0
  886. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_text_io_encoding_audit.py +0 -0
  887. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_thin_client_board_audit.py +0 -0
  888. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_thin_client_config_load_1080.py +0 -0
  889. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_thin_client_daemon_routing_906.py +0 -0
  890. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_throwaway_vm.py +0 -0
  891. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_tmux_host.py +0 -0
  892. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_tmux_session.py +0 -0
  893. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_transcript_floor.py +0 -0
  894. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_uat_checks.py +0 -0
  895. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_usage.py +0 -0
  896. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_usage_limits.py +0 -0
  897. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_usage_rollup.py +0 -0
  898. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_venv_live_install_2121.py +0 -0
  899. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_version_single_source.py +0 -0
  900. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_watch.py +0 -0
  901. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  902. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_worker_env_venv_isolation.py +0 -0
  903. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_worker_events.py +0 -0
  904. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_worker_image_pin_sync.py +0 -0
  905. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_worker_safety.py +0 -0
  906. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_worker_test_scoping.py +0 -0
  907. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_worktree.py +0 -0
  908. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  909. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/tests/test_write_parity.py +0 -0
  910. {code_coordinator-0.5.523 → code_coordinator-0.5.525}/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.523
3
+ Version: 0.5.525
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.523
3
+ Version: 0.5.525
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.523",
2
+ "tag": "0.5.525",
3
3
  "distance": 0,
4
- "node": "geeb81f140eb64e517c8fde27adf71ba0186f28da",
4
+ "node": "g055bba5413e260e4e732234df5915c68b3c23459",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-09-27"
@@ -37,6 +37,7 @@ import logging
37
37
 
38
38
  import httpx
39
39
 
40
+ from coord import github_ops
40
41
  from coord.ci_store import CIFailureDetail
41
42
  from coord.config import Config
42
43
  from coord.merge_queue import QueuedMerge, _chain_work_ids
@@ -144,12 +145,87 @@ def _format_ci_failure_detail(detail: CIFailureDetail) -> list[str]:
144
145
  return lines
145
146
 
146
147
 
148
+ # #3456: cap on the issue body threaded into a ci-fix briefing. Large
149
+ # enough that a typical issue description plus an operator's follow-up
150
+ # diagnosis both fit without truncation in the common case — only a
151
+ # genuinely long body (or a long back-and-forth of appended notes) hits
152
+ # the cap at all.
153
+ ISSUE_BODY_MAX_CHARS = 6000
154
+
155
+
156
+ def _bound_issue_body(body: str) -> tuple[str, bool]:
157
+ """Truncate *body* to the last :data:`ISSUE_BODY_MAX_CHARS` characters
158
+ when it exceeds that cap (#3456).
159
+
160
+ Keeps the TAIL, not the head: an operator's diagnosis on a CI-fix
161
+ streak is written INTO the issue body after the failure is understood
162
+ — i.e. appended below the original description (see the issue's own
163
+ evidence: "After the root cause was written into the issue body,
164
+ requeueing would have routed the next attempt through the same ci-fix
165
+ path"). Keeping the tail is what makes sure that operator-added
166
+ content survives a cut; the cost is that the original description
167
+ (often already echoed by the issue title anyway) is what gets dropped
168
+ for a body long enough to need cutting at all.
169
+
170
+ Returns ``(text, truncated)`` — mirrors
171
+ :func:`coord.ci_github._bound_log_excerpt`'s contract: *truncated* is
172
+ ``True`` iff the cut actually removed content, so the caller can make
173
+ the cut visible in the briefing text rather than silently handing over
174
+ a partial body.
175
+ """
176
+ if len(body) <= ISSUE_BODY_MAX_CHARS:
177
+ return body, False
178
+ return body[-ISSUE_BODY_MAX_CHARS:], True
179
+
180
+
181
+ def _format_issue_body(issue_body: str) -> list[str]:
182
+ """Render *issue_body* into briefing lines (#3456) — see
183
+ :func:`_bound_issue_body` for the truncation contract.
184
+ """
185
+ body, truncated = _bound_issue_body(issue_body)
186
+ lines: list[str] = ["## Issue body", ""]
187
+ if truncated:
188
+ lines.append(
189
+ f"(truncated to the last {ISSUE_BODY_MAX_CHARS} characters — "
190
+ "operator notes are typically appended below the original "
191
+ "description, so keeping the tail keeps those over the part "
192
+ "already echoed by the issue title)"
193
+ )
194
+ lines.append("")
195
+ lines.append(body)
196
+ lines.append("")
197
+ return lines
198
+
199
+
200
+ def _fetch_issue_body(entry: QueuedMerge) -> str:
201
+ """Best-effort fetch of *entry*'s issue body for the ci-fix briefing
202
+ (#3456) — the same body a Work-stage dispatch already auto-includes
203
+ (``coord.commands.dispatch``'s auto-briefing, ``coord.commands.
204
+ dispatch_workers``' smoke briefing) but a ci-fix dispatch never did:
205
+ any diagnosis an operator records on the issue (e.g. after reading the
206
+ real CI logs by hand) was invisible to the worker most likely to need
207
+ it, since workers can't run ``gh`` themselves to read it any other way.
208
+
209
+ Fails soft to ``""`` on any read failure (``gh`` missing, rate-limited,
210
+ a network blip, a malformed response) — same posture as
211
+ :func:`coord.ci_github.build_ci_failure_detail`: this is enrichment,
212
+ never a dispatch precondition, and a body fetch failure must never
213
+ block or delay the actual fix dispatch.
214
+ """
215
+ try:
216
+ issue_data = github_ops.get_issue(entry.repo_github, entry.issue_number)
217
+ except Exception: # noqa: BLE001 — best-effort, see docstring
218
+ return ""
219
+ return str(issue_data.get("body") or "")
220
+
221
+
147
222
  def build_ci_fix_briefing(
148
223
  *,
149
224
  entry: QueuedMerge,
150
225
  checks_summary: str,
151
226
  attempt: int,
152
227
  detail: CIFailureDetail | None = None,
228
+ issue_body: str | None = None,
153
229
  ) -> str:
154
230
  """Assemble the CI-fix worker's briefing. Pure function — testable.
155
231
 
@@ -159,6 +235,11 @@ def build_ci_fix_briefing(
159
235
  empty of anything beyond the check name (see :func:`_detail_has_content`),
160
236
  the briefing is byte-identical to before #3114, still carrying
161
237
  ``checks_summary``.
238
+
239
+ *issue_body* (#3456) is the issue's current body, fetched by
240
+ :func:`_fetch_issue_body` at dispatch time — optional and additive,
241
+ same shape as *detail*: ``None`` or blank leaves the briefing
242
+ byte-identical to before #3456.
162
243
  """
163
244
  lines: list[str] = [
164
245
  f"# CI failure fix: {entry.repo_github} branch `{entry.branch}`",
@@ -172,6 +253,8 @@ def build_ci_fix_briefing(
172
253
  f" {checks_summary}",
173
254
  "",
174
255
  ]
256
+ if issue_body is not None and issue_body.strip():
257
+ lines.extend(_format_issue_body(issue_body))
175
258
  if detail is not None and _detail_has_content(detail):
176
259
  lines.extend(_format_ci_failure_detail(detail))
177
260
  lines += [
@@ -353,9 +436,10 @@ def dispatch_ci_fix(
353
436
  return None
354
437
 
355
438
  summary = checks_summary or entry.error or "CI checks failed"
439
+ issue_body = _fetch_issue_body(entry)
356
440
  briefing = build_ci_fix_briefing(
357
441
  entry=entry, checks_summary=summary, attempt=entry.ci_fix_dispatches + 1,
358
- detail=detail,
442
+ detail=detail, issue_body=issue_body,
359
443
  )
360
444
 
361
445
  from coord.auto_loop import _dispatch_fix # noqa: PLC0415
@@ -120,19 +120,50 @@ _RUST_ERROR_RE = re.compile(r"\berror(\[E\d+\])?:")
120
120
  _RUST_LOCATION_RE = re.compile(r"-->")
121
121
  _RUST_WARNING_RE = re.compile(r"\bwarning:")
122
122
 
123
+ # #3456: GitHub Actions appends this EXACT line to every failing step's log,
124
+ # regardless of what actually failed — it is the annotation `_ERROR_
125
+ # ANNOTATION_RE` would otherwise happily match as tier-1 signal, and on a
126
+ # job whose real failure produces no OTHER `##[error]` line (e.g. a `cargo
127
+ # test` failure — rustc's own test-harness panic output carries no `##[
128
+ # error]` prefix at all), this generic wrapper line was the ONLY thing
129
+ # selected: "exit code 1", not the failing test. Excluded from the
130
+ # `annotation` tier entirely so the more specific `rust_test_failure` tier
131
+ # below (or, failing that, `no_diagnostics_matched`) wins instead.
132
+ _EXIT_CODE_ANNOTATION_RE = re.compile(r"##\[error\]Process completed with exit code \d+\.?\s*$")
133
+
134
+ # #3456: a rust test-harness failure never carries a `##[error]` prefix, so
135
+ # none of it was reachable by any tier before this — the harness prints a
136
+ # per-test `---- <test path> stdout ----` header immediately followed by the
137
+ # `panicked at ...` message, then (once every test has run) a `failures:`
138
+ # roll-up naming every failing test, then a final `test result: FAILED. ...`
139
+ # summary line. All four are treated as one priority tier: whichever of
140
+ # them shows up is unambiguously more useful than the generic exit-code
141
+ # annotation above.
142
+ _RUST_TEST_STDOUT_HEADER_RE = re.compile(r"^-+\s.*\sstdout\s-+\s*$")
143
+ _RUST_PANICKED_RE = re.compile(r"panicked at")
144
+ _RUST_TEST_RESULT_RE = re.compile(r"\btest result: FAILED\b")
145
+ _RUST_FAILURES_HEADER_RE = re.compile(r"^failures:\s*$")
146
+
123
147
  # How many lines past a matched rust-diagnostic line to look for its `-->`
124
148
  # location before giving up — rustc always emits it on the very next
125
149
  # non-blank line; a small window tolerates the odd blank line without
126
150
  # accidentally stealing a `-->` that belongs to a LATER diagnostic.
127
151
  _RUST_LOCATION_LOOKAHEAD = 4
128
152
 
153
+ # How many lines past a `---- <test> stdout ----` header to sweep into the
154
+ # same unit — enough to capture the `thread '...' panicked at ...:LINE:COL:`
155
+ # line plus a short assertion message, without running so far that a SECOND
156
+ # test's header (or unrelated harness noise) gets swept in too.
157
+ _RUST_TEST_FAILURE_LOOKAHEAD = 6
158
+
129
159
 
130
160
  def _select_diagnostic_units(lines: list[str]) -> tuple[
131
- list[list[str]], list[list[str]], list[list[str]]
161
+ list[list[str]], list[list[str]], list[list[str]], list[list[str]]
132
162
  ]:
133
- """Classify *lines* into (annotation, rust_diagnostic, warning) unit
134
- lists, each unit a small list of original line strings kept atomic so
135
- budget truncation never splits an `error:`/`-->` pair apart (#3245).
163
+ """Classify *lines* into (annotation, rust_test_failure, rust_diagnostic,
164
+ warning) unit lists, each unit a small list of original line strings
165
+ kept atomic so budget truncation never splits an `error:`/`-->` pair —
166
+ or a rust test panic header/message pair — apart (#3245, #3456).
136
167
 
137
168
  Each source line is claimed by at most one bucket, checked in priority
138
169
  order, so a line matching a higher-priority pattern is never
@@ -142,10 +173,47 @@ def _select_diagnostic_units(lines: list[str]) -> tuple[
142
173
 
143
174
  annotation: list[list[str]] = []
144
175
  for i, line in enumerate(lines):
176
+ # #3456: the generic "step failed" wrapper line is deliberately
177
+ # never claimed here (see `_EXIT_CODE_ANNOTATION_RE`'s comment) —
178
+ # left unclaimed (not even added to `claimed`) since nothing else
179
+ # matches it anyway.
180
+ if _EXIT_CODE_ANNOTATION_RE.search(line):
181
+ continue
145
182
  if _ERROR_ANNOTATION_RE.search(line):
146
183
  annotation.append([line])
147
184
  claimed.add(i)
148
185
 
186
+ # #3456: rust test-harness failures — a stdout header sweeps in the
187
+ # panic message that follows it; a bare `panicked at`/`test result:
188
+ # FAILED`/`failures:` line (no preceding header, e.g. a `cargo run`
189
+ # panic outside the test harness) stands alone as its own unit.
190
+ rust_test_failure: list[list[str]] = []
191
+ for i, line in enumerate(lines):
192
+ if i in claimed:
193
+ continue
194
+ if _RUST_TEST_STDOUT_HEADER_RE.match(line.strip()):
195
+ claimed.add(i)
196
+ unit = [line]
197
+ end = min(i + 1 + _RUST_TEST_FAILURE_LOOKAHEAD, len(lines))
198
+ for j in range(i + 1, end):
199
+ if j in claimed:
200
+ break
201
+ candidate = lines[j]
202
+ if not candidate.strip() or _RUST_TEST_STDOUT_HEADER_RE.match(candidate.strip()):
203
+ # Blank line or the next test's header — stop before
204
+ # sweeping in unrelated content.
205
+ break
206
+ unit.append(candidate)
207
+ claimed.add(j)
208
+ rust_test_failure.append(unit)
209
+ elif (
210
+ _RUST_PANICKED_RE.search(line)
211
+ or _RUST_TEST_RESULT_RE.search(line)
212
+ or _RUST_FAILURES_HEADER_RE.match(line.strip())
213
+ ):
214
+ claimed.add(i)
215
+ rust_test_failure.append([line])
216
+
149
217
  rust_diag: list[list[str]] = []
150
218
  for i, line in enumerate(lines):
151
219
  if i in claimed or not _RUST_ERROR_RE.search(line):
@@ -173,7 +241,7 @@ def _select_diagnostic_units(lines: list[str]) -> tuple[
173
241
  claimed.add(i)
174
242
  warning.append([line])
175
243
 
176
- return annotation, rust_diag, warning
244
+ return annotation, rust_test_failure, rust_diag, warning
177
245
 
178
246
 
179
247
  def _extract_relevant_log_lines(text: str) -> tuple[str, bool, bool]:
@@ -189,30 +257,42 @@ def _extract_relevant_log_lines(text: str) -> tuple[str, bool, bool]:
189
257
  Extraction is by relevance, in priority order, matching the issue's fix
190
258
  shape:
191
259
 
192
- 1. ``##[error]`` GitHub Actions annotation lines
193
- 2. Rust diagnostics — ``error[E....]:``/``error:`` paired with the
194
- ``-->`` file:line that follows
195
- 3. ``warning:`` lines, only if budget remains after 1-2
260
+ 1. ``##[error]`` GitHub Actions annotation lines — EXCEPT the generic
261
+ ``Process completed with exit code N.`` wrapper GitHub Actions
262
+ appends to every failing step regardless of cause (#3456): it
263
+ carries zero diagnostic value, and on a job whose real failure
264
+ never emits any OTHER ``##[error]`` line (a rust test panic, say),
265
+ it used to be the ONLY thing this function ever surfaced.
266
+ 2. Rust test-harness failures (#3456) — a ``---- <test> stdout ----``
267
+ header (with the ``panicked at ...`` message that follows it), a
268
+ bare ``panicked at`` line, a ``failures:`` roll-up, or the final
269
+ ``test result: FAILED`` summary line
270
+ 3. Rust compiler diagnostics — ``error[E....]:``/``error:`` paired with
271
+ the ``-->`` file:line that follows
272
+ 4. ``warning:`` lines, only if budget remains after 1-3
196
273
 
197
274
  Everything else — including the runner's own echo of a script step's
198
- source and post-job cleanup — is never a candidate, because it can
199
- only ever match one of these patterns by (extremely unlikely)
200
- coincidence.
275
+ source and post-job cleanup, and the excluded exit-code wrapper line —
276
+ is never a candidate, because it can only ever match one of these
277
+ patterns by (extremely unlikely) coincidence.
201
278
 
202
279
  Returns ``(excerpt, truncated, matched)``:
203
280
 
204
281
  - *matched* is ``False`` when nothing in any tier matched anywhere in
205
282
  *text* — the caller renders an explicit "no diagnostics" note rather
206
- than a misleadingly-empty excerpt.
283
+ than a misleadingly-empty excerpt. Note this can now be ``False`` for
284
+ a log whose ONLY `##[error]` line was the excluded exit-code wrapper —
285
+ correctly so, since that line alone told the caller nothing a
286
+ "no diagnostics matched" note doesn't already convey just as well.
207
287
  - *truncated* is ``True`` when the matched units together exceed
208
288
  :data:`CI_FIX_LOG_MAX_LINES`/:data:`CI_FIX_LOG_MAX_BYTES` and lower-
209
- priority units (warnings first, then any tier-1/2 overflow) had to be
210
- dropped to fit — same "make the cut visible" contract as
289
+ priority units (warnings first, then any earlier-tier overflow) had
290
+ to be dropped to fit — same "make the cut visible" contract as
211
291
  :func:`_bound_log_excerpt`.
212
292
  """
213
293
  lines = text.splitlines()
214
- annotation, rust_diag, warning = _select_diagnostic_units(lines)
215
- units = annotation + rust_diag + warning
294
+ annotation, rust_test_failure, rust_diag, warning = _select_diagnostic_units(lines)
295
+ units = annotation + rust_test_failure + rust_diag + warning
216
296
  if not units:
217
297
  return "", False, False
218
298
 
@@ -307,12 +307,34 @@ class SmokeTestsConfig:
307
307
  `default_command` is the shell command the smoke agent runs (e.g.
308
308
  `make smoke` or `pytest tests/smoke`). Per-repo overrides flow through
309
309
  `Repo.test_command` already; this is the fallback when none is set.
310
+
311
+ `native_execution_capabilities` (#3455) lists which bare capabilities
312
+ (e.g. `"windows"`) merely mean "some machine can build/cross-compile
313
+ for this" and do NOT by themselves prove a Test leg runs on that OS
314
+ natively. `dell64` declared `windows` while its coord agent ran inside
315
+ WSL (Linux); a #[cfg(target_os = "windows")] test compiled out and the
316
+ Test stage reported `pass` for a failure GitHub's `windows-latest`
317
+ runner caught every time (quadraui#1077). A machine must ALSO declare
318
+ `coord.config.native_execution_capability(cap)` (e.g. `windows-native`)
319
+ to certify it runs *that* capability's suite natively — see
320
+ `coord.smoke.unverified_native_capabilities`, consulted at THREE points
321
+ so the gap can't be closed by prompt-cooperation alone: routing
322
+ (`coord.smoke.rank_smoke_machines` prefers a native-verified candidate
323
+ over a bare one when both exist), dispatch (the briefing tells the
324
+ worker to caveat its own marker), and verdict-recording
325
+ (`coord.notify._record_smoke_verdict`'s PASS branches independently
326
+ recompute this and record `test_confirmation="native_unverified"`
327
+ regardless of what the worker's marker text says). Defaults to
328
+ `["windows"]`, the one capability the incident this exists for actually
329
+ involved; add more here (e.g. a future `"macos"` cross-build path)
330
+ without any code change.
310
331
  """
311
332
 
312
333
  auto_queue: bool = False
313
334
  default_command: str | None = None
314
335
  timeout_seconds: int = 600
315
336
  capability_rules: list[SmokeRule] = field(default_factory=list)
337
+ native_execution_capabilities: list[str] = field(default_factory=lambda: ["windows"])
316
338
 
317
339
 
318
340
  @dataclass
@@ -1904,6 +1926,25 @@ def provider_capability(provider_type: str) -> str:
1904
1926
  return f"provider:{provider_type}"
1905
1927
 
1906
1928
 
1929
+ def native_execution_capability(capability: str) -> str:
1930
+ """The ``capabilities:`` string a machine must ALSO declare, alongside
1931
+ *capability* itself, to certify it runs *capability*'s tests on a
1932
+ genuinely native host rather than merely building/cross-compiling for
1933
+ it (#3455).
1934
+
1935
+ ``native_execution_capability("windows") == "windows-native"``. Same
1936
+ config-only-declaration shape as :func:`provider_capability` — a
1937
+ machine that lists ``windows`` in ``capabilities:`` can build for
1938
+ Windows (a WSL/Linux agent satisfies that today), but only one that
1939
+ ALSO lists ``windows-native`` has told the coordinator its Test-stage
1940
+ runs actually execute there. Single source of truth for the naming
1941
+ convention: `coord.smoke.unverified_native_capabilities` is the only
1942
+ caller, so the two can never disagree about the string (#2096, "one
1943
+ question, one answer").
1944
+ """
1945
+ return f"{capability}-native"
1946
+
1947
+
1907
1948
  def model_plausible_for_provider_type(model: str, provider_type: str) -> bool:
1908
1949
  """Namespace-shape sanity check: could *model* plausibly belong to
1909
1950
  *provider_type* (#1798)?
@@ -3498,6 +3539,14 @@ def _parse_smoke_tests(raw: Any) -> SmokeTestsConfig:
3498
3539
  raise ConfigError("smoke_tests.timeout_seconds must be a positive integer")
3499
3540
  cfg.timeout_seconds = value
3500
3541
 
3542
+ if "native_execution_capabilities" in raw:
3543
+ value = raw["native_execution_capabilities"]
3544
+ if not isinstance(value, list) or not all(isinstance(c, str) for c in value):
3545
+ raise ConfigError(
3546
+ "smoke_tests.native_execution_capabilities must be a list of strings"
3547
+ )
3548
+ cfg.native_execution_capabilities = value
3549
+
3501
3550
  rules_raw = raw.get("capability_rules", []) or []
3502
3551
  if not isinstance(rules_raw, list):
3503
3552
  raise ConfigError("smoke_tests.capability_rules must be a list")
@@ -314,8 +314,21 @@ INCONCLUSIVE_KINDS = frozenset({
314
314
  # * ``TEST_CONFIRMATION_BASELINE_RED`` — `ConfirmationResult.baseline_red`
315
315
  # (#2170): the suite failed identically on the merge-base, so nothing was
316
316
  # learned about the BRANCH specifically, but a real run did happen.
317
+ # * ``TEST_CONFIRMATION_NATIVE_UNVERIFIED`` (#3455) — the claimed pass ran on
318
+ # a machine that declares only the bare/build side of a capability this
319
+ # leg required (`coord.smoke.SmokeTestsConfig.native_execution_
320
+ # capabilities`, e.g. `"windows"`), not the paired `coord.config.
321
+ # native_execution_capability` proof it runs that suite on genuinely native
322
+ # hardware — a WSL-hosted `windows` machine being the canonical case
323
+ # (`dell64` / quadraui#1077). Distinct from `UNCONFIRMED`: a confirmation
324
+ # run may well have executed and even agreed with the claim, but "agreed"
325
+ # here still means "on a non-native host", so platform-conditional code the
326
+ # real target OS would exercise never ran anywhere in this leg. Recorded
327
+ # by `coord.notify._record_smoke_verdict`'s PASS branches regardless of
328
+ # what the worker's own `SMOKE:` marker text says — see `coord.smoke.
329
+ # native_unverified_for_verdict`.
317
330
  #
318
- # ``None`` (the column default) is a fifth, implicit state: no confirmation
331
+ # ``None`` (the column default) is a sixth, implicit state: no confirmation
319
332
  # question was ever asked about this write at all — a headless smoke
320
333
  # FAILURE, a human `coord test --passed` write that has not yet been reaped
321
334
  # by a notify pass, a mute-leg park, ``TEST_STATE_BLOCKED``, ... None of
@@ -326,6 +339,7 @@ TEST_CONFIRMATION_CONFIRMED = "confirmed"
326
339
  TEST_CONFIRMATION_UNCONFIRMED = "unconfirmed"
327
340
  TEST_CONFIRMATION_REFUTED = "refuted"
328
341
  TEST_CONFIRMATION_BASELINE_RED = "baseline_red"
342
+ TEST_CONFIRMATION_NATIVE_UNVERIFIED = "native_unverified"
329
343
 
330
344
  #: Every value `test_confirmation` may hold — for validation / display sites
331
345
  #: that want to assert exhaustiveness rather than silently falling through.
@@ -334,6 +348,7 @@ TEST_CONFIRMATION_VALUES = frozenset({
334
348
  TEST_CONFIRMATION_UNCONFIRMED,
335
349
  TEST_CONFIRMATION_REFUTED,
336
350
  TEST_CONFIRMATION_BASELINE_RED,
351
+ TEST_CONFIRMATION_NATIVE_UNVERIFIED,
337
352
  })
338
353
 
339
354
  #: #3378: the canonical prefix a ``test_reason`` carries when a ``skipped``
@@ -1464,6 +1479,7 @@ __all__ = [
1464
1479
  "STALE_WORKTREE_MAX_AGE_HOURS",
1465
1480
  "TEST_CONFIRMATION_BASELINE_RED",
1466
1481
  "TEST_CONFIRMATION_CONFIRMED",
1482
+ "TEST_CONFIRMATION_NATIVE_UNVERIFIED",
1467
1483
  "TEST_CONFIRMATION_REFUTED",
1468
1484
  "TEST_CONFIRMATION_UNCONFIRMED",
1469
1485
  "TEST_CONFIRMATION_VALUES",
@@ -47,6 +47,7 @@ from typing import TYPE_CHECKING
47
47
 
48
48
  from coord.confirm_test import (
49
49
  TEST_CONFIRMATION_BASELINE_RED,
50
+ TEST_CONFIRMATION_NATIVE_UNVERIFIED,
50
51
  TEST_CONFIRMATION_UNCONFIRMED,
51
52
  )
52
53
  from coord.models import WORK_LIKE_TYPES, effective_issue_number
@@ -1065,6 +1066,13 @@ def format_gate_report(report: GateReport) -> str:
1065
1066
  suffix = " (UNCONFIRMED — suite never ran)"
1066
1067
  elif confirmation == TEST_CONFIRMATION_BASELINE_RED:
1067
1068
  suffix = " (baseline-red — branch not at fault, #2170)"
1069
+ elif confirmation == TEST_CONFIRMATION_NATIVE_UNVERIFIED:
1070
+ # #3455: this leg ran on a machine that declares only the
1071
+ # bare/build side of a required capability (e.g. a
1072
+ # WSL-hosted `windows` machine) — a plain "passed" here
1073
+ # would read exactly like a genuinely native-hardware
1074
+ # green, which this is not.
1075
+ suffix = " (NOT NATIVELY VERIFIED — #3455)"
1068
1076
  lines.append(
1069
1077
  " test : passed"
1070
1078
  + (f" (recorded on {test.assignment_id})" if test.assignment_id else "")
@@ -2358,12 +2358,114 @@ def _run_pass_confirmation(transition: Transition, entry: dict):
2358
2358
  record_inconclusive_confirmation(transition.repo_name, result.kind)
2359
2359
 
2360
2360
 
2361
- def _confirmed_pass_verdict(
2361
+ def _native_unverified_capabilities(transition: Transition, entry: dict) -> list[str]:
2362
+ """#3455: which of this smoke leg's required capabilities the machine
2363
+ that ran it declares only the bare/build side of, not the paired
2364
+ native-execution proof — recomputed HERE, independently of whatever the
2365
+ worker's own ``SMOKE:`` marker text says, so a claimed pass can be
2366
+ downgraded even when the worker never prints the caveat
2367
+ `coord.smoke.build_smoke_briefing` asks for (a purely advisory,
2368
+ worker-cooperation-dependent fix would leave that gap wide open — see
2369
+ the #3455 review).
2370
+
2371
+ Best-effort and fail-open, matching every other diagnostic in this
2372
+ module (`_run_pass_confirmation` et al.): a config load failure, an
2373
+ unknown repo/machine, or a PR/diff lookup failure returns ``[]`` — this
2374
+ must never turn "couldn't tell" into a false downgrade, and must never
2375
+ abandon the caller's verdict-recording transition over a network blip.
2376
+ """
2377
+ from coord.config import load as _load_config # noqa: PLC0415
2378
+ from coord.smoke import ( # noqa: PLC0415
2379
+ _fetch_touched_files,
2380
+ native_unverified_for_verdict,
2381
+ )
2382
+
2383
+ try:
2384
+ config = _load_config()
2385
+ except Exception as exc: # noqa: BLE001
2386
+ log.debug(
2387
+ "smoke %s: could not load config for the #3455 native-"
2388
+ "verification check (%s) — skipping it.",
2389
+ transition.assignment_id, exc,
2390
+ )
2391
+ return []
2392
+
2393
+ repo = config.repo(transition.repo_name)
2394
+ machine = next(
2395
+ (m for m in config.machines if m.name == transition.machine_name), None
2396
+ )
2397
+ if repo is None or machine is None:
2398
+ return []
2399
+
2400
+ branch = entry.get("branch")
2401
+ if not branch:
2402
+ return []
2403
+
2404
+ try:
2405
+ touched_files = _fetch_touched_files(repo.github, branch)
2406
+ except Exception as exc: # noqa: BLE001
2407
+ log.debug(
2408
+ "smoke %s: could not fetch touched files for the #3455 native-"
2409
+ "verification check (%s) — skipping it.",
2410
+ transition.assignment_id, exc,
2411
+ )
2412
+ return []
2413
+
2414
+ return native_unverified_for_verdict(
2415
+ repo=repo, machine=machine, smoke_cfg=config.smoke_tests,
2416
+ touched_files=touched_files,
2417
+ )
2418
+
2419
+
2420
+ def _downgrade_for_native_unverified(
2421
+ state: str,
2422
+ reason: str,
2423
+ confirmation: str,
2424
+ native_unverified: list[str] | None,
2425
+ ) -> tuple[str, str, str]:
2426
+ """#3455: a claimed pass on a leg whose machine declares only the bare
2427
+ (build/cross-compile) side of a required capability — never the paired
2428
+ native-execution proof (`coord.smoke.native_unverified_for_verdict`) —
2429
+ must not read as a plain confirmed/unconfirmed pass. This is what
2430
+ actually closes the loop the #3455 review found open: it fires
2431
+ regardless of what the worker's own ``SMOKE:`` marker text says, so a
2432
+ worker that never prints the caveat `coord.smoke.build_smoke_briefing`
2433
+ asks for still gets a genuinely distinct, machine-readable
2434
+ ``test_confirmation`` on the row.
2435
+
2436
+ Only applies to a ``state == "passed"`` result — a real ``failed``,
2437
+ the #2579 ``TEST_STATE_CONTESTED``, or a ``baseline_red`` skip already
2438
+ carry more urgent, more specific information and must never be
2439
+ overwritten by this.
2440
+ """
2441
+ if state != "passed" or not native_unverified:
2442
+ return state, reason, confirmation
2443
+ from coord.confirm_test import ( # noqa: PLC0415
2444
+ TEST_CONFIRMATION_NATIVE_UNVERIFIED,
2445
+ )
2446
+
2447
+ caps = ", ".join(native_unverified)
2448
+ return (
2449
+ state,
2450
+ f"{reason} — NOT NATIVELY VERIFIED for {caps} (#3455): this leg ran "
2451
+ "on a machine that declares the bare capability but not native "
2452
+ "execution for it, so a platform-conditional failure specific to "
2453
+ f"real {caps} hardware would not have shown up here.",
2454
+ TEST_CONFIRMATION_NATIVE_UNVERIFIED,
2455
+ )
2456
+
2457
+
2458
+ def _confirmed_pass_verdict_core(
2362
2459
  transition: Transition, entry: dict, parent_id: str, *, claim_reason: str,
2363
2460
  ) -> tuple[str, str, str]:
2364
2461
  """#2464: the ``(test_state, test_reason, test_confirmation)`` to record
2365
2462
  for a *claimed* pass.
2366
2463
 
2464
+ Callers should use the public :func:`_confirmed_pass_verdict` wrapper,
2465
+ not this directly — it additionally applies the #3455 native-
2466
+ verification downgrade (:func:`_downgrade_for_native_unverified`) this
2467
+ core function knows nothing about.
2468
+
2367
2469
  The Test stage's pass claim — whether it arrived as a ``SMOKE: pass``
2368
2470
  marker or as the worker calling ``coord test --passed`` on itself (#2217) —
2369
2471
  is a self-report by the thing being graded. This turns it into an
@@ -2544,6 +2646,38 @@ def _confirmed_pass_verdict(
2544
2646
  )
2545
2647
 
2546
2648
 
2649
+ def _confirmed_pass_verdict(
2650
+ transition: Transition,
2651
+ entry: dict,
2652
+ parent_id: str,
2653
+ *,
2654
+ claim_reason: str,
2655
+ native_unverified: list[str] | None = None,
2656
+ ) -> tuple[str, str, str]:
2657
+ """#2464/#3455: the ``(test_state, test_reason, test_confirmation)`` to
2658
+ record for a *claimed* pass — :func:`_confirmed_pass_verdict_core`'s
2659
+ out-of-band confirmation, with the #3455 native-verification downgrade
2660
+ (:func:`_downgrade_for_native_unverified`) applied on top.
2661
+
2662
+ *native_unverified* — non-empty means this leg's machine declares only
2663
+ the bare/build side of one or more of its required capabilities, not
2664
+ the paired native-execution proof (`coord.smoke.native_unverified_for_
2665
+ verdict`). This downgrade is unconditional on the worker's own
2666
+ ``SMOKE:`` marker text: it fires purely from the machine/capability
2667
+ facts, so a claimed pass this leg cannot actually back with native
2668
+ hardware never records as a plain ``confirmed``/``unconfirmed`` pass —
2669
+ see the #3455 review that made this the mandatory second half of the
2670
+ fix (the briefing-text caveat alone changes nothing this repo's own
2671
+ gates/merge-queue code ever reads back).
2672
+ """
2673
+ state, reason, confirmation = _confirmed_pass_verdict_core(
2674
+ transition, entry, parent_id, claim_reason=claim_reason,
2675
+ )
2676
+ return _downgrade_for_native_unverified(
2677
+ state, reason, confirmation, native_unverified,
2678
+ )
2679
+
2680
+
2547
2681
  def _mechanical_mute_verdict(
2548
2682
  transition: Transition, entry: dict, parent_id: str,
2549
2683
  ) -> tuple[str, str, str] | None:
@@ -2725,6 +2859,7 @@ def _record_smoke_verdict(
2725
2859
  state, reason, confirmation = _confirmed_pass_verdict(
2726
2860
  transition, entry, parent_id,
2727
2861
  claim_reason="worker self-recorded via `coord test` (#2217)",
2862
+ native_unverified=_native_unverified_capabilities(transition, entry),
2728
2863
  )
2729
2864
  record_test_verdict(
2730
2865
  assignment_id=parent_id,
@@ -2814,6 +2949,7 @@ def _record_smoke_verdict(
2814
2949
  state, reason, confirmation = _confirmed_pass_verdict(
2815
2950
  transition, entry, parent_id,
2816
2951
  claim_reason="headless smoke reported SMOKE: pass",
2952
+ native_unverified=_native_unverified_capabilities(transition, entry),
2817
2953
  )
2818
2954
  record_test_verdict(
2819
2955
  assignment_id=parent_id,
@@ -2842,7 +2978,9 @@ def _record_smoke_verdict(
2842
2978
  # away, with no leg spent and no tally incremented.
2843
2979
  mechanical = _mechanical_mute_verdict(transition, entry, parent_id)
2844
2980
  if mechanical is not None:
2845
- state, reason, confirmation = mechanical
2981
+ state, reason, confirmation = _downgrade_for_native_unverified(
2982
+ *mechanical, _native_unverified_capabilities(transition, entry),
2983
+ )
2846
2984
  record_test_verdict(
2847
2985
  assignment_id=parent_id,
2848
2986
  test_state=state,