code-coordinator 0.5.524__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.524 → code_coordinator-0.5.525}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/ci_fix.py +85 -1
  5. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/ci_github.py +97 -17
  6. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_ci_fix.py +179 -0
  7. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/.claude/commands/board.md +0 -0
  8. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/.claude/commands/complete-session.md +0 -0
  9. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/.claude/commands/coordinator.md +0 -0
  10. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/.githooks/_lib.sh +0 -0
  11. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/.githooks/post-checkout +0 -0
  12. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/.githooks/post-commit +0 -0
  13. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/.githooks/post-merge +0 -0
  14. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  15. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/.github/coord-ci-acceptance.yml +0 -0
  16. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/.github/workflows/auto-release.yml +0 -0
  17. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/.github/workflows/publish.yml +0 -0
  18. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/.github/workflows/test.yml +0 -0
  19. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/.gitignore +0 -0
  20. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/CLAUDE.md +0 -0
  21. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/GOAL.md +0 -0
  22. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/LICENSE +0 -0
  23. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/MANIFEST.in +0 -0
  24. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/README.md +0 -0
  25. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/code_coordinator.egg-info/SOURCES.txt +0 -0
  26. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/code_coordinator.egg-info/dependency_links.txt +0 -0
  27. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/code_coordinator.egg-info/entry_points.txt +0 -0
  28. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/code_coordinator.egg-info/requires.txt +0 -0
  29. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/code_coordinator.egg-info/scm_file_list.json +0 -0
  30. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/code_coordinator.egg-info/top_level.txt +0 -0
  31. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/__init__.py +0 -0
  32. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/_board_mapping.py +0 -0
  33. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/acceptance.py +0 -0
  34. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/acceptance_drivers.py +0 -0
  35. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/agent.py +0 -0
  36. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/agent_app.py +0 -0
  37. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/agent_update.py +0 -0
  38. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/agents/opencode/.gitignore +0 -0
  39. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/agents/opencode/agents/work.md +0 -0
  40. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/agents/opencode/routing.jsonc +0 -0
  41. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/approved_work.py +0 -0
  42. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/audit.py +0 -0
  43. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/auto_loop.py +0 -0
  44. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/backup.py +0 -0
  45. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/block_log.py +0 -0
  46. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/board_schema.py +0 -0
  47. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/board_service.py +0 -0
  48. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/board_wire.py +0 -0
  49. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/brain.py +0 -0
  50. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/branch_model.py +0 -0
  51. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/bug_intake.py +0 -0
  52. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/cargo_cache.py +0 -0
  53. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/ci_gitlab.py +0 -0
  54. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/ci_store.py +0 -0
  55. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/claim.py +0 -0
  56. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/claude_setup_token.py +0 -0
  57. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/cli.py +0 -0
  58. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/client.py +0 -0
  59. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/codegen.py +0 -0
  60. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/__init__.py +0 -0
  61. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/_common.py +0 -0
  62. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/acceptance.py +0 -0
  63. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/agent_ops.py +0 -0
  64. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/audit.py +0 -0
  65. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/backup.py +0 -0
  66. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/chat.py +0 -0
  67. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/ci.py +0 -0
  68. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/codegen.py +0 -0
  69. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/dispatch.py +0 -0
  70. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/dispatch_workers.py +0 -0
  71. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/dr.py +0 -0
  72. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/drive.py +0 -0
  73. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/drive_queue.py +0 -0
  74. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/gate_a.py +0 -0
  75. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/gates.py +0 -0
  76. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/issues.py +0 -0
  77. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/lifecycle.py +0 -0
  78. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/machine.py +0 -0
  79. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/merge.py +0 -0
  80. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/milestone.py +0 -0
  81. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/plan_followup.py +0 -0
  82. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/plans.py +0 -0
  83. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/portal.py +0 -0
  84. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/pr.py +0 -0
  85. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/release.py +0 -0
  86. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/repo.py +0 -0
  87. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/report.py +0 -0
  88. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/review.py +0 -0
  89. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/scorecard.py +0 -0
  90. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/sessions.py +0 -0
  91. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/setup.py +0 -0
  92. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/status.py +0 -0
  93. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/store_migrate.py +0 -0
  94. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/terminal.py +0 -0
  95. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/test_gate.py +0 -0
  96. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/commands/tui.py +0 -0
  97. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/comments.py +0 -0
  98. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/config.py +0 -0
  99. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/config_reload.py +0 -0
  100. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/confirm_test.py +0 -0
  101. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/conflict_fix.py +0 -0
  102. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/dao.py +0 -0
  103. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/dashboard/__init__.py +0 -0
  104. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/dashboard/fixture.py +0 -0
  105. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/dashboard/index.html +0 -0
  106. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/dashboard/server.py +0 -0
  107. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/dashboard/terminal.py +0 -0
  108. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/db.py +0 -0
  109. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/dead_end.py +0 -0
  110. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/decomposition_chat.py +0 -0
  111. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/README.md +0 -0
  112. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-agent.service +0 -0
  113. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-backup.service +0 -0
  114. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-backup.timer +0 -0
  115. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-db-backup.service +0 -0
  116. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-db-backup.sh +0 -0
  117. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-db-backup.timer +0 -0
  118. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-dr-verify.service +0 -0
  119. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-dr-verify.timer +0 -0
  120. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-drive-queue.service +0 -0
  121. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-drive-queue.timer +0 -0
  122. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-failure-notify.service +0 -0
  123. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-fleet-watchdog.service +0 -0
  124. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  125. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-notify.service +0 -0
  126. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-notify.timer +0 -0
  127. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-release-propagate.service +0 -0
  128. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-release-propagate.timer +0 -0
  129. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-release-window.service +0 -0
  130. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-release-window.timer +0 -0
  131. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-serve.service +0 -0
  132. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-web-dist-build.service +0 -0
  133. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-web-dist-build.timer +0 -0
  134. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy/coord-web.service +0 -0
  135. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy_manifest.py +0 -0
  136. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deploy_units.py +0 -0
  137. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deprecation_telemetry.py +0 -0
  138. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/deps.py +0 -0
  139. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/diagnose.py +0 -0
  140. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/dispatch.py +0 -0
  141. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/dispatch_liveness.py +0 -0
  142. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/dist_name.py +0 -0
  143. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/dr_promote.py +0 -0
  144. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/dr_verify.py +0 -0
  145. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/drive.py +0 -0
  146. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/drive_queue.py +0 -0
  147. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/drive_sessions_snapshot.py +0 -0
  148. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/drive_state.py +0 -0
  149. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/events.py +0 -0
  150. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/failure_class.py +0 -0
  151. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/failure_classifier.py +0 -0
  152. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/filelock.py +0 -0
  153. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/fleet_config_health.py +0 -0
  154. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/forge_availability.py +0 -0
  155. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/freshness.py +0 -0
  156. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/gate_a.py +0 -0
  157. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/gate_b.py +0 -0
  158. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/gate_snapshot.py +0 -0
  159. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/gates.py +0 -0
  160. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/gen_board_fixture.py +0 -0
  161. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/github_ops.py +0 -0
  162. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/github_throttle.py +0 -0
  163. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/goal.py +0 -0
  164. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/graph_health.py +0 -0
  165. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/__init__.py +0 -0
  166. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/aggregate.py +0 -0
  167. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/__init__.py +0 -0
  168. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/_ci_pin.py +0 -0
  169. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/agent_install.py +0 -0
  170. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/cargo_targets.py +0 -0
  171. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/claude_binary.py +0 -0
  172. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/config_drift.py +0 -0
  173. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  174. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/coord_web_ci_pin.py +0 -0
  175. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/deploy_lane_facts.py +0 -0
  176. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/disk.py +0 -0
  177. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/fleet_board.py +0 -0
  178. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  179. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/fleet_phantom.py +0 -0
  180. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/fleet_unit_drift.py +0 -0
  181. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/graph.py +0 -0
  182. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/graphify_cli.py +0 -0
  183. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/index_lock.py +0 -0
  184. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/issues_sync_staleness.py +0 -0
  185. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/local_machine_identity.py +0 -0
  186. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/plan_usage.py +0 -0
  187. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/pr_churn.py +0 -0
  188. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/release_cordon.py +0 -0
  189. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/repo_state.py +0 -0
  190. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/spawned_coord.py +0 -0
  191. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/stalled_pipeline.py +0 -0
  192. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/timer_active.py +0 -0
  193. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/toolchain.py +0 -0
  194. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/unit_drift.py +0 -0
  195. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/unit_enablement.py +0 -0
  196. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/wedged_drive_queue.py +0 -0
  197. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/checks/worktrees.py +0 -0
  198. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/cli.py +0 -0
  199. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/context.py +0 -0
  200. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/fleet_snapshot.py +0 -0
  201. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/models.py +0 -0
  202. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/pypi.py +0 -0
  203. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/registry.py +0 -0
  204. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/render.py +0 -0
  205. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/health/units.py +0 -0
  206. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/hooks.py +0 -0
  207. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/housekeeping.py +0 -0
  208. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/interactive.py +0 -0
  209. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/invariant_alarms.py +0 -0
  210. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/issue_store.py +0 -0
  211. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/issues_sync_status.py +0 -0
  212. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/liveness_auditor.py +0 -0
  213. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/machine_fault.py +0 -0
  214. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/machine_metrics.py +0 -0
  215. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/machine_onboard.py +0 -0
  216. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/machine_pause.py +0 -0
  217. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/machine_stats.py +0 -0
  218. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/merge_queue.py +0 -0
  219. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/milestone_chat.py +0 -0
  220. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/milestone_dispatch.py +0 -0
  221. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/milestone_gate.py +0 -0
  222. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/milestone_order.py +0 -0
  223. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/mock_author.py +0 -0
  224. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/models.py +0 -0
  225. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/network.py +0 -0
  226. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/new_issue_chat.py +0 -0
  227. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/notifier/__init__.py +0 -0
  228. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/notifier/baseline.py +0 -0
  229. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/notifier/cli.py +0 -0
  230. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/notifier/collect.py +0 -0
  231. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/notifier/digest.py +0 -0
  232. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/notifier/models.py +0 -0
  233. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/notifier/predicate.py +0 -0
  234. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/notifier/service.py +0 -0
  235. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/notifier/store.py +0 -0
  236. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/notifier/transport.py +0 -0
  237. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/notify.py +0 -0
  238. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/openapi.py +0 -0
  239. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/overlap_fence.py +0 -0
  240. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/overlap_predict.py +0 -0
  241. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/parentage.py +0 -0
  242. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/parentage_github.py +0 -0
  243. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/pipeline.py +0 -0
  244. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/plan_parser.py +0 -0
  245. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/plans.py +0 -0
  246. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/platform_paths.py +0 -0
  247. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/portal_bridge.py +0 -0
  248. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/portal_store.py +0 -0
  249. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/portal_sync.py +0 -0
  250. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/pr_body_lint.py +0 -0
  251. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/prereqs.py +0 -0
  252. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/progress.py +0 -0
  253. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/providers/__init__.py +0 -0
  254. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/providers/base.py +0 -0
  255. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/providers/claude.py +0 -0
  256. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/providers/claude_pty.py +0 -0
  257. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/providers/opencode.py +0 -0
  258. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/queue_diagnose.py +0 -0
  259. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/reconcile.py +0 -0
  260. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/reconcile_tick.py +0 -0
  261. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/refine_chat.py +0 -0
  262. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/release_cordon.py +0 -0
  263. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/release_propagate.py +0 -0
  264. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/release_verify.py +0 -0
  265. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/release_window.py +0 -0
  266. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/repo_dormancy.py +0 -0
  267. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/repo_edit.py +0 -0
  268. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/repo_onboard.py +0 -0
  269. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/reports.py +0 -0
  270. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/rest_schema.py +0 -0
  271. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/restart_cmd.py +0 -0
  272. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/revalidate.py +0 -0
  273. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/review.py +0 -0
  274. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/scorecard.py +0 -0
  275. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/self_health.py +0 -0
  276. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/serve_app.py +0 -0
  277. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  278. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  279. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  280. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  281. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  282. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/skills/portal-followup/SKILL.md +0 -0
  283. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/skills/release-now/SKILL.md +0 -0
  284. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  285. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  286. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/skills/update-issue/SKILL.md +0 -0
  287. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/smoke.py +0 -0
  288. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/spend_ceiling.py +0 -0
  289. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/split_work.py +0 -0
  290. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/sql.py +0 -0
  291. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/stage_projection.py +0 -0
  292. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/state.py +0 -0
  293. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/store_migrate.py +0 -0
  294. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/store_parity.py +0 -0
  295. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/templates/deploy-cloudflare.node.yml +0 -0
  296. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/test_author.py +0 -0
  297. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/test_chat.py +0 -0
  298. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/test_orchestrator.py +0 -0
  299. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/test_report.py +0 -0
  300. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/tui_release.py +0 -0
  301. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/uat_checks.py +0 -0
  302. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/usage.py +0 -0
  303. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/usage_limits.py +0 -0
  304. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/usage_rollup.py +0 -0
  305. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coord/worker_events.py +0 -0
  306. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/coordinator.example.yml +0 -0
  307. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-agent.service +0 -0
  308. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-backup.service +0 -0
  309. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-backup.timer +0 -0
  310. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-db-backup.service +0 -0
  311. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-db-backup.sh +0 -0
  312. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-db-backup.timer +0 -0
  313. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-dr-verify.service +0 -0
  314. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-dr-verify.timer +0 -0
  315. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-drive-queue.service +0 -0
  316. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-drive-queue.timer +0 -0
  317. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-failure-notify.service +0 -0
  318. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-failure-notify.sh +0 -0
  319. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-fleet-watchdog.service +0 -0
  320. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-fleet-watchdog.timer +0 -0
  321. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-notify.service +0 -0
  322. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-notify.timer +0 -0
  323. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-release-propagate.service +0 -0
  324. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-release-propagate.timer +0 -0
  325. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-release-window.service +0 -0
  326. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-release-window.timer +0 -0
  327. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-serve.service +0 -0
  328. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-web-dist-build.service +0 -0
  329. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-web-dist-build.sh +0 -0
  330. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-web-dist-build.timer +0 -0
  331. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-web-rollback.sh +0 -0
  332. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/coord-web.service +0 -0
  333. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/deploy/node-shim.sh +0 -0
  334. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/ADR_COORD_TUI_CI.md +0 -0
  335. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  336. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/ADR_COORD_WEB_CI.md +0 -0
  337. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/ADR_COORD_WEB_DIST.md +0 -0
  338. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  339. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/AGENT_OPERATIONS.md +0 -0
  340. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/ARCHITECTURE.md +0 -0
  341. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/ARCH_SECURITY_GATES.md +0 -0
  342. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/COCKPIT.md +0 -0
  343. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/CONTROL_CENTER.md +0 -0
  344. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/COST_DISCIPLINE.md +0 -0
  345. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/CROSS_PLATFORM.md +0 -0
  346. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/CUSTOMER_FACING_APPS.md +0 -0
  347. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/CUSTOMER_PORTAL.md +0 -0
  348. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/DATA_STORE_SELECTION.md +0 -0
  349. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/DISASTER_RECOVERY.md +0 -0
  350. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/DRIVE_QUEUE.md +0 -0
  351. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/EPHEMERAL_WORKERS.md +0 -0
  352. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/FORGE_MIGRATION.md +0 -0
  353. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/GRAPHIFY_SETUP.md +0 -0
  354. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/ISSUE_GUIDANCE.md +0 -0
  355. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/MAC_MINI.md +0 -0
  356. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  357. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/NOTIFIER.md +0 -0
  358. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/OPENCODE_VERIFICATION.md +0 -0
  359. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/OPERATING_GOTCHAS.md +0 -0
  360. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/OPERATOR_GUIDES.md +0 -0
  361. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/ORACLE_LOOP.md +0 -0
  362. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/PHONE_WEBAPP.md +0 -0
  363. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/PIPELINE_V2.md +0 -0
  364. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/PLATFORM_EVOLUTION.md +0 -0
  365. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/SECOND_BACKEND.md +0 -0
  366. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/STORE_SERVICE.md +0 -0
  367. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  368. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/WEB_CONTROL_CENTER.md +0 -0
  369. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/WSL_WINDOWS_WORKER.md +0 -0
  370. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/mocks/web/README.md +0 -0
  371. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/mocks/web/_tokens.css +0 -0
  372. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/mocks/web/issue-detail.html +0 -0
  373. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/mocks/web/pipeline-narrow.html +0 -0
  374. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/docs/mocks/web/pipeline-wide.html +0 -0
  375. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/graphify-out/.gitignore +0 -0
  376. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/install-agent.sh +0 -0
  377. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/pyproject.toml +0 -0
  378. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/audit_review_verdict_overrides.py +0 -0
  379. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  380. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/azure-workers/build-worker-image.sh +0 -0
  381. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/azure-workers/coordinator-machine.py +0 -0
  382. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/azure-workers/dr-down.sh +0 -0
  383. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/azure-workers/dr-up.sh +0 -0
  384. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/azure-workers/epic-down.sh +0 -0
  385. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/azure-workers/epic-up.sh +0 -0
  386. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/azure-workers/preflight.sh +0 -0
  387. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/azure-workers/provision-server.sh +0 -0
  388. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/azure-workers/provision-worker.sh +0 -0
  389. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  390. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  391. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/azure-workers/throwaway-vm.sh +0 -0
  392. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/azure-workers/verify-github-token.sh +0 -0
  393. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/check_gh_argv_containment.py +0 -0
  394. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/codegen.py +0 -0
  395. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/coord-test-runner.sh +0 -0
  396. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  397. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  398. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  399. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  400. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/coord-venv-rollback.sh +0 -0
  401. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/drive-batch.sh +0 -0
  402. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/extract-coord-tui.sh +0 -0
  403. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/fleet_watchdog.py +0 -0
  404. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/gen_board_fixture.py +0 -0
  405. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/gen_mock_index.py +0 -0
  406. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/lib/provision-core.sh +0 -0
  407. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/next_release_tag.py +0 -0
  408. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/provision-machine.sh +0 -0
  409. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/run_tests_in_populated_home.sh +0 -0
  410. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/run_tests_without_gh.sh +0 -0
  411. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/setup-macmini.sh +0 -0
  412. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/smoke_437_interactive.py +0 -0
  413. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/verify-provision-noble.sh +0 -0
  414. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/verify_878_review_capture.py +0 -0
  415. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/verify_release_published.py +0 -0
  416. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/scripts/verify_release_wheel.py +0 -0
  417. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/setup.cfg +0 -0
  418. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/SMOKE_SET.md +0 -0
  419. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/__init__.py +0 -0
  420. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/acceptance/ms-37/conftest.py +0 -0
  421. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/acceptance/ms-37/contract.md +0 -0
  422. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/acceptance/ms-37/manifest.yml +0 -0
  423. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  424. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  425. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/acceptance/ms-51/contract.md +0 -0
  426. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  427. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  428. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/acceptance/ms-51/manifest.yml +0 -0
  429. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  430. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/acceptance/ms-51/tsconfig.json +0 -0
  431. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  432. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/backends.py +0 -0
  433. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/conftest.py +0 -0
  434. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/board-pipeline-basic.json +0 -0
  435. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  436. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  437. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  438. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  439. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/playwright/all_pass.json +0 -0
  440. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  441. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/playwright/mixed_fail.json +0 -0
  442. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  443. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  444. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/playwright/skip.json +0 -0
  445. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/playwright/truncated.json +0 -0
  446. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  447. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  448. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  449. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  450. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  451. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  452. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  453. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  454. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_acceptance.py +0 -0
  455. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_acceptance_drivers.py +0 -0
  456. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent.py +0 -0
  457. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_api_error.py +0 -0
  458. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_app.py +0 -0
  459. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_branch_base.py +0 -0
  460. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_branch_capture.py +0 -0
  461. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_config_free_1712.py +0 -0
  462. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_deploy_units_endpoint.py +0 -0
  463. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_dirty_worktree.py +0 -0
  464. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  465. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_graph_self_heal.py +0 -0
  466. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_health_h3.py +0 -0
  467. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_idle_restart.py +0 -0
  468. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_push_failure.py +0 -0
  469. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_reap.py +0 -0
  470. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_repos_and_pull.py +0 -0
  471. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_restart_services_endpoint.py +0 -0
  472. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_skills_self_heal.py +0 -0
  473. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_startup_diagnostics.py +0 -0
  474. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_update.py +0 -0
  475. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_update_bluegreen.py +0 -0
  476. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_usage_limit.py +0 -0
  477. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_agent_zero_commit.py +0 -0
  478. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_ambient_home_isolation.py +0 -0
  479. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_approve_capability_reroute_3241.py +0 -0
  480. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_approve_dependency_busy_2804.py +0 -0
  481. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_approve_reject_plan.py +0 -0
  482. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_approve_usage_gate.py +0 -0
  483. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_approved_work_2532.py +0 -0
  484. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_approved_work_2996.py +0 -0
  485. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_assignment_already_recorded_daemon.py +0 -0
  486. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_audit_log.py +0 -0
  487. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_audit_outcome.py +0 -0
  488. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_audit_query.py +0 -0
  489. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_auto_loop.py +0 -0
  490. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_auto_release_publish_2035.py +0 -0
  491. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_backend_selection.py +0 -0
  492. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_backup.py +0 -0
  493. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_base_checkout_restore.py +0 -0
  494. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_block_log.py +0 -0
  495. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_board_cap_762.py +0 -0
  496. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_board_fixture.py +0 -0
  497. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_board_read_path.py +0 -0
  498. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_board_schema.py +0 -0
  499. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_board_service.py +0 -0
  500. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_board_state.py +0 -0
  501. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_board_wire.py +0 -0
  502. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_brain.py +0 -0
  503. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_branch_model.py +0 -0
  504. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_bug_intake.py +0 -0
  505. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_build_worker_image_env_update.py +0 -0
  506. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cargo_cache.py +0 -0
  507. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_check_gh_argv_containment.py +0 -0
  508. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_ci_acceptance_gate_1950.py +0 -0
  509. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_ci_github.py +0 -0
  510. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_ci_gitlab.py +0 -0
  511. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_ci_parity_2091.py +0 -0
  512. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_ci_store.py +0 -0
  513. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_claim.py +0 -0
  514. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_claude_md_budget.py +0 -0
  515. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_claude_setup_token.py +0 -0
  516. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_acceptance.py +0 -0
  517. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_assign.py +0 -0
  518. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  519. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_assign_interactive_remote.py +0 -0
  520. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_assign_provider.py +0 -0
  521. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  522. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_audit.py +0 -0
  523. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_chat_continue.py +0 -0
  524. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_ci.py +0 -0
  525. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_codegen.py +0 -0
  526. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_decide.py +0 -0
  527. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_diagnose_capability_rules.py +0 -0
  528. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_diagnose_config_provenance.py +0 -0
  529. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_diagnose_forge_availability.py +0 -0
  530. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_diagnose_graph.py +0 -0
  531. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_diagnose_self.py +0 -0
  532. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_diagnose_test_coverage.py +0 -0
  533. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_doctor.py +0 -0
  534. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_doctor_config_free_1801.py +0 -0
  535. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  536. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  537. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_drive.py +0 -0
  538. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_drive_queue.py +0 -0
  539. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_escalate.py +0 -0
  540. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_fix_headless_review.py +0 -0
  541. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_gate_a.py +0 -0
  542. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_install_drift.py +0 -0
  543. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_install_skills.py +0 -0
  544. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_issue_comment.py +0 -0
  545. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_issue_create_label.py +0 -0
  546. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_issue_reopen.py +0 -0
  547. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_issue_view_list.py +0 -0
  548. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_issues.py +0 -0
  549. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_merge.py +0 -0
  550. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_milestone_assign.py +0 -0
  551. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_milestone_capture.py +0 -0
  552. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_milestone_chat_add_child.py +0 -0
  553. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_milestone_dispatch.py +0 -0
  554. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_milestone_gate_b.py +0 -0
  555. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_milestone_gate_c.py +0 -0
  556. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_milestone_order.py +0 -0
  557. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  558. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_milestone_ship.py +0 -0
  559. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_network.py +0 -0
  560. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_new_issue_chat.py +0 -0
  561. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_plans.py +0 -0
  562. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_portal.py +0 -0
  563. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_pr.py +0 -0
  564. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_pull_artifact.py +0 -0
  565. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_queue.py +0 -0
  566. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_reattach_sessions.py +0 -0
  567. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_refine_board.py +0 -0
  568. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_release_preflight.py +0 -0
  569. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_release_propagate.py +0 -0
  570. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_release_window.py +0 -0
  571. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_repo_2220.py +0 -0
  572. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  573. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_scorecard.py +0 -0
  574. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_serve_store_backend_3084.py +0 -0
  575. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_set_review_findings.py +0 -0
  576. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_status_advisory_terminal.py +0 -0
  577. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_status_contested_tag.py +0 -0
  578. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_status_invariant_alarms.py +0 -0
  579. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_status_machine_fault.py +0 -0
  580. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_status_merge_queue.py +0 -0
  581. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_status_provider.py +0 -0
  582. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_status_retried_3340.py +0 -0
  583. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_status_review_finalizing.py +0 -0
  584. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_status_supervisor_3366.py +0 -0
  585. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_status_test_failed_tag.py +0 -0
  586. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_status_usage_limit.py +0 -0
  587. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_sync_comments_873.py +0 -0
  588. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_test_plan.py +0 -0
  589. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_track.py +0 -0
  590. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_tui_update.py +0 -0
  591. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cli_wait.py +0 -0
  592. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_client.py +0 -0
  593. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_client_base_install.py +0 -0
  594. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_client_config_cache_atomic_3052.py +0 -0
  595. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_client_resource_migration_1946.py +0 -0
  596. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_commands_common.py +0 -0
  597. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_comments.py +0 -0
  598. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_completion_summary.py +0 -0
  599. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_config.py +0 -0
  600. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_config_acceptance.py +0 -0
  601. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_config_audit.py +0 -0
  602. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_config_drift_check.py +0 -0
  603. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_config_effective.py +0 -0
  604. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_config_pricing.py +0 -0
  605. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  606. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_config_usage_gate.py +0 -0
  607. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_confirm_test.py +0 -0
  608. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_conflict_fix.py +0 -0
  609. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_conflict_fix_semantic.py +0 -0
  610. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  611. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_coord_test.py +0 -0
  612. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  613. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_coord_test_runner_baseline.py +0 -0
  614. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_coord_test_runner_populated_home.py +0 -0
  615. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_coord_test_runner_routing.py +0 -0
  616. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_coord_test_runner_toolchain.py +0 -0
  617. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_coord_uat.py +0 -0
  618. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_coord_web_sse_restart_live.py +0 -0
  619. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_coordinator_machine.py +0 -0
  620. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_cross_platform_imports.py +0 -0
  621. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dao.py +0 -0
  622. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dashboard.py +0 -0
  623. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dashboard_api.py +0 -0
  624. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dashboard_fixture.py +0 -0
  625. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dashboard_server.py +0 -0
  626. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dashboard_terminal.py +0 -0
  627. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dashboard_terminal_live.py +0 -0
  628. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_db.py +0 -0
  629. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dead_end.py +0 -0
  630. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_decomposition_chat.py +0 -0
  631. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_deploy_coord_db_backup.py +0 -0
  632. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_deploy_coord_web_dist.py +0 -0
  633. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_deploy_coord_web_rollback.py +0 -0
  634. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_deploy_db_backup_unit.py +0 -0
  635. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_deploy_drive_queue_unit.py +0 -0
  636. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_deploy_failure_notify_unit.py +0 -0
  637. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_deploy_manifest.py +0 -0
  638. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_deploy_notify_unit.py +0 -0
  639. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_deploy_units_lane.py +0 -0
  640. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_deploy_web_unit.py +0 -0
  641. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_deprecation_telemetry.py +0 -0
  642. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_deps.py +0 -0
  643. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_diagnose.py +0 -0
  644. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dispatch.py +0 -0
  645. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dispatch_liveness.py +0 -0
  646. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dispatch_target_validation.py +0 -0
  647. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dispatch_workers.py +0 -0
  648. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dist_name.py +0 -0
  649. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_done_housekeeping.py +0 -0
  650. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dr_azure_scripts.py +0 -0
  651. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dr_promote.py +0 -0
  652. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_dr_verify.py +0 -0
  653. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_drive.py +0 -0
  654. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_drive_machine_fault.py +0 -0
  655. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_drive_queue.py +0 -0
  656. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_drive_queue_blocked_rendering.py +0 -0
  657. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_drive_queue_launch_argv.py +0 -0
  658. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_drive_queue_max_parallel_config.py +0 -0
  659. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  660. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_drive_queue_roll_pending.py +0 -0
  661. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  662. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_drive_sessions_snapshot.py +0 -0
  663. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_drive_state.py +0 -0
  664. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_drive_tmux.py +0 -0
  665. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_epic_up_capability_detection.py +0 -0
  666. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  667. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_epic_up_image_provenance.py +0 -0
  668. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_errors.py +0 -0
  669. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_events.py +0 -0
  670. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_failure_class.py +0 -0
  671. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_failure_classifier.py +0 -0
  672. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_filelock.py +0 -0
  673. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  674. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_fix_escalation_classifier.py +0 -0
  675. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_fix_of_force_override.py +0 -0
  676. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_fleet_config_health.py +0 -0
  677. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_fleet_health_probes.py +0 -0
  678. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_fleet_health_snapshot.py +0 -0
  679. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_fleet_watchdog.py +0 -0
  680. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_forge_availability.py +0 -0
  681. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_freshness.py +0 -0
  682. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_gate_a.py +0 -0
  683. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_gate_b.py +0 -0
  684. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_gate_snapshot_staleness.py +0 -0
  685. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_gates.py +0 -0
  686. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  687. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_gen_mock_index.py +0 -0
  688. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_generated_rust_fixture.py +0 -0
  689. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_generated_rust_requests.py +0 -0
  690. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_generated_types_fixture.py +0 -0
  691. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_github_ops.py +0 -0
  692. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_github_throttle.py +0 -0
  693. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_goal.py +0 -0
  694. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_graph_health.py +0 -0
  695. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_graph_selfheal_absent_2237.py +0 -0
  696. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_handoff.py +0 -0
  697. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_checks.py +0 -0
  698. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_cli.py +0 -0
  699. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_cli_graph.py +0 -0
  700. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_config.py +0 -0
  701. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_context.py +0 -0
  702. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_coord_tui_ci_pin.py +0 -0
  703. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_coord_web_ci_pin.py +0 -0
  704. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_deploy_lane_facts.py +0 -0
  705. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_fix.py +0 -0
  706. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_incident_regression.py +0 -0
  707. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_issues_sync_staleness.py +0 -0
  708. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_pr_churn.py +0 -0
  709. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_pypi.py +0 -0
  710. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_registry.py +0 -0
  711. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_release_cordon_probe.py +0 -0
  712. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_timer_active.py +0 -0
  713. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_toolchain.py +0 -0
  714. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_unit_drift.py +0 -0
  715. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_unit_enablement.py +0 -0
  716. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_health_wedged_drive_queue.py +0 -0
  717. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_hooks.py +0 -0
  718. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_housekeeping.py +0 -0
  719. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_human_attended_437.py +0 -0
  720. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_init.py +0 -0
  721. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_install_agent_venv_2911.py +0 -0
  722. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_integration.py +0 -0
  723. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_interactive.py +0 -0
  724. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_interactive_briefing_echo.py +0 -0
  725. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_interactive_pane_log_2541.py +0 -0
  726. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_interactive_prefill_state.py +0 -0
  727. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_interactive_session_relaunch.py +0 -0
  728. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_interactive_test_verdict_backstop.py +0 -0
  729. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_interactive_token_attribution.py +0 -0
  730. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_interactive_worktree.py +0 -0
  731. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_invariant_alarms.py +0 -0
  732. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_issue_store_seam.py +0 -0
  733. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_issues_sync_status.py +0 -0
  734. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_liveness_auditor.py +0 -0
  735. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_liveness_notify.py +0 -0
  736. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_lock_contention_ratchet.py +0 -0
  737. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_machine_fault.py +0 -0
  738. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_machine_metrics.py +0 -0
  739. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_machine_onboard.py +0 -0
  740. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_machine_pause.py +0 -0
  741. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_machine_stats.py +0 -0
  742. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_merge_queue.py +0 -0
  743. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_merge_verify.py +0 -0
  744. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_milestone_chat.py +0 -0
  745. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_milestone_dispatch.py +0 -0
  746. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_milestone_gate.py +0 -0
  747. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_milestone_order.py +0 -0
  748. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_milestone_seam.py +0 -0
  749. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_mock_author.py +0 -0
  750. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_model_tiering.py +0 -0
  751. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_models.py +0 -0
  752. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_models_config_labels.py +0 -0
  753. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_needs_attention.py +0 -0
  754. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_network.py +0 -0
  755. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_new_issue_chat.py +0 -0
  756. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_next_release_tag.py +0 -0
  757. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_node_shim.py +0 -0
  758. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_notifier_baseline.py +0 -0
  759. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_notifier_cli.py +0 -0
  760. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_notifier_collect.py +0 -0
  761. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_notifier_config.py +0 -0
  762. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_notifier_drive_seam.py +0 -0
  763. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_notifier_isolation.py +0 -0
  764. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_notifier_predicate.py +0 -0
  765. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_notifier_quiet_hours.py +0 -0
  766. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_notifier_service.py +0 -0
  767. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_notify.py +0 -0
  768. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_notify_drain.py +0 -0
  769. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_openapi.py +0 -0
  770. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_operational_defaults.py +0 -0
  771. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_overlap_fence.py +0 -0
  772. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_overlap_predict.py +0 -0
  773. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_packaged_deploy_units.py +0 -0
  774. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_parentage.py +0 -0
  775. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_paste_landed.py +0 -0
  776. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  777. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_pipeline.py +0 -0
  778. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_plan_followup_approve_plan_command.py +0 -0
  779. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_plan_followup_pr_command.py +0 -0
  780. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_plan_followup_review_command.py +0 -0
  781. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_plan_only.py +0 -0
  782. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_plan_parser.py +0 -0
  783. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_platform_paths.py +0 -0
  784. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_portal_bridge.py +0 -0
  785. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_portal_config.py +0 -0
  786. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_portal_store.py +0 -0
  787. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_portal_sync.py +0 -0
  788. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_pr_body_lint.py +0 -0
  789. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_prereqs.py +0 -0
  790. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_production_db_guard.py +0 -0
  791. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_progress.py +0 -0
  792. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_provider_seam.py +0 -0
  793. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_providers.py +0 -0
  794. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_providers_config_labels.py +0 -0
  795. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_providers_pty.py +0 -0
  796. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_provision_core.py +0 -0
  797. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_provision_machine.py +0 -0
  798. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_py_rust_mirror_inventory.py +0 -0
  799. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_quiet_hours.py +0 -0
  800. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_quiet_hours_store_2146.py +0 -0
  801. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_reap_merged_sessions.py +0 -0
  802. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_reap_stale_interactive_tick.py +0 -0
  803. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_reconcile.py +0 -0
  804. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_reconcile_branch.py +0 -0
  805. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_reconcile_completions.py +0 -0
  806. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  807. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_reconcile_merges.py +0 -0
  808. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_reconcile_no_agent_record.py +0 -0
  809. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_reconcile_tick.py +0 -0
  810. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_reconcile_usage_limit_done.py +0 -0
  811. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_refine_chat.py +0 -0
  812. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_release_cordon_2101.py +0 -0
  813. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  814. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_release_cordon_deadlock_2240.py +0 -0
  815. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  816. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_release_cordon_stuck_2490.py +0 -0
  817. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_release_propagate.py +0 -0
  818. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_release_propagate_threshold.py +0 -0
  819. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_release_roll_between_legs_2854.py +0 -0
  820. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_release_roll_window_handoff.py +0 -0
  821. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_release_unified_1242.py +0 -0
  822. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_release_verify.py +0 -0
  823. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_release_window.py +0 -0
  824. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_remote_auto_prune.py +0 -0
  825. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_remote_interactive_reaper.py +0 -0
  826. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_repo_add.py +0 -0
  827. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_repo_dormancy.py +0 -0
  828. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_repo_edit_2220.py +0 -0
  829. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_repo_graph_fleet_2237.py +0 -0
  830. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_repo_max_parallel_3423.py +0 -0
  831. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_repo_onboard_2220.py +0 -0
  832. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_report_result_push.py +0 -0
  833. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_reports.py +0 -0
  834. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_restart_cmd.py +0 -0
  835. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_retry.py +0 -0
  836. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_retry_advisory_1606.py +0 -0
  837. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_retry_escalation_classify_3360.py +0 -0
  838. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_retry_type_1636.py +0 -0
  839. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_revalidate.py +0 -0
  840. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_review.py +0 -0
  841. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_review_end_review_without_verdict.py +0 -0
  842. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_review_parse_failure_diagnostic.py +0 -0
  843. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_review_reaffirm.py +0 -0
  844. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_review_state.py +0 -0
  845. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_review_verdict_backstop.py +0 -0
  846. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_review_verdict_override_audit.py +0 -0
  847. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_review_verdict_relay.py +0 -0
  848. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_review_zero_commits.py +0 -0
  849. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_scoped_review_wiring.py +0 -0
  850. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_scorecard.py +0 -0
  851. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_self_health.py +0 -0
  852. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_serve.py +0 -0
  853. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_serve_app.py +0 -0
  854. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_serve_app_board_trim.py +0 -0
  855. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_serve_rest_routes.py +0 -0
  856. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_session.py +0 -0
  857. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_slice_issue_attribution.py +0 -0
  858. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_smoke.py +0 -0
  859. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  860. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_smoke_live_checkout_restore.py +0 -0
  861. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_smoke_workflow.py +0 -0
  862. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_spend_ceiling.py +0 -0
  863. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_spend_ceiling_coordinator.py +0 -0
  864. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_split.py +0 -0
  865. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_split_work.py +0 -0
  866. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_sql_dialect.py +0 -0
  867. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_sqlite_connect_ratchet.py +0 -0
  868. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_stage_projection.py +0 -0
  869. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_stale_busy_reviewer_697.py +0 -0
  870. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_stalled_pipeline.py +0 -0
  871. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_state.py +0 -0
  872. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_state_review_findings_daemon.py +0 -0
  873. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_status_fleet_footer.py +0 -0
  874. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_stop_1567.py +0 -0
  875. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_store_contract.py +0 -0
  876. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_store_migrate.py +0 -0
  877. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_stuck.py +0 -0
  878. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  879. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_terminal_command.py +0 -0
  880. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_test_author.py +0 -0
  881. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_test_chat.py +0 -0
  882. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_test_orchestrator.py +0 -0
  883. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_test_report.py +0 -0
  884. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_test_verdict_parsing.py +0 -0
  885. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_test_verdict_transcript_floor.py +0 -0
  886. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_text_io_encoding_audit.py +0 -0
  887. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_thin_client_board_audit.py +0 -0
  888. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_thin_client_config_load_1080.py +0 -0
  889. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_thin_client_daemon_routing_906.py +0 -0
  890. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_throwaway_vm.py +0 -0
  891. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_tmux_host.py +0 -0
  892. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_tmux_session.py +0 -0
  893. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_transcript_floor.py +0 -0
  894. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_uat_checks.py +0 -0
  895. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_usage.py +0 -0
  896. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_usage_limits.py +0 -0
  897. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_usage_rollup.py +0 -0
  898. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_venv_live_install_2121.py +0 -0
  899. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_version_single_source.py +0 -0
  900. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_watch.py +0 -0
  901. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  902. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_worker_env_venv_isolation.py +0 -0
  903. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_worker_events.py +0 -0
  904. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_worker_image_pin_sync.py +0 -0
  905. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_worker_safety.py +0 -0
  906. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_worker_test_scoping.py +0 -0
  907. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_worktree.py +0 -0
  908. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  909. {code_coordinator-0.5.524 → code_coordinator-0.5.525}/tests/test_write_parity.py +0 -0
  910. {code_coordinator-0.5.524 → 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.524
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.524
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.524",
2
+ "tag": "0.5.525",
3
3
  "distance": 0,
4
- "node": "g0e924a9e07fea9e3ea943a45cd49b370575ca40c",
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
 
@@ -25,6 +25,7 @@ from coord.ci_fix import (
25
25
  dispatch_was_noop,
26
26
  refund_noop_ci_fix,
27
27
  )
28
+ from coord.ci_github import _extract_relevant_log_lines
28
29
  from coord.ci_store import CheckRun, CIFailureDetail, JobRun, JobStep
29
30
  from coord.config import Config, ReviewsConfig
30
31
  from coord.merge_queue import HUMAN_REQUIRED, PENDING, MergeEvent, QueuedMerge
@@ -247,6 +248,114 @@ class TestBuildBriefingWithDetail:
247
248
  assert "no diagnostic lines matched" in briefing.lower()
248
249
 
249
250
 
251
+ class TestBuildBriefingWithIssueBody:
252
+ """#3456: the CI-fix briefing must carry the issue body — the only way
253
+ an operator's diagnosis (recorded on the issue after reading the real
254
+ CI logs by hand) ever reaches a ci-fix worker, since workers can't run
255
+ `gh` themselves to read it any other way."""
256
+
257
+ def test_no_issue_body_is_byte_identical_to_pre_3456(self) -> None:
258
+ """`issue_body=None` (the default) must not change the briefing at
259
+ all — every pre-#3456 caller (and every un-updated call site) keeps
260
+ getting exactly what it always got."""
261
+ without_kw = build_ci_fix_briefing(
262
+ entry=_entry(), checks_summary="x", attempt=1,
263
+ )
264
+ with_explicit_none = build_ci_fix_briefing(
265
+ entry=_entry(), checks_summary="x", attempt=1, issue_body=None,
266
+ )
267
+ assert without_kw == with_explicit_none
268
+
269
+ def test_blank_issue_body_adds_no_section(self) -> None:
270
+ briefing = build_ci_fix_briefing(
271
+ entry=_entry(), checks_summary="x", attempt=1, issue_body=" ",
272
+ )
273
+ assert "## Issue body" not in briefing
274
+
275
+ def test_issue_body_appears_in_briefing(self) -> None:
276
+ briefing = build_ci_fix_briefing(
277
+ entry=_entry(), checks_summary="x", attempt=1,
278
+ issue_body="## Root cause\n\nDirectWrite word-wrap/clip bug in "
279
+ "dialog.rs — see panic at dialog.rs:236:9.",
280
+ )
281
+ assert "## Issue body" in briefing
282
+ assert "DirectWrite word-wrap/clip bug" in briefing
283
+ assert "dialog.rs:236:9" in briefing
284
+
285
+ def test_long_issue_body_is_truncated_keeping_the_tail(self) -> None:
286
+ """Operator diagnosis is appended to the BOTTOM of the issue body
287
+ after the original description — truncation must keep the tail so
288
+ that diagnosis survives, even if the (often title-redundant)
289
+ original description at the top gets cut."""
290
+ from coord.ci_fix import ISSUE_BODY_MAX_CHARS
291
+
292
+ original = "x" * (ISSUE_BODY_MAX_CHARS + 500)
293
+ diagnosis = "\n\n## Root cause\n\nThe actual bug is a DirectWrite clip issue."
294
+ body = original + diagnosis
295
+
296
+ briefing = build_ci_fix_briefing(
297
+ entry=_entry(), checks_summary="x", attempt=1, issue_body=body,
298
+ )
299
+ assert "The actual bug is a DirectWrite clip issue." in briefing
300
+ assert "truncated" in briefing.lower()
301
+
302
+ def test_short_issue_body_is_not_marked_truncated(self) -> None:
303
+ briefing = build_ci_fix_briefing(
304
+ entry=_entry(), checks_summary="x", attempt=1, issue_body="short body",
305
+ )
306
+ assert "## Issue body" in briefing
307
+ assert "truncated to the last" not in briefing.lower()
308
+
309
+
310
+ class TestDispatchCiFixFetchesIssueBody:
311
+ """#3456: `dispatch_ci_fix` fetches the issue body itself (best-effort)
312
+ and threads it into the briefing — a worker has no other path to an
313
+ operator's diagnosis recorded on the issue."""
314
+
315
+ def test_fetched_issue_body_lands_in_the_dispatched_briefing(
316
+ self, two_machine_config: Config, coord_db,
317
+ ) -> None:
318
+ board = Board()
319
+ board.completed.append(_work_assignment())
320
+ client = _FakeHTTPClient({"id": "ci-fix-body"})
321
+
322
+ with patch(
323
+ "coord.ci_fix.github_ops.get_issue",
324
+ return_value={"body": "## Root cause\n\nDirectWrite clip bug."},
325
+ ) as get_issue:
326
+ dispatch_ci_fix(
327
+ _entry(), board, two_machine_config,
328
+ checks_summary="acceptance (failure)", http_client=client,
329
+ )
330
+
331
+ get_issue.assert_called_once_with("acme/api", 1)
332
+ _, payload = client.calls[0]
333
+ assert "DirectWrite clip bug" in payload["briefing"]
334
+
335
+ def test_issue_fetch_failure_is_fail_soft(
336
+ self, two_machine_config: Config, coord_db,
337
+ ) -> None:
338
+ """A failed issue-body fetch (rate-limited, `gh` unreachable, ...)
339
+ must never block the dispatch — same posture as the #3114 detail
340
+ fetch."""
341
+ board = Board()
342
+ board.completed.append(_work_assignment())
343
+ client = _FakeHTTPClient({"id": "ci-fix-body-fail"})
344
+
345
+ with patch(
346
+ "coord.ci_fix.github_ops.get_issue",
347
+ side_effect=RuntimeError("gh throttled"),
348
+ ):
349
+ result = dispatch_ci_fix(
350
+ _entry(), board, two_machine_config,
351
+ checks_summary="acceptance (failure)", http_client=client,
352
+ )
353
+
354
+ assert result is not None
355
+ _, payload = client.calls[0]
356
+ assert "## Issue body" not in payload["briefing"]
357
+
358
+
250
359
  # ── #3011: no-op leg detection/refund ────────────────────────────────────────
251
360
 
252
361
 
@@ -975,3 +1084,73 @@ class TestDispatchCiFixesWithCiStore:
975
1084
  )
976
1085
  second_detail = dispatch.call_args.kwargs["detail"]
977
1086
  assert second_detail == first_detail
1087
+
1088
+
1089
+ # ── #3456: excerpt selection prefers the failing rust test over the ─────────
1090
+ # ── generic "exit code" wrapper line ─────────────────────────────────────────
1091
+
1092
+
1093
+ class TestExcerptPrefersFailingRustTestOverExitCode:
1094
+ """quadraui#1077: both ci-fix legs were briefed with nothing but
1095
+ `##[error]Process completed with exit code 1.` — the least useful line
1096
+ in the log — instead of the failing test name and panic message
1097
+ (`panicked at ... dialog.rs:236:9: tinted button label should paint
1098
+ ...`). `_extract_relevant_log_lines` must prefer the rust test-harness
1099
+ failure lines over that generic wrapper."""
1100
+
1101
+ def test_exit_code_line_alone_is_not_matched(self) -> None:
1102
+ """The generic wrapper line carries no diagnostic value on its
1103
+ own — it must not be treated as a match at all (#3456), so the
1104
+ caller renders the explicit "no diagnostics matched" note instead
1105
+ of a briefing that looks substantive but says nothing."""
1106
+ text = (
1107
+ "running tests...\n"
1108
+ "##[error]Process completed with exit code 1.\n"
1109
+ )
1110
+ excerpt, truncated, matched = _extract_relevant_log_lines(text)
1111
+ assert matched is False
1112
+ assert excerpt == ""
1113
+
1114
+ def test_panic_and_test_result_preferred_over_exit_code(self) -> None:
1115
+ text = "\n".join([
1116
+ "running 42 tests",
1117
+ "---- dialog::tests::tinted_button_label_paints stdout ----",
1118
+ "thread 'main' panicked at dialog.rs:236:9:",
1119
+ "tinted button label should paint with the theme's accent color",
1120
+ "",
1121
+ "failures:",
1122
+ " dialog::tests::tinted_button_label_paints",
1123
+ "",
1124
+ "test result: FAILED. 41 passed; 1 failed; 0 ignored",
1125
+ "##[error]Process completed with exit code 1.",
1126
+ ])
1127
+ excerpt, truncated, matched = _extract_relevant_log_lines(text)
1128
+ assert matched is True
1129
+ assert "panicked at dialog.rs:236:9" in excerpt
1130
+ assert "tinted button label should paint" in excerpt
1131
+ assert "test result: FAILED" in excerpt
1132
+ assert "Process completed with exit code" not in excerpt
1133
+
1134
+ def test_bare_panic_line_without_test_harness_header_still_matches(self) -> None:
1135
+ text = (
1136
+ "starting up...\n"
1137
+ "thread 'main' panicked at src/main.rs:10:5:\n"
1138
+ "index out of bounds\n"
1139
+ "##[error]Process completed with exit code 101.\n"
1140
+ )
1141
+ excerpt, truncated, matched = _extract_relevant_log_lines(text)
1142
+ assert matched is True
1143
+ assert "panicked at src/main.rs:10:5" in excerpt
1144
+ assert "Process completed with exit code" not in excerpt
1145
+
1146
+ def test_real_error_annotation_still_takes_priority(self) -> None:
1147
+ """A genuinely diagnostic `##[error]` line (not the generic exit-
1148
+ code wrapper) is still top priority, unaffected by this change."""
1149
+ text = (
1150
+ "##[error]coord-tui fails to compile against this PR's quadraui\n"
1151
+ "##[error]Process completed with exit code 1.\n"
1152
+ )
1153
+ excerpt, truncated, matched = _extract_relevant_log_lines(text)
1154
+ assert matched is True
1155
+ assert "coord-tui fails to compile" in excerpt
1156
+ assert "Process completed with exit code" not in excerpt