code-coordinator 0.5.518__tar.gz → 0.5.519__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.518 → code_coordinator-0.5.519}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/conflict_fix.py +44 -0
  5. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/notify.py +15 -3
  6. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/reconcile.py +118 -22
  7. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_conflict_fix.py +147 -0
  8. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_notify.py +78 -0
  9. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_reconcile.py +103 -4
  10. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/.claude/commands/board.md +0 -0
  11. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/.claude/commands/complete-session.md +0 -0
  12. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/.claude/commands/coordinator.md +0 -0
  13. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/.githooks/_lib.sh +0 -0
  14. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/.githooks/post-checkout +0 -0
  15. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/.githooks/post-commit +0 -0
  16. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/.githooks/post-merge +0 -0
  17. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  18. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/.github/coord-ci-acceptance.yml +0 -0
  19. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/.github/workflows/auto-release.yml +0 -0
  20. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/.github/workflows/publish.yml +0 -0
  21. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/.github/workflows/test.yml +0 -0
  22. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/.gitignore +0 -0
  23. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/CLAUDE.md +0 -0
  24. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/GOAL.md +0 -0
  25. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/LICENSE +0 -0
  26. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/MANIFEST.in +0 -0
  27. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/README.md +0 -0
  28. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/code_coordinator.egg-info/SOURCES.txt +0 -0
  29. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/code_coordinator.egg-info/dependency_links.txt +0 -0
  30. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/code_coordinator.egg-info/entry_points.txt +0 -0
  31. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/code_coordinator.egg-info/requires.txt +0 -0
  32. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/code_coordinator.egg-info/scm_file_list.json +0 -0
  33. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/code_coordinator.egg-info/top_level.txt +0 -0
  34. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/__init__.py +0 -0
  35. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/_board_mapping.py +0 -0
  36. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/acceptance.py +0 -0
  37. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/acceptance_drivers.py +0 -0
  38. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/agent.py +0 -0
  39. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/agent_app.py +0 -0
  40. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/agent_update.py +0 -0
  41. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/agents/opencode/.gitignore +0 -0
  42. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/agents/opencode/agents/work.md +0 -0
  43. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/agents/opencode/routing.jsonc +0 -0
  44. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/approved_work.py +0 -0
  45. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/audit.py +0 -0
  46. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/auto_loop.py +0 -0
  47. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/backup.py +0 -0
  48. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/block_log.py +0 -0
  49. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/board_schema.py +0 -0
  50. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/board_service.py +0 -0
  51. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/board_wire.py +0 -0
  52. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/brain.py +0 -0
  53. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/branch_model.py +0 -0
  54. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/bug_intake.py +0 -0
  55. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/cargo_cache.py +0 -0
  56. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/ci_fix.py +0 -0
  57. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/ci_github.py +0 -0
  58. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/ci_gitlab.py +0 -0
  59. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/ci_store.py +0 -0
  60. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/claim.py +0 -0
  61. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/claude_setup_token.py +0 -0
  62. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/cli.py +0 -0
  63. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/client.py +0 -0
  64. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/codegen.py +0 -0
  65. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/__init__.py +0 -0
  66. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/_common.py +0 -0
  67. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/acceptance.py +0 -0
  68. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/agent_ops.py +0 -0
  69. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/audit.py +0 -0
  70. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/backup.py +0 -0
  71. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/chat.py +0 -0
  72. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/ci.py +0 -0
  73. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/codegen.py +0 -0
  74. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/dispatch.py +0 -0
  75. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/dispatch_workers.py +0 -0
  76. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/dr.py +0 -0
  77. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/drive.py +0 -0
  78. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/drive_queue.py +0 -0
  79. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/gate_a.py +0 -0
  80. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/gates.py +0 -0
  81. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/issues.py +0 -0
  82. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/lifecycle.py +0 -0
  83. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/machine.py +0 -0
  84. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/merge.py +0 -0
  85. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/milestone.py +0 -0
  86. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/plan_followup.py +0 -0
  87. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/plans.py +0 -0
  88. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/portal.py +0 -0
  89. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/pr.py +0 -0
  90. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/release.py +0 -0
  91. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/repo.py +0 -0
  92. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/report.py +0 -0
  93. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/review.py +0 -0
  94. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/scorecard.py +0 -0
  95. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/sessions.py +0 -0
  96. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/setup.py +0 -0
  97. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/status.py +0 -0
  98. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/store_migrate.py +0 -0
  99. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/terminal.py +0 -0
  100. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/test_gate.py +0 -0
  101. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/commands/tui.py +0 -0
  102. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/comments.py +0 -0
  103. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/config.py +0 -0
  104. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/config_reload.py +0 -0
  105. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/confirm_test.py +0 -0
  106. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/dao.py +0 -0
  107. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/dashboard/__init__.py +0 -0
  108. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/dashboard/fixture.py +0 -0
  109. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/dashboard/index.html +0 -0
  110. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/dashboard/server.py +0 -0
  111. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/dashboard/terminal.py +0 -0
  112. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/db.py +0 -0
  113. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/dead_end.py +0 -0
  114. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/decomposition_chat.py +0 -0
  115. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/README.md +0 -0
  116. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-agent.service +0 -0
  117. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-backup.service +0 -0
  118. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-backup.timer +0 -0
  119. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-db-backup.service +0 -0
  120. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-db-backup.sh +0 -0
  121. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-db-backup.timer +0 -0
  122. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-dr-verify.service +0 -0
  123. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-dr-verify.timer +0 -0
  124. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-drive-queue.service +0 -0
  125. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-drive-queue.timer +0 -0
  126. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-failure-notify.service +0 -0
  127. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-fleet-watchdog.service +0 -0
  128. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  129. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-notify.service +0 -0
  130. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-notify.timer +0 -0
  131. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-release-propagate.service +0 -0
  132. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-release-propagate.timer +0 -0
  133. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-release-window.service +0 -0
  134. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-release-window.timer +0 -0
  135. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-serve.service +0 -0
  136. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-web-dist-build.service +0 -0
  137. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-web-dist-build.timer +0 -0
  138. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy/coord-web.service +0 -0
  139. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy_manifest.py +0 -0
  140. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deploy_units.py +0 -0
  141. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deprecation_telemetry.py +0 -0
  142. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/deps.py +0 -0
  143. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/diagnose.py +0 -0
  144. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/dispatch.py +0 -0
  145. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/dispatch_liveness.py +0 -0
  146. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/dist_name.py +0 -0
  147. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/dr_promote.py +0 -0
  148. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/dr_verify.py +0 -0
  149. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/drive.py +0 -0
  150. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/drive_queue.py +0 -0
  151. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/drive_sessions_snapshot.py +0 -0
  152. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/drive_state.py +0 -0
  153. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/events.py +0 -0
  154. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/failure_class.py +0 -0
  155. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/failure_classifier.py +0 -0
  156. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/filelock.py +0 -0
  157. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/fleet_config_health.py +0 -0
  158. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/forge_availability.py +0 -0
  159. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/freshness.py +0 -0
  160. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/gate_a.py +0 -0
  161. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/gate_b.py +0 -0
  162. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/gate_snapshot.py +0 -0
  163. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/gates.py +0 -0
  164. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/gen_board_fixture.py +0 -0
  165. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/github_ops.py +0 -0
  166. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/github_throttle.py +0 -0
  167. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/goal.py +0 -0
  168. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/graph_health.py +0 -0
  169. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/__init__.py +0 -0
  170. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/aggregate.py +0 -0
  171. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/__init__.py +0 -0
  172. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/_ci_pin.py +0 -0
  173. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/agent_install.py +0 -0
  174. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/cargo_targets.py +0 -0
  175. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/claude_binary.py +0 -0
  176. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/config_drift.py +0 -0
  177. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  178. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/coord_web_ci_pin.py +0 -0
  179. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/deploy_lane_facts.py +0 -0
  180. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/disk.py +0 -0
  181. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/fleet_board.py +0 -0
  182. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  183. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/fleet_phantom.py +0 -0
  184. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/fleet_unit_drift.py +0 -0
  185. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/graph.py +0 -0
  186. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/graphify_cli.py +0 -0
  187. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/index_lock.py +0 -0
  188. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/issues_sync_staleness.py +0 -0
  189. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/local_machine_identity.py +0 -0
  190. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/plan_usage.py +0 -0
  191. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/pr_churn.py +0 -0
  192. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/release_cordon.py +0 -0
  193. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/repo_state.py +0 -0
  194. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/spawned_coord.py +0 -0
  195. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/stalled_pipeline.py +0 -0
  196. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/timer_active.py +0 -0
  197. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/toolchain.py +0 -0
  198. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/unit_drift.py +0 -0
  199. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/unit_enablement.py +0 -0
  200. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/wedged_drive_queue.py +0 -0
  201. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/checks/worktrees.py +0 -0
  202. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/cli.py +0 -0
  203. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/context.py +0 -0
  204. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/fleet_snapshot.py +0 -0
  205. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/models.py +0 -0
  206. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/pypi.py +0 -0
  207. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/registry.py +0 -0
  208. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/render.py +0 -0
  209. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/health/units.py +0 -0
  210. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/hooks.py +0 -0
  211. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/housekeeping.py +0 -0
  212. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/interactive.py +0 -0
  213. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/invariant_alarms.py +0 -0
  214. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/issue_store.py +0 -0
  215. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/issues_sync_status.py +0 -0
  216. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/liveness_auditor.py +0 -0
  217. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/machine_fault.py +0 -0
  218. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/machine_metrics.py +0 -0
  219. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/machine_onboard.py +0 -0
  220. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/machine_pause.py +0 -0
  221. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/machine_stats.py +0 -0
  222. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/merge_queue.py +0 -0
  223. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/milestone_chat.py +0 -0
  224. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/milestone_dispatch.py +0 -0
  225. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/milestone_gate.py +0 -0
  226. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/milestone_order.py +0 -0
  227. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/mock_author.py +0 -0
  228. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/models.py +0 -0
  229. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/network.py +0 -0
  230. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/new_issue_chat.py +0 -0
  231. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/notifier/__init__.py +0 -0
  232. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/notifier/baseline.py +0 -0
  233. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/notifier/cli.py +0 -0
  234. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/notifier/collect.py +0 -0
  235. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/notifier/digest.py +0 -0
  236. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/notifier/models.py +0 -0
  237. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/notifier/predicate.py +0 -0
  238. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/notifier/service.py +0 -0
  239. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/notifier/store.py +0 -0
  240. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/notifier/transport.py +0 -0
  241. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/openapi.py +0 -0
  242. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/overlap_fence.py +0 -0
  243. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/overlap_predict.py +0 -0
  244. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/parentage.py +0 -0
  245. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/parentage_github.py +0 -0
  246. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/pipeline.py +0 -0
  247. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/plan_parser.py +0 -0
  248. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/plans.py +0 -0
  249. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/platform_paths.py +0 -0
  250. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/portal_bridge.py +0 -0
  251. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/portal_store.py +0 -0
  252. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/portal_sync.py +0 -0
  253. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/pr_body_lint.py +0 -0
  254. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/prereqs.py +0 -0
  255. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/progress.py +0 -0
  256. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/providers/__init__.py +0 -0
  257. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/providers/base.py +0 -0
  258. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/providers/claude.py +0 -0
  259. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/providers/claude_pty.py +0 -0
  260. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/providers/opencode.py +0 -0
  261. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/queue_diagnose.py +0 -0
  262. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/reconcile_tick.py +0 -0
  263. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/refine_chat.py +0 -0
  264. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/release_cordon.py +0 -0
  265. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/release_propagate.py +0 -0
  266. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/release_verify.py +0 -0
  267. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/release_window.py +0 -0
  268. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/repo_dormancy.py +0 -0
  269. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/repo_edit.py +0 -0
  270. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/repo_onboard.py +0 -0
  271. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/reports.py +0 -0
  272. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/rest_schema.py +0 -0
  273. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/restart_cmd.py +0 -0
  274. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/revalidate.py +0 -0
  275. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/review.py +0 -0
  276. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/scorecard.py +0 -0
  277. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/self_health.py +0 -0
  278. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/serve_app.py +0 -0
  279. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  280. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  281. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  282. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  283. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  284. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/skills/portal-followup/SKILL.md +0 -0
  285. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/skills/release-now/SKILL.md +0 -0
  286. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  287. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  288. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/skills/update-issue/SKILL.md +0 -0
  289. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/smoke.py +0 -0
  290. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/spend_ceiling.py +0 -0
  291. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/split_work.py +0 -0
  292. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/sql.py +0 -0
  293. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/stage_projection.py +0 -0
  294. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/state.py +0 -0
  295. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/store_migrate.py +0 -0
  296. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/store_parity.py +0 -0
  297. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/templates/deploy-cloudflare.node.yml +0 -0
  298. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/test_author.py +0 -0
  299. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/test_chat.py +0 -0
  300. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/test_orchestrator.py +0 -0
  301. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/test_report.py +0 -0
  302. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/tui_release.py +0 -0
  303. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/uat_checks.py +0 -0
  304. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/usage.py +0 -0
  305. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/usage_limits.py +0 -0
  306. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/usage_rollup.py +0 -0
  307. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coord/worker_events.py +0 -0
  308. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/coordinator.example.yml +0 -0
  309. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-agent.service +0 -0
  310. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-backup.service +0 -0
  311. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-backup.timer +0 -0
  312. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-db-backup.service +0 -0
  313. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-db-backup.sh +0 -0
  314. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-db-backup.timer +0 -0
  315. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-dr-verify.service +0 -0
  316. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-dr-verify.timer +0 -0
  317. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-drive-queue.service +0 -0
  318. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-drive-queue.timer +0 -0
  319. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-failure-notify.service +0 -0
  320. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-failure-notify.sh +0 -0
  321. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-fleet-watchdog.service +0 -0
  322. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-fleet-watchdog.timer +0 -0
  323. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-notify.service +0 -0
  324. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-notify.timer +0 -0
  325. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-release-propagate.service +0 -0
  326. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-release-propagate.timer +0 -0
  327. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-release-window.service +0 -0
  328. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-release-window.timer +0 -0
  329. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-serve.service +0 -0
  330. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-web-dist-build.service +0 -0
  331. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-web-dist-build.sh +0 -0
  332. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-web-dist-build.timer +0 -0
  333. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-web-rollback.sh +0 -0
  334. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/coord-web.service +0 -0
  335. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/deploy/node-shim.sh +0 -0
  336. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/ADR_COORD_TUI_CI.md +0 -0
  337. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  338. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/ADR_COORD_WEB_CI.md +0 -0
  339. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/ADR_COORD_WEB_DIST.md +0 -0
  340. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  341. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/AGENT_OPERATIONS.md +0 -0
  342. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/ARCHITECTURE.md +0 -0
  343. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/ARCH_SECURITY_GATES.md +0 -0
  344. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/COCKPIT.md +0 -0
  345. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/CONTROL_CENTER.md +0 -0
  346. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/COST_DISCIPLINE.md +0 -0
  347. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/CROSS_PLATFORM.md +0 -0
  348. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/CUSTOMER_FACING_APPS.md +0 -0
  349. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/CUSTOMER_PORTAL.md +0 -0
  350. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/DATA_STORE_SELECTION.md +0 -0
  351. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/DISASTER_RECOVERY.md +0 -0
  352. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/DRIVE_QUEUE.md +0 -0
  353. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/EPHEMERAL_WORKERS.md +0 -0
  354. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/FORGE_MIGRATION.md +0 -0
  355. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/GRAPHIFY_SETUP.md +0 -0
  356. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/ISSUE_GUIDANCE.md +0 -0
  357. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/MAC_MINI.md +0 -0
  358. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  359. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/NOTIFIER.md +0 -0
  360. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/OPENCODE_VERIFICATION.md +0 -0
  361. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/OPERATING_GOTCHAS.md +0 -0
  362. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/OPERATOR_GUIDES.md +0 -0
  363. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/ORACLE_LOOP.md +0 -0
  364. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/PHONE_WEBAPP.md +0 -0
  365. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/PIPELINE_V2.md +0 -0
  366. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/PLATFORM_EVOLUTION.md +0 -0
  367. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/SECOND_BACKEND.md +0 -0
  368. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/STORE_SERVICE.md +0 -0
  369. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  370. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/WEB_CONTROL_CENTER.md +0 -0
  371. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/WSL_WINDOWS_WORKER.md +0 -0
  372. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/mocks/web/README.md +0 -0
  373. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/mocks/web/_tokens.css +0 -0
  374. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/mocks/web/issue-detail.html +0 -0
  375. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/mocks/web/pipeline-narrow.html +0 -0
  376. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/docs/mocks/web/pipeline-wide.html +0 -0
  377. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/graphify-out/.gitignore +0 -0
  378. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/install-agent.sh +0 -0
  379. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/pyproject.toml +0 -0
  380. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/audit_review_verdict_overrides.py +0 -0
  381. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  382. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/azure-workers/build-worker-image.sh +0 -0
  383. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/azure-workers/coordinator-machine.py +0 -0
  384. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/azure-workers/dr-down.sh +0 -0
  385. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/azure-workers/dr-up.sh +0 -0
  386. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/azure-workers/epic-down.sh +0 -0
  387. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/azure-workers/epic-up.sh +0 -0
  388. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/azure-workers/preflight.sh +0 -0
  389. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/azure-workers/provision-server.sh +0 -0
  390. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/azure-workers/provision-worker.sh +0 -0
  391. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  392. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  393. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/azure-workers/throwaway-vm.sh +0 -0
  394. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/azure-workers/verify-github-token.sh +0 -0
  395. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/check_gh_argv_containment.py +0 -0
  396. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/codegen.py +0 -0
  397. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/coord-test-runner.sh +0 -0
  398. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  399. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  400. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  401. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  402. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/coord-venv-rollback.sh +0 -0
  403. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/drive-batch.sh +0 -0
  404. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/extract-coord-tui.sh +0 -0
  405. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/fleet_watchdog.py +0 -0
  406. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/gen_board_fixture.py +0 -0
  407. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/gen_mock_index.py +0 -0
  408. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/lib/provision-core.sh +0 -0
  409. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/next_release_tag.py +0 -0
  410. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/provision-machine.sh +0 -0
  411. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/run_tests_in_populated_home.sh +0 -0
  412. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/run_tests_without_gh.sh +0 -0
  413. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/setup-macmini.sh +0 -0
  414. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/smoke_437_interactive.py +0 -0
  415. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/verify-provision-noble.sh +0 -0
  416. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/verify_878_review_capture.py +0 -0
  417. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/verify_release_published.py +0 -0
  418. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/scripts/verify_release_wheel.py +0 -0
  419. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/setup.cfg +0 -0
  420. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/SMOKE_SET.md +0 -0
  421. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/__init__.py +0 -0
  422. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/acceptance/ms-37/conftest.py +0 -0
  423. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/acceptance/ms-37/contract.md +0 -0
  424. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/acceptance/ms-37/manifest.yml +0 -0
  425. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  426. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  427. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/acceptance/ms-51/contract.md +0 -0
  428. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  429. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  430. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/acceptance/ms-51/manifest.yml +0 -0
  431. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  432. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/acceptance/ms-51/tsconfig.json +0 -0
  433. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  434. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/backends.py +0 -0
  435. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/conftest.py +0 -0
  436. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/board-pipeline-basic.json +0 -0
  437. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  438. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  439. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  440. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  441. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/playwright/all_pass.json +0 -0
  442. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  443. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/playwright/mixed_fail.json +0 -0
  444. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  445. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  446. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/playwright/skip.json +0 -0
  447. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/playwright/truncated.json +0 -0
  448. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  449. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  450. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  451. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  452. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  453. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  454. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  455. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  456. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_acceptance.py +0 -0
  457. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_acceptance_drivers.py +0 -0
  458. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent.py +0 -0
  459. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_api_error.py +0 -0
  460. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_app.py +0 -0
  461. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_branch_base.py +0 -0
  462. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_branch_capture.py +0 -0
  463. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_config_free_1712.py +0 -0
  464. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_deploy_units_endpoint.py +0 -0
  465. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_dirty_worktree.py +0 -0
  466. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  467. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_graph_self_heal.py +0 -0
  468. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_health_h3.py +0 -0
  469. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_idle_restart.py +0 -0
  470. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_push_failure.py +0 -0
  471. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_reap.py +0 -0
  472. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_repos_and_pull.py +0 -0
  473. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_restart_services_endpoint.py +0 -0
  474. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_skills_self_heal.py +0 -0
  475. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_startup_diagnostics.py +0 -0
  476. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_update.py +0 -0
  477. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_update_bluegreen.py +0 -0
  478. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_usage_limit.py +0 -0
  479. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_agent_zero_commit.py +0 -0
  480. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_ambient_home_isolation.py +0 -0
  481. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_approve_capability_reroute_3241.py +0 -0
  482. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_approve_dependency_busy_2804.py +0 -0
  483. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_approve_reject_plan.py +0 -0
  484. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_approve_usage_gate.py +0 -0
  485. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_approved_work_2532.py +0 -0
  486. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_approved_work_2996.py +0 -0
  487. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_assignment_already_recorded_daemon.py +0 -0
  488. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_audit_log.py +0 -0
  489. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_audit_outcome.py +0 -0
  490. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_audit_query.py +0 -0
  491. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_auto_loop.py +0 -0
  492. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_auto_release_publish_2035.py +0 -0
  493. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_backend_selection.py +0 -0
  494. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_backup.py +0 -0
  495. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_base_checkout_restore.py +0 -0
  496. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_block_log.py +0 -0
  497. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_board_cap_762.py +0 -0
  498. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_board_fixture.py +0 -0
  499. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_board_read_path.py +0 -0
  500. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_board_schema.py +0 -0
  501. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_board_service.py +0 -0
  502. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_board_state.py +0 -0
  503. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_board_wire.py +0 -0
  504. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_brain.py +0 -0
  505. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_branch_model.py +0 -0
  506. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_bug_intake.py +0 -0
  507. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_build_worker_image_env_update.py +0 -0
  508. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cargo_cache.py +0 -0
  509. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_check_gh_argv_containment.py +0 -0
  510. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_ci_acceptance_gate_1950.py +0 -0
  511. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_ci_fix.py +0 -0
  512. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_ci_github.py +0 -0
  513. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_ci_gitlab.py +0 -0
  514. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_ci_parity_2091.py +0 -0
  515. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_ci_store.py +0 -0
  516. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_claim.py +0 -0
  517. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_claude_md_budget.py +0 -0
  518. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_claude_setup_token.py +0 -0
  519. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_acceptance.py +0 -0
  520. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_assign.py +0 -0
  521. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  522. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_assign_interactive_remote.py +0 -0
  523. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_assign_provider.py +0 -0
  524. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  525. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_audit.py +0 -0
  526. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_chat_continue.py +0 -0
  527. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_ci.py +0 -0
  528. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_codegen.py +0 -0
  529. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_decide.py +0 -0
  530. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_diagnose_capability_rules.py +0 -0
  531. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_diagnose_config_provenance.py +0 -0
  532. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_diagnose_forge_availability.py +0 -0
  533. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_diagnose_graph.py +0 -0
  534. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_diagnose_self.py +0 -0
  535. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_diagnose_test_coverage.py +0 -0
  536. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_doctor.py +0 -0
  537. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_doctor_config_free_1801.py +0 -0
  538. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  539. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  540. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_drive.py +0 -0
  541. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_drive_queue.py +0 -0
  542. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_escalate.py +0 -0
  543. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_fix_headless_review.py +0 -0
  544. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_gate_a.py +0 -0
  545. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_install_drift.py +0 -0
  546. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_install_skills.py +0 -0
  547. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_issue_comment.py +0 -0
  548. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_issue_create_label.py +0 -0
  549. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_issue_reopen.py +0 -0
  550. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_issue_view_list.py +0 -0
  551. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_issues.py +0 -0
  552. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_merge.py +0 -0
  553. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_milestone_assign.py +0 -0
  554. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_milestone_capture.py +0 -0
  555. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_milestone_chat_add_child.py +0 -0
  556. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_milestone_dispatch.py +0 -0
  557. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_milestone_gate_b.py +0 -0
  558. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_milestone_gate_c.py +0 -0
  559. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_milestone_order.py +0 -0
  560. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  561. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_milestone_ship.py +0 -0
  562. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_network.py +0 -0
  563. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_new_issue_chat.py +0 -0
  564. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_plans.py +0 -0
  565. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_portal.py +0 -0
  566. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_pr.py +0 -0
  567. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_pull_artifact.py +0 -0
  568. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_queue.py +0 -0
  569. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_reattach_sessions.py +0 -0
  570. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_refine_board.py +0 -0
  571. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_release_preflight.py +0 -0
  572. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_release_propagate.py +0 -0
  573. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_release_window.py +0 -0
  574. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_repo_2220.py +0 -0
  575. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  576. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_scorecard.py +0 -0
  577. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_serve_store_backend_3084.py +0 -0
  578. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_set_review_findings.py +0 -0
  579. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_status_advisory_terminal.py +0 -0
  580. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_status_contested_tag.py +0 -0
  581. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_status_invariant_alarms.py +0 -0
  582. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_status_machine_fault.py +0 -0
  583. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_status_merge_queue.py +0 -0
  584. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_status_provider.py +0 -0
  585. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_status_retried_3340.py +0 -0
  586. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_status_review_finalizing.py +0 -0
  587. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_status_supervisor_3366.py +0 -0
  588. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_status_test_failed_tag.py +0 -0
  589. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_status_usage_limit.py +0 -0
  590. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_sync_comments_873.py +0 -0
  591. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_test_plan.py +0 -0
  592. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_track.py +0 -0
  593. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_tui_update.py +0 -0
  594. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cli_wait.py +0 -0
  595. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_client.py +0 -0
  596. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_client_base_install.py +0 -0
  597. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_client_config_cache_atomic_3052.py +0 -0
  598. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_client_resource_migration_1946.py +0 -0
  599. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_commands_common.py +0 -0
  600. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_comments.py +0 -0
  601. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_completion_summary.py +0 -0
  602. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_config.py +0 -0
  603. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_config_acceptance.py +0 -0
  604. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_config_audit.py +0 -0
  605. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_config_drift_check.py +0 -0
  606. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_config_effective.py +0 -0
  607. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_config_pricing.py +0 -0
  608. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  609. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_config_usage_gate.py +0 -0
  610. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_confirm_test.py +0 -0
  611. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_conflict_fix_semantic.py +0 -0
  612. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  613. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_coord_test.py +0 -0
  614. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  615. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_coord_test_runner_baseline.py +0 -0
  616. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_coord_test_runner_populated_home.py +0 -0
  617. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_coord_test_runner_routing.py +0 -0
  618. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_coord_test_runner_toolchain.py +0 -0
  619. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_coord_uat.py +0 -0
  620. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_coord_web_sse_restart_live.py +0 -0
  621. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_coordinator_machine.py +0 -0
  622. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_cross_platform_imports.py +0 -0
  623. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dao.py +0 -0
  624. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dashboard.py +0 -0
  625. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dashboard_api.py +0 -0
  626. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dashboard_fixture.py +0 -0
  627. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dashboard_server.py +0 -0
  628. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dashboard_terminal.py +0 -0
  629. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dashboard_terminal_live.py +0 -0
  630. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_db.py +0 -0
  631. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dead_end.py +0 -0
  632. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_decomposition_chat.py +0 -0
  633. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_deploy_coord_db_backup.py +0 -0
  634. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_deploy_coord_web_dist.py +0 -0
  635. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_deploy_coord_web_rollback.py +0 -0
  636. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_deploy_db_backup_unit.py +0 -0
  637. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_deploy_drive_queue_unit.py +0 -0
  638. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_deploy_failure_notify_unit.py +0 -0
  639. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_deploy_manifest.py +0 -0
  640. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_deploy_notify_unit.py +0 -0
  641. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_deploy_units_lane.py +0 -0
  642. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_deploy_web_unit.py +0 -0
  643. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_deprecation_telemetry.py +0 -0
  644. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_deps.py +0 -0
  645. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_diagnose.py +0 -0
  646. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dispatch.py +0 -0
  647. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dispatch_liveness.py +0 -0
  648. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dispatch_target_validation.py +0 -0
  649. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dispatch_workers.py +0 -0
  650. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dist_name.py +0 -0
  651. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_done_housekeeping.py +0 -0
  652. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dr_azure_scripts.py +0 -0
  653. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dr_promote.py +0 -0
  654. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_dr_verify.py +0 -0
  655. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_drive.py +0 -0
  656. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_drive_machine_fault.py +0 -0
  657. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_drive_queue.py +0 -0
  658. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_drive_queue_blocked_rendering.py +0 -0
  659. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_drive_queue_launch_argv.py +0 -0
  660. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_drive_queue_max_parallel_config.py +0 -0
  661. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  662. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_drive_queue_roll_pending.py +0 -0
  663. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  664. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_drive_sessions_snapshot.py +0 -0
  665. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_drive_state.py +0 -0
  666. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_drive_tmux.py +0 -0
  667. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_epic_up_capability_detection.py +0 -0
  668. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  669. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_epic_up_image_provenance.py +0 -0
  670. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_errors.py +0 -0
  671. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_events.py +0 -0
  672. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_failure_class.py +0 -0
  673. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_failure_classifier.py +0 -0
  674. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_filelock.py +0 -0
  675. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  676. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_fix_escalation_classifier.py +0 -0
  677. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_fix_of_force_override.py +0 -0
  678. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_fleet_config_health.py +0 -0
  679. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_fleet_health_probes.py +0 -0
  680. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_fleet_health_snapshot.py +0 -0
  681. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_fleet_watchdog.py +0 -0
  682. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_forge_availability.py +0 -0
  683. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_freshness.py +0 -0
  684. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_gate_a.py +0 -0
  685. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_gate_b.py +0 -0
  686. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_gate_snapshot_staleness.py +0 -0
  687. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_gates.py +0 -0
  688. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  689. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_gen_mock_index.py +0 -0
  690. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_generated_rust_fixture.py +0 -0
  691. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_generated_rust_requests.py +0 -0
  692. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_generated_types_fixture.py +0 -0
  693. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_github_ops.py +0 -0
  694. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_github_throttle.py +0 -0
  695. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_goal.py +0 -0
  696. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_graph_health.py +0 -0
  697. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_graph_selfheal_absent_2237.py +0 -0
  698. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_handoff.py +0 -0
  699. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_checks.py +0 -0
  700. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_cli.py +0 -0
  701. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_cli_graph.py +0 -0
  702. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_config.py +0 -0
  703. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_context.py +0 -0
  704. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_coord_tui_ci_pin.py +0 -0
  705. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_coord_web_ci_pin.py +0 -0
  706. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_deploy_lane_facts.py +0 -0
  707. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_fix.py +0 -0
  708. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_incident_regression.py +0 -0
  709. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_issues_sync_staleness.py +0 -0
  710. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_pr_churn.py +0 -0
  711. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_pypi.py +0 -0
  712. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_registry.py +0 -0
  713. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_release_cordon_probe.py +0 -0
  714. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_timer_active.py +0 -0
  715. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_toolchain.py +0 -0
  716. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_unit_drift.py +0 -0
  717. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_unit_enablement.py +0 -0
  718. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_health_wedged_drive_queue.py +0 -0
  719. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_hooks.py +0 -0
  720. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_housekeeping.py +0 -0
  721. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_human_attended_437.py +0 -0
  722. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_init.py +0 -0
  723. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_install_agent_venv_2911.py +0 -0
  724. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_integration.py +0 -0
  725. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_interactive.py +0 -0
  726. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_interactive_briefing_echo.py +0 -0
  727. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_interactive_pane_log_2541.py +0 -0
  728. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_interactive_prefill_state.py +0 -0
  729. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_interactive_session_relaunch.py +0 -0
  730. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_interactive_test_verdict_backstop.py +0 -0
  731. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_interactive_token_attribution.py +0 -0
  732. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_interactive_worktree.py +0 -0
  733. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_invariant_alarms.py +0 -0
  734. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_issue_store_seam.py +0 -0
  735. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_issues_sync_status.py +0 -0
  736. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_liveness_auditor.py +0 -0
  737. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_liveness_notify.py +0 -0
  738. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_lock_contention_ratchet.py +0 -0
  739. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_machine_fault.py +0 -0
  740. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_machine_metrics.py +0 -0
  741. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_machine_onboard.py +0 -0
  742. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_machine_pause.py +0 -0
  743. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_machine_stats.py +0 -0
  744. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_merge_queue.py +0 -0
  745. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_merge_verify.py +0 -0
  746. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_milestone_chat.py +0 -0
  747. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_milestone_dispatch.py +0 -0
  748. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_milestone_gate.py +0 -0
  749. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_milestone_order.py +0 -0
  750. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_milestone_seam.py +0 -0
  751. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_mock_author.py +0 -0
  752. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_model_tiering.py +0 -0
  753. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_models.py +0 -0
  754. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_models_config_labels.py +0 -0
  755. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_needs_attention.py +0 -0
  756. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_network.py +0 -0
  757. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_new_issue_chat.py +0 -0
  758. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_next_release_tag.py +0 -0
  759. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_node_shim.py +0 -0
  760. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_notifier_baseline.py +0 -0
  761. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_notifier_cli.py +0 -0
  762. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_notifier_collect.py +0 -0
  763. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_notifier_config.py +0 -0
  764. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_notifier_drive_seam.py +0 -0
  765. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_notifier_isolation.py +0 -0
  766. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_notifier_predicate.py +0 -0
  767. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_notifier_quiet_hours.py +0 -0
  768. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_notifier_service.py +0 -0
  769. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_notify_drain.py +0 -0
  770. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_openapi.py +0 -0
  771. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_operational_defaults.py +0 -0
  772. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_overlap_fence.py +0 -0
  773. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_overlap_predict.py +0 -0
  774. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_packaged_deploy_units.py +0 -0
  775. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_parentage.py +0 -0
  776. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_paste_landed.py +0 -0
  777. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  778. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_pipeline.py +0 -0
  779. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_plan_followup_approve_plan_command.py +0 -0
  780. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_plan_followup_pr_command.py +0 -0
  781. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_plan_followup_review_command.py +0 -0
  782. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_plan_only.py +0 -0
  783. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_plan_parser.py +0 -0
  784. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_platform_paths.py +0 -0
  785. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_portal_bridge.py +0 -0
  786. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_portal_config.py +0 -0
  787. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_portal_store.py +0 -0
  788. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_portal_sync.py +0 -0
  789. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_pr_body_lint.py +0 -0
  790. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_prereqs.py +0 -0
  791. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_production_db_guard.py +0 -0
  792. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_progress.py +0 -0
  793. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_provider_seam.py +0 -0
  794. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_providers.py +0 -0
  795. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_providers_config_labels.py +0 -0
  796. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_providers_pty.py +0 -0
  797. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_provision_core.py +0 -0
  798. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_provision_machine.py +0 -0
  799. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_py_rust_mirror_inventory.py +0 -0
  800. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_quiet_hours.py +0 -0
  801. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_quiet_hours_store_2146.py +0 -0
  802. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_reap_merged_sessions.py +0 -0
  803. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_reap_stale_interactive_tick.py +0 -0
  804. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_reconcile_branch.py +0 -0
  805. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_reconcile_completions.py +0 -0
  806. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  807. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_reconcile_merges.py +0 -0
  808. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_reconcile_no_agent_record.py +0 -0
  809. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_reconcile_tick.py +0 -0
  810. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_reconcile_usage_limit_done.py +0 -0
  811. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_refine_chat.py +0 -0
  812. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_release_cordon_2101.py +0 -0
  813. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  814. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_release_cordon_deadlock_2240.py +0 -0
  815. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  816. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_release_cordon_stuck_2490.py +0 -0
  817. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_release_propagate.py +0 -0
  818. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_release_propagate_threshold.py +0 -0
  819. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_release_roll_between_legs_2854.py +0 -0
  820. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_release_roll_window_handoff.py +0 -0
  821. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_release_unified_1242.py +0 -0
  822. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_release_verify.py +0 -0
  823. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_release_window.py +0 -0
  824. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_remote_auto_prune.py +0 -0
  825. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_remote_interactive_reaper.py +0 -0
  826. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_repo_add.py +0 -0
  827. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_repo_dormancy.py +0 -0
  828. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_repo_edit_2220.py +0 -0
  829. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_repo_graph_fleet_2237.py +0 -0
  830. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_repo_max_parallel_3423.py +0 -0
  831. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_repo_onboard_2220.py +0 -0
  832. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_report_result_push.py +0 -0
  833. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_reports.py +0 -0
  834. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_restart_cmd.py +0 -0
  835. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_retry.py +0 -0
  836. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_retry_advisory_1606.py +0 -0
  837. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_retry_escalation_classify_3360.py +0 -0
  838. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_retry_type_1636.py +0 -0
  839. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_revalidate.py +0 -0
  840. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_review.py +0 -0
  841. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_review_end_review_without_verdict.py +0 -0
  842. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_review_parse_failure_diagnostic.py +0 -0
  843. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_review_reaffirm.py +0 -0
  844. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_review_state.py +0 -0
  845. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_review_verdict_backstop.py +0 -0
  846. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_review_verdict_override_audit.py +0 -0
  847. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_review_verdict_relay.py +0 -0
  848. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_review_zero_commits.py +0 -0
  849. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_scoped_review_wiring.py +0 -0
  850. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_scorecard.py +0 -0
  851. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_self_health.py +0 -0
  852. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_serve.py +0 -0
  853. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_serve_app.py +0 -0
  854. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_serve_app_board_trim.py +0 -0
  855. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_serve_rest_routes.py +0 -0
  856. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_session.py +0 -0
  857. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_slice_issue_attribution.py +0 -0
  858. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_smoke.py +0 -0
  859. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  860. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_smoke_live_checkout_restore.py +0 -0
  861. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_smoke_workflow.py +0 -0
  862. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_spend_ceiling.py +0 -0
  863. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_spend_ceiling_coordinator.py +0 -0
  864. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_split.py +0 -0
  865. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_split_work.py +0 -0
  866. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_sql_dialect.py +0 -0
  867. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_sqlite_connect_ratchet.py +0 -0
  868. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_stage_projection.py +0 -0
  869. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_stale_busy_reviewer_697.py +0 -0
  870. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_stalled_pipeline.py +0 -0
  871. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_state.py +0 -0
  872. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_state_review_findings_daemon.py +0 -0
  873. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_status_fleet_footer.py +0 -0
  874. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_stop_1567.py +0 -0
  875. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_store_contract.py +0 -0
  876. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_store_migrate.py +0 -0
  877. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_stuck.py +0 -0
  878. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  879. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_terminal_command.py +0 -0
  880. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_test_author.py +0 -0
  881. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_test_chat.py +0 -0
  882. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_test_orchestrator.py +0 -0
  883. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_test_report.py +0 -0
  884. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_test_verdict_parsing.py +0 -0
  885. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_test_verdict_transcript_floor.py +0 -0
  886. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_text_io_encoding_audit.py +0 -0
  887. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_thin_client_board_audit.py +0 -0
  888. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_thin_client_config_load_1080.py +0 -0
  889. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_thin_client_daemon_routing_906.py +0 -0
  890. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_throwaway_vm.py +0 -0
  891. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_tmux_host.py +0 -0
  892. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_tmux_session.py +0 -0
  893. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_transcript_floor.py +0 -0
  894. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_uat_checks.py +0 -0
  895. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_usage.py +0 -0
  896. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_usage_limits.py +0 -0
  897. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_usage_rollup.py +0 -0
  898. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_venv_live_install_2121.py +0 -0
  899. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_version_single_source.py +0 -0
  900. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_watch.py +0 -0
  901. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  902. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_worker_env_venv_isolation.py +0 -0
  903. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_worker_events.py +0 -0
  904. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_worker_image_pin_sync.py +0 -0
  905. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_worker_safety.py +0 -0
  906. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_worker_test_scoping.py +0 -0
  907. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_worktree.py +0 -0
  908. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  909. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/tests/test_write_parity.py +0 -0
  910. {code_coordinator-0.5.518 → code_coordinator-0.5.519}/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.518
3
+ Version: 0.5.519
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.518
3
+ Version: 0.5.519
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.518",
2
+ "tag": "0.5.519",
3
3
  "distance": 0,
4
- "node": "gdba4bd13008ab845617ff22df60d1009a4ce15b9",
4
+ "node": "gdec8a9dd7ece07ccb502104f68acf67eeaff322a",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-09-26"
@@ -928,6 +928,7 @@ def has_prior_conflict_fix(
928
928
  merge_entry_id: str | None,
929
929
  *,
930
930
  current_error: str | None = None,
931
+ ignore_stale_rebase_attempts: bool = False,
931
932
  ) -> bool:
932
933
  """True when a second conflict-fix dispatch for *merge_entry_id* is blocked.
933
934
 
@@ -952,6 +953,21 @@ def has_prior_conflict_fix(
952
953
  recurring unchanged — not a fresh conflict — so it now consumes the cap
953
954
  too. Callers that don't pass *current_error* keep the pre-#2475 behaviour
954
955
  (``done`` never blocks) since they have no error text to compare.
956
+
957
+ *ignore_stale_rebase_attempts* (#3444): a stale-rebase dispatch
958
+ (``dispatch_conflict_fix(..., stale_rebase=True)``, title prefixed
959
+ :data:`STALE_REBASE_FIX_TITLE_PREFIX`) never even attempts a mechanical
960
+ resolution — it is authorized ONLY for a pure, content-preserving
961
+ rebase, and its own briefing embeds the SAME ``entry.error`` as its
962
+ "Reason:" line. Without this flag, its refusal (agent-reported ``done``,
963
+ downgraded to a give-up by the ``stale-rebase-mismatch`` marker — see
964
+ :func:`detect_stale_rebase_mismatch`) would trip the #2475
965
+ identical-error check above and block the ordinary conflict-fix #3444
966
+ escalates to right after, even though the ordinary path hasn't been
967
+ tried yet. Set by the one caller doing that escalation
968
+ (:func:`coord.reconcile._try_ordinary_escalation_after_stale_mismatch`)
969
+ to skip every stale-rebase-titled row entirely — active or not — so
970
+ ONLY prior *ordinary* conflict-fix attempts count against the cap.
955
971
  """
956
972
  if merge_entry_id is None:
957
973
  return False
@@ -960,6 +976,10 @@ def has_prior_conflict_fix(
960
976
  continue
961
977
  if a.review_of_assignment_id != merge_entry_id:
962
978
  continue
979
+ if ignore_stale_rebase_attempts and (a.issue_title or "").startswith(
980
+ STALE_REBASE_FIX_TITLE_PREFIX,
981
+ ):
982
+ continue
963
983
  # Active attempt in flight — prevent duplicate dispatch.
964
984
  if a.status in ("running", "pending"):
965
985
  return True
@@ -1254,6 +1274,7 @@ def dispatch_conflict_fix(
1254
1274
  model: str | None = None,
1255
1275
  stuck_summary: str | None = None,
1256
1276
  stale_rebase: bool = False,
1277
+ after_stale_rebase_mismatch: bool = False,
1257
1278
  status_fetcher: Callable[..., StatusResult] | None = None,
1258
1279
  machine_pick_out: "list[ConflictFixMachinePick] | None" = None,
1259
1280
  ) -> Assignment | None:
@@ -1357,6 +1378,23 @@ def dispatch_conflict_fix(
1357
1378
  (non-``semantic``) path below — a staleness-only block that recurs
1358
1379
  against the same error after a prior conflict-fix attempt escalates to
1359
1380
  a human exactly like a recurring mechanical conflict would.
1381
+
1382
+ ``after_stale_rebase_mismatch=True`` (#3444) dispatches the ORDINARY
1383
+ conflict-fix path (same briefing/system-prompt/title as the plain
1384
+ ``else`` branch below — this is not a distinct dispatch kind, just a
1385
+ retry-cap carve-out) right after a stale-rebase worker's
1386
+ ``stale-rebase-mismatch`` refusal: that verdict means the *just-stale*
1387
+ premise was wrong — the rebase hit a genuine content conflict, so this
1388
+ is an ordinary conflict that deserves the ordinary mechanical attempt,
1389
+ not an immediate HUMAN_REQUIRED. Passes
1390
+ ``ignore_stale_rebase_attempts=True`` to :func:`has_prior_conflict_fix`
1391
+ so the just-failed stale-rebase attempt — which never even tried a
1392
+ mechanical resolution — doesn't itself consume this cap; only a prior
1393
+ *ordinary* conflict-fix attempt does, capping this escalation at one
1394
+ per entry same as everything else here. #3349's safety property is
1395
+ unaffected: the stale-rebase worker itself still never resolves
1396
+ anything — only this ordinary worker (or its own semantic-escalation
1397
+ tier) may.
1360
1398
  """
1361
1399
  if semantic:
1362
1400
  if has_prior_semantic_escalation(board, entry.assignment_id):
@@ -1365,6 +1403,7 @@ def dispatch_conflict_fix(
1365
1403
  return None
1366
1404
  elif has_prior_conflict_fix(
1367
1405
  board, entry.assignment_id, current_error=entry.error,
1406
+ ignore_stale_rebase_attempts=after_stale_rebase_mismatch,
1368
1407
  ):
1369
1408
  return None
1370
1409
 
@@ -1576,6 +1615,11 @@ def dispatch_conflict_fix(
1576
1615
  # rebase dispatch from an ordinary conflict-fix without
1577
1616
  # re-deriving it from the assignment title prefix.
1578
1617
  "stale_rebase": stale_rebase,
1618
+ # #3444: distinguishes an ordinary conflict-fix dispatched
1619
+ # normally from one escalated right after a stale-rebase
1620
+ # worker's mismatch refusal — same title/briefing either way,
1621
+ # so this is the only durable trace of which path led here.
1622
+ "after_stale_rebase_mismatch": after_stale_rebase_mismatch,
1579
1623
  },
1580
1624
  )
1581
1625
 
@@ -3809,9 +3809,14 @@ def post_transition(transition: Transition, record: dict, entry: dict) -> None:
3809
3809
  except Exception: # noqa: BLE001
3810
3810
  board, config = None, None
3811
3811
  elif stale_rebase_mismatch:
3812
- # No board/config needed here — a stale-rebase mismatch has
3813
- # no tier-2 escalation path, it goes straight to
3814
- # HUMAN_REQUIRED inside `on_conflict_fix_done`.
3812
+ # #3444: board/config ARE needed here now — a stale-rebase
3813
+ # mismatch escalates to the ORDINARY conflict-fix path
3814
+ # (`_try_ordinary_escalation_after_stale_mismatch`) inside
3815
+ # `on_conflict_fix_done`, not straight to HUMAN_REQUIRED.
3816
+ # Without them that escalation call returns `None`
3817
+ # immediately and this — the operationally dominant path,
3818
+ # per the comment above — would reproduce #3444's exact bug
3819
+ # on every stale-rebase-mismatch it sees.
3815
3820
  progress = entry.get("progress") or {}
3816
3821
  stuck_summary = progress.get("stuck")
3817
3822
  if not stuck_summary and log_path:
@@ -3820,6 +3825,13 @@ def post_transition(transition: Transition, record: dict, entry: dict) -> None:
3820
3825
  stuck_summary = parse_progress(log_path).stuck
3821
3826
  except Exception: # noqa: BLE001
3822
3827
  stuck_summary = None
3828
+ try:
3829
+ from coord.board_service import read_board # noqa: PLC0415
3830
+ from coord.config import load as _load_config # noqa: PLC0415
3831
+ board = read_board()
3832
+ config = _load_config()
3833
+ except Exception: # noqa: BLE001
3834
+ board, config = None, None
3823
3835
 
3824
3836
  on_conflict_fix_done(
3825
3837
  parent_assignment_id=parent_id,
@@ -2978,6 +2978,67 @@ def _try_semantic_escalation(
2978
2978
  return None
2979
2979
 
2980
2980
 
2981
+ def _try_ordinary_escalation_after_stale_mismatch(
2982
+ entry: mq.QueuedMerge,
2983
+ *,
2984
+ board: Board | None,
2985
+ config: Config | None,
2986
+ machine_name: str,
2987
+ stuck_summary: str | None,
2988
+ ) -> "Assignment | None":
2989
+ """Dispatch the ordinary conflict-fix path after a stale-rebase
2990
+ worker's ``stale-rebase-mismatch`` refusal (#3444).
2991
+
2992
+ A ``stale-rebase-mismatch`` verdict means the ``checks_stale`` premise
2993
+ that triggered the stale-rebase dispatch was wrong — the rebase hit a
2994
+ genuine content conflict, not just a moved base. That makes this an
2995
+ ORDINARY conflict, so it deserves the ordinary #241 conflict-fix
2996
+ worker's mechanical/additive attempt (and its own
2997
+ ``SEMANTIC_STUCK_MARKER`` → escalation-or-HUMAN_REQUIRED handling on a
2998
+ second failure) before anything goes to a human — not an immediate
2999
+ HUMAN_REQUIRED, which is what happened before this fix.
3000
+
3001
+ Returns the dispatched Assignment, or ``None`` when the plumbing isn't
3002
+ available or dispatch declined for any of the ordinary reasons (no
3003
+ capable machine, already active, retry cap already consumed by a prior
3004
+ *ordinary* attempt, …) — every ``None`` case falls through to the
3005
+ caller's pre-#3444 HUMAN_REQUIRED behaviour.
3006
+
3007
+ Deliberately does NOT gate on a config flag the way
3008
+ :func:`_try_semantic_escalation` gates on
3009
+ ``pipeline.escalate_semantic_conflicts`` — unlike a semantic escalation
3010
+ to a stronger model, this is just the ordinary conflict-fix path that
3011
+ every other conflict already gets; there is no reason to withhold it
3012
+ here specifically.
3013
+ """
3014
+ if board is None or config is None:
3015
+ return None
3016
+
3017
+ from coord.conflict_fix import dispatch_conflict_fix # noqa: PLC0415
3018
+ from coord.network import fetch_status # noqa: PLC0415
3019
+
3020
+ try:
3021
+ return dispatch_conflict_fix(
3022
+ entry,
3023
+ board,
3024
+ config,
3025
+ prefer_machine=machine_name or None,
3026
+ after_stale_rebase_mismatch=True,
3027
+ stuck_summary=stuck_summary,
3028
+ # #3353: same liveness-aware selection every other call site
3029
+ # here uses — a dead machine with zero active assignments must
3030
+ # not be picked first just because it looks idle on the board.
3031
+ status_fetcher=fetch_status,
3032
+ )
3033
+ except Exception as exc: # noqa: BLE001 — never break reconcile on this
3034
+ import logging # noqa: PLC0415
3035
+ logging.warning(
3036
+ "stale-rebase-mismatch → ordinary conflict-fix escalation "
3037
+ "dispatch failed: %s", exc,
3038
+ )
3039
+ return None
3040
+
3041
+
2981
3042
  def on_conflict_fix_done(
2982
3043
  *,
2983
3044
  parent_assignment_id: str,
@@ -2998,16 +3059,21 @@ def on_conflict_fix_done(
2998
3059
  can surface "manual resolution required", and a comment is posted on
2999
3060
  the underlying issue so the user is notified outside the TUI too.
3000
3061
 
3001
- *stale_rebase_mismatch* (#3349 review): when ``True``, a stale-rebase
3002
- worker (dispatched for ``merge_gate_checks_stale``, not an ordinary
3003
- conflict) correctly refused to push per its own briefing's "When NOT to
3004
- guess" section — its rebase either hit a real conflict marker or
3005
- produced a different patch-id than the pre-rebase branch, so it is not
3006
- a pure content-preserving rebase. This is NOT a SEMANTIC give-up (no
3007
- tier-2 escalation applies — there is nothing to retry with a stronger
3008
- model; the base and this branch genuinely overlap) and lands directly
3009
- on HUMAN_REQUIRED with that reason recorded, mirroring the *semantic*
3010
- handling below but skipping its escalation path entirely.
3062
+ *stale_rebase_mismatch* (#3349 review, escalation added #3444): when
3063
+ ``True``, a stale-rebase worker (dispatched for
3064
+ ``merge_gate_checks_stale``, not an ordinary conflict) correctly
3065
+ refused to push per its own briefing's "When NOT to guess" section —
3066
+ its rebase either hit a real conflict marker or produced a different
3067
+ patch-id than the pre-rebase branch, so it is not a pure
3068
+ content-preserving rebase. That means the *just-stale* premise behind
3069
+ the stale-rebase dispatch was wrong — this is an ORDINARY conflict, so
3070
+ it gets the ordinary #241 conflict-fix worker's mechanical/additive
3071
+ attempt (:func:`_try_ordinary_escalation_after_stale_mismatch`) before
3072
+ anything reaches a human, exactly like any other conflict. Only when
3073
+ THAT dispatch itself declines (no capable machine, already active,
3074
+ retry cap consumed, …) does the entry land on HUMAN_REQUIRED — #3349's
3075
+ safety property (the stale-rebase worker itself never resolves
3076
+ anything) is unaffected either way.
3011
3077
 
3012
3078
  #2566: when *semantic* is ``True`` and the tier-2 escalation didn't
3013
3079
  fire specifically because ``pipeline.escalate_semantic_conflicts`` is
@@ -3058,24 +3124,54 @@ def on_conflict_fix_done(
3058
3124
  )
3059
3125
  failed_entry = entry
3060
3126
  elif stale_rebase_mismatch:
3061
- # #3349 review: a stale-rebase worker's refusal is a
3062
- # correct, deliberate stop — not a give-up to retry with a
3063
- # stronger model — so it goes straight to HUMAN_REQUIRED
3064
- # with the mismatch reason recorded, skipping the SEMANTIC
3065
- # tier-2 escalation path entirely.
3066
- entry.state = mq.HUMAN_REQUIRED
3127
+ # #3444: a stale-rebase worker's refusal means the
3128
+ # "just-stale" premise was wrong — this is a genuine
3129
+ # content conflict, i.e. an ORDINARY conflict, so it gets
3130
+ # the ordinary #241 conflict-fix worker's mechanical
3131
+ # attempt before anything reaches a human (previously this
3132
+ # skipped straight to HUMAN_REQUIRED — #3444's bug).
3067
3133
  detail = stuck_summary or (
3068
3134
  "rebase was not content-preserving (a conflict marker "
3069
3135
  "appeared, or the resulting patch-id differed from the "
3070
3136
  "pre-rebase branch's)"
3071
3137
  )
3072
- entry.error = (
3073
- f"{existing_error}; stale-rebase worker refused to "
3074
- f"push: {detail}. This is a genuine content conflict "
3075
- "against the new base, not a pure rebase — manual "
3076
- "resolution required."
3138
+ fix = _try_ordinary_escalation_after_stale_mismatch(
3139
+ entry,
3140
+ board=board,
3141
+ config=config,
3142
+ machine_name=machine_name,
3143
+ stuck_summary=stuck_summary,
3077
3144
  )
3078
- failed_entry = entry
3145
+ if fix is not None:
3146
+ # Stay in CONFLICT, not HUMAN_REQUIRED — the ordinary
3147
+ # conflict-fix worker is now in flight. If it also
3148
+ # fails (or itself judges the conflict SEMANTIC), this
3149
+ # hook runs again with `stale_rebase_mismatch=False`
3150
+ # and the ordinary/semantic-escalation-or-HUMAN_REQUIRED
3151
+ # logic below applies exactly as it does for any other
3152
+ # conflict.
3153
+ entry.state = mq.CONFLICT
3154
+ entry.error = (
3155
+ f"{existing_error}; stale-rebase worker refused to "
3156
+ f"push: {detail}. Not a stale-base mismatch after "
3157
+ "all — this is a genuine content conflict, "
3158
+ f"escalated to an ordinary conflict-fix (assignment "
3159
+ f"{fix.assignment_id}) on {fix.machine_name}."
3160
+ )
3161
+ else:
3162
+ # The ordinary escalation itself declined (no capable
3163
+ # machine, already active, retry cap already consumed
3164
+ # by a prior ordinary attempt, …) — fall through to
3165
+ # HUMAN_REQUIRED exactly like the pre-#3444 behaviour.
3166
+ entry.state = mq.HUMAN_REQUIRED
3167
+ entry.error = (
3168
+ f"{existing_error}; stale-rebase worker refused to "
3169
+ f"push: {detail}. This is a genuine content conflict "
3170
+ "against the new base, not a pure rebase, and the "
3171
+ "ordinary conflict-fix escalation could not be "
3172
+ "dispatched either — manual resolution required."
3173
+ )
3174
+ failed_entry = entry
3079
3175
  else:
3080
3176
  # #1291: a SEMANTIC give-up gets ONE escalated attempt from a
3081
3177
  # stronger model before the entry is parked. Everything
@@ -1160,6 +1160,153 @@ class TestDispatch:
1160
1160
  assert client.calls == []
1161
1161
 
1162
1162
 
1163
+ class TestAfterStaleRebaseMismatchEscalation:
1164
+ """#3444: a `stale-rebase-mismatch` verdict must escalate to the
1165
+ ORDINARY conflict-fix path — `dispatch_conflict_fix(...,
1166
+ after_stale_rebase_mismatch=True)` — not straight to HUMAN_REQUIRED.
1167
+ That flag changes nothing about the dispatched briefing/title (same as
1168
+ the plain `else` branch) — it only carves the just-failed stale-rebase
1169
+ attempt out of the retry cap, since that attempt never even tried a
1170
+ mechanical resolution.
1171
+ """
1172
+
1173
+ def test_sends_the_ordinary_briefing_and_title(
1174
+ self, two_machine_config: Config, coord_db,
1175
+ ) -> None:
1176
+ client = _FakeHTTPClient({"id": "fix-id-ordinary-after-mismatch"})
1177
+ entry = _entry(error=f"{CI_STALE_PREFIX} checks predate the current base")
1178
+ result = dispatch_conflict_fix(
1179
+ entry, Board(), two_machine_config,
1180
+ http_client=client, prefer_machine="laptop",
1181
+ after_stale_rebase_mismatch=True,
1182
+ )
1183
+ assert result is not None
1184
+ assert not result.issue_title.startswith(STALE_REBASE_FIX_TITLE_PREFIX)
1185
+ assert result.issue_title.startswith("[conflict-fix]")
1186
+ _, payload = client.calls[0]
1187
+ assert payload["system_prompt"] == CONFLICT_FIX_SYSTEM_PROMPT
1188
+
1189
+ def test_a_failed_stale_rebase_attempt_does_not_consume_the_cap(
1190
+ self, two_machine_config: Config, coord_db,
1191
+ ) -> None:
1192
+ """The just-finished stale-rebase attempt is recorded on the board
1193
+ as a `[stale-rebase]`-titled conflict-fix row whose dispatch-time
1194
+ `Reason:` line is the SAME `entry.error` this escalation call
1195
+ carries (both dispatches read straight off `entry.error`) — without
1196
+ `ignore_stale_rebase_attempts`, the #2475 identical-error check
1197
+ would misread that as a recurring, already-failed mechanical
1198
+ attempt and block this escalation before it ever tries."""
1199
+ board = Board()
1200
+ error = f"{CI_STALE_PREFIX} checks predate the current base"
1201
+ board.completed.append(Assignment(
1202
+ machine_name="laptop", repo_name="api", issue_number=1,
1203
+ issue_title=f"{STALE_REBASE_FIX_TITLE_PREFIX} Fix the thing",
1204
+ assignment_id="stale-fix-1", status="done",
1205
+ type="conflict-fix", review_of_assignment_id="abc123",
1206
+ briefing=f"# Stale-CI rebase\nReason: {error}\n",
1207
+ ))
1208
+ entry = _entry(error=error)
1209
+ client = _FakeHTTPClient({"id": "fix-id-escalated"})
1210
+ result = dispatch_conflict_fix(
1211
+ entry, board, two_machine_config,
1212
+ http_client=client, prefer_machine="laptop",
1213
+ after_stale_rebase_mismatch=True,
1214
+ )
1215
+ assert result is not None
1216
+ assert len(client.calls) == 1
1217
+
1218
+ def test_a_prior_ordinary_conflict_fix_failure_still_blocks(
1219
+ self, two_machine_config: Config, coord_db,
1220
+ ) -> None:
1221
+ """The carve-out is narrow: only stale-rebase-titled rows are
1222
+ ignored. A genuinely failed ORDINARY conflict-fix attempt for the
1223
+ same entry still consumes the cap exactly like any other retry."""
1224
+ board = Board()
1225
+ board.completed.append(Assignment(
1226
+ machine_name="laptop", repo_name="api", issue_number=1,
1227
+ issue_title="[conflict-fix] Fix the thing",
1228
+ assignment_id="ordinary-fix-1", status="failed",
1229
+ type="conflict-fix", review_of_assignment_id="abc123",
1230
+ ))
1231
+ entry = _entry()
1232
+ client = _FakeHTTPClient({"id": "would-not-fire"})
1233
+ result = dispatch_conflict_fix(
1234
+ entry, board, two_machine_config,
1235
+ http_client=client, prefer_machine="laptop",
1236
+ after_stale_rebase_mismatch=True,
1237
+ )
1238
+ assert result is None
1239
+ assert client.calls == []
1240
+
1241
+ def test_no_double_dispatch_while_a_conflict_fix_is_already_active(
1242
+ self, two_machine_config: Config, coord_db,
1243
+ ) -> None:
1244
+ """Acceptance: no double-dispatch while one is active, regardless
1245
+ of which flavor is running."""
1246
+ board = Board()
1247
+ board.active.append(Assignment(
1248
+ machine_name="laptop", repo_name="api", issue_number=1,
1249
+ issue_title="[conflict-fix] Fix the thing",
1250
+ assignment_id="running-fix-1", status="running",
1251
+ type="conflict-fix", review_of_assignment_id="abc123",
1252
+ ))
1253
+ entry = _entry()
1254
+ client = _FakeHTTPClient({"id": "would-not-fire"})
1255
+ result = dispatch_conflict_fix(
1256
+ entry, board, two_machine_config,
1257
+ http_client=client, prefer_machine="laptop",
1258
+ after_stale_rebase_mismatch=True,
1259
+ )
1260
+ assert result is None
1261
+ assert client.calls == []
1262
+
1263
+
1264
+ class TestHasPriorConflictFixIgnoresStaleRebaseAttempts:
1265
+ """Direct coverage of `has_prior_conflict_fix`'s
1266
+ `ignore_stale_rebase_attempts` carve-out (#3444)."""
1267
+
1268
+ def test_failed_stale_rebase_row_ignored_when_flag_set(self) -> None:
1269
+ from coord.conflict_fix import has_prior_conflict_fix
1270
+ board = Board()
1271
+ board.completed.append(Assignment(
1272
+ machine_name="m", repo_name="api", issue_number=1,
1273
+ issue_title=f"{STALE_REBASE_FIX_TITLE_PREFIX} x",
1274
+ type="conflict-fix", review_of_assignment_id="abc123",
1275
+ status="failed",
1276
+ ))
1277
+ assert has_prior_conflict_fix(
1278
+ board, "abc123", ignore_stale_rebase_attempts=True,
1279
+ ) is False
1280
+
1281
+ def test_failed_stale_rebase_row_still_counts_by_default(self) -> None:
1282
+ """Every OTHER caller (default `ignore_stale_rebase_attempts=False`)
1283
+ is byte-for-byte unaffected."""
1284
+ from coord.conflict_fix import has_prior_conflict_fix
1285
+ board = Board()
1286
+ board.completed.append(Assignment(
1287
+ machine_name="m", repo_name="api", issue_number=1,
1288
+ issue_title=f"{STALE_REBASE_FIX_TITLE_PREFIX} x",
1289
+ type="conflict-fix", review_of_assignment_id="abc123",
1290
+ status="failed",
1291
+ ))
1292
+ assert has_prior_conflict_fix(board, "abc123") is True
1293
+
1294
+ def test_failed_ordinary_row_still_counts_even_with_flag_set(self) -> None:
1295
+ """The carve-out is narrow: it names the stale-rebase title prefix
1296
+ specifically, not "any prior conflict-fix"."""
1297
+ from coord.conflict_fix import has_prior_conflict_fix
1298
+ board = Board()
1299
+ board.completed.append(Assignment(
1300
+ machine_name="m", repo_name="api", issue_number=1,
1301
+ issue_title="[conflict-fix] x",
1302
+ type="conflict-fix", review_of_assignment_id="abc123",
1303
+ status="failed",
1304
+ ))
1305
+ assert has_prior_conflict_fix(
1306
+ board, "abc123", ignore_stale_rebase_attempts=True,
1307
+ ) is True
1308
+
1309
+
1163
1310
  class TestSemanticEscalationDisabled:
1164
1311
  """#2566: the predicate that lets HUMAN_REQUIRED messaging say *why*
1165
1312
  the tier-2 semantic escalation didn't run, rather than reading as
@@ -4395,6 +4395,84 @@ class TestConflictFixCompletionStaleRebaseMismatch:
4395
4395
  assert kwargs["semantic"] is False
4396
4396
  assert kwargs["stale_rebase_mismatch"] is False
4397
4397
 
4398
+ def test_now_loads_board_and_config_for_the_ordinary_escalation(
4399
+ self, tmp_path: Path,
4400
+ ) -> None:
4401
+ """#3444: a `stale-rebase-mismatch` verdict now escalates to the
4402
+ ORDINARY conflict-fix path inside `on_conflict_fix_done`
4403
+ (`_try_ordinary_escalation_after_stale_mismatch`), which needs
4404
+ `board`/`config` to dispatch. Before this fix this arm passed
4405
+ `board=None, config=None` unconditionally (comment: "no board/
4406
+ config needed here... goes straight to HUMAN_REQUIRED") — on
4407
+ `coord notify`'s post_transition path (the "operationally
4408
+ dominant" path per the #2565 comment above), that alone would have
4409
+ reproduced #3444's exact bug even after `reconcile.py` was fixed."""
4410
+ from coord.conflict_fix import STALE_REBASE_MISMATCH_MARKER
4411
+ from coord.notify import post_transition
4412
+
4413
+ log = tmp_path / "worker.log"
4414
+ log.write_text(
4415
+ "STATUS: rebase started\n"
4416
+ f"STUCK: {STALE_REBASE_MISMATCH_MARKER} patch-id before abc123, "
4417
+ "after def456 differ\n"
4418
+ )
4419
+
4420
+ sentinel_board = object()
4421
+ sentinel_config = object()
4422
+ with (
4423
+ patch("coord.notify.post_completion"),
4424
+ patch("coord.notify.mark_notified"),
4425
+ patch("coord.notify._capture_cost"),
4426
+ patch("coord.notify._capture_smoke_tests"),
4427
+ patch("coord.notify._capture_completion_summary"),
4428
+ patch("coord.notify._capture_claude_session_id"),
4429
+ patch("coord.board_service.read_board", return_value=sentinel_board),
4430
+ patch("coord.config.load", return_value=sentinel_config),
4431
+ patch("coord.reconcile.on_conflict_fix_done") as mock_done,
4432
+ ):
4433
+ post_transition(self._transition(), self._record(), self._entry(str(log)))
4434
+
4435
+ mock_done.assert_called_once()
4436
+ kwargs = mock_done.call_args.kwargs
4437
+ assert kwargs["stale_rebase_mismatch"] is True
4438
+ assert kwargs["board"] is sentinel_board
4439
+ assert kwargs["config"] is sentinel_config
4440
+
4441
+ def test_swallows_board_load_failure_for_the_ordinary_escalation(
4442
+ self, tmp_path: Path,
4443
+ ) -> None:
4444
+ """A board/config load failure here must not crash `coord notify` —
4445
+ it falls back to `None`/`None`, which makes the escalation attempt
4446
+ inside `on_conflict_fix_done` a no-op and the entry still lands on
4447
+ HUMAN_REQUIRED, exactly like before #3444."""
4448
+ from coord.conflict_fix import STALE_REBASE_MISMATCH_MARKER
4449
+ from coord.notify import post_transition
4450
+
4451
+ log = tmp_path / "worker.log"
4452
+ log.write_text(
4453
+ "STATUS: rebase started\n"
4454
+ f"STUCK: {STALE_REBASE_MISMATCH_MARKER} patch-id before abc123, "
4455
+ "after def456 differ\n"
4456
+ )
4457
+
4458
+ with (
4459
+ patch("coord.notify.post_completion"),
4460
+ patch("coord.notify.mark_notified"),
4461
+ patch("coord.notify._capture_cost"),
4462
+ patch("coord.notify._capture_smoke_tests"),
4463
+ patch("coord.notify._capture_completion_summary"),
4464
+ patch("coord.notify._capture_claude_session_id"),
4465
+ patch("coord.board_service.read_board", side_effect=Exception("no board")),
4466
+ patch("coord.reconcile.on_conflict_fix_done") as mock_done,
4467
+ ):
4468
+ post_transition(self._transition(), self._record(), self._entry(str(log)))
4469
+
4470
+ mock_done.assert_called_once()
4471
+ kwargs = mock_done.call_args.kwargs
4472
+ assert kwargs["stale_rebase_mismatch"] is True
4473
+ assert kwargs["board"] is None
4474
+ assert kwargs["config"] is None
4475
+
4398
4476
  def test_semantic_marker_takes_precedence_and_skips_stale_rebase_check(
4399
4477
  self, tmp_path: Path,
4400
4478
  ) -> None: