code-coordinator 0.5.659__tar.gz → 0.5.661__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 (982) hide show
  1. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. code_coordinator-0.5.661/code_coordinator.egg-info/scm_version.json +8 -0
  4. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/merge.py +61 -42
  5. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/merge_queue.py +297 -15
  6. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/review.py +2 -2
  7. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_merge.py +43 -0
  8. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_epic_up_down_symlinked_config_1887.py +30 -1
  9. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_merge_queue.py +657 -1
  10. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_review.py +58 -0
  11. code_coordinator-0.5.659/code_coordinator.egg-info/scm_version.json +0 -8
  12. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/.claude/commands/board.md +0 -0
  13. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/.claude/commands/complete-session.md +0 -0
  14. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/.claude/commands/coordinator.md +0 -0
  15. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/.githooks/_lib.sh +0 -0
  16. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/.githooks/post-checkout +0 -0
  17. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/.githooks/post-commit +0 -0
  18. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/.githooks/post-merge +0 -0
  19. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  20. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/.github/coord-ci-acceptance.yml +0 -0
  21. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/.github/workflows/auto-release.yml +0 -0
  22. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/.github/workflows/publish.yml +0 -0
  23. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/.github/workflows/test.yml +0 -0
  24. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/.gitignore +0 -0
  25. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/CLAUDE.md +0 -0
  26. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/GOAL.md +0 -0
  27. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/LICENSE +0 -0
  28. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/MANIFEST.in +0 -0
  29. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/README.md +0 -0
  30. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/code_coordinator.egg-info/SOURCES.txt +0 -0
  31. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/code_coordinator.egg-info/dependency_links.txt +0 -0
  32. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/code_coordinator.egg-info/entry_points.txt +0 -0
  33. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/code_coordinator.egg-info/requires.txt +0 -0
  34. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/code_coordinator.egg-info/scm_file_list.json +0 -0
  35. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/code_coordinator.egg-info/top_level.txt +0 -0
  36. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/__init__.py +0 -0
  37. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/_board_mapping.py +0 -0
  38. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/acceptance.py +0 -0
  39. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/acceptance_drivers.py +0 -0
  40. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/agent.py +0 -0
  41. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/agent_app.py +0 -0
  42. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/agent_update.py +0 -0
  43. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/agents/opencode/.gitignore +0 -0
  44. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/agents/opencode/agents/work.md +0 -0
  45. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/agents/opencode/routing.jsonc +0 -0
  46. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/app_drive.py +0 -0
  47. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/app_drive_daemon.py +0 -0
  48. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/approved_work.py +0 -0
  49. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/audit.py +0 -0
  50. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/auto_loop.py +0 -0
  51. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/backup.py +0 -0
  52. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/block_log.py +0 -0
  53. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/board_schema.py +0 -0
  54. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/board_service.py +0 -0
  55. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/board_wire.py +0 -0
  56. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/brain.py +0 -0
  57. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/branch_model.py +0 -0
  58. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/briefing_lessons.py +0 -0
  59. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/bug_intake.py +0 -0
  60. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/bugbash.py +0 -0
  61. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/cargo_cache.py +0 -0
  62. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/ci_fix.py +0 -0
  63. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/ci_github.py +0 -0
  64. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/ci_gitlab.py +0 -0
  65. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/ci_store.py +0 -0
  66. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/claim.py +0 -0
  67. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/claude_setup_token.py +0 -0
  68. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/cli.py +0 -0
  69. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/client.py +0 -0
  70. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/codegen.py +0 -0
  71. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/__init__.py +0 -0
  72. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/_common.py +0 -0
  73. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/acceptance.py +0 -0
  74. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/agent_ops.py +0 -0
  75. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/app_drive.py +0 -0
  76. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/audit.py +0 -0
  77. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/backup.py +0 -0
  78. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/bugbash.py +0 -0
  79. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/chat.py +0 -0
  80. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/ci.py +0 -0
  81. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/codegen.py +0 -0
  82. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/dispatch.py +0 -0
  83. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/dispatch_workers.py +0 -0
  84. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/dr.py +0 -0
  85. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/drive.py +0 -0
  86. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/drive_queue.py +0 -0
  87. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/gate_a.py +0 -0
  88. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/gates.py +0 -0
  89. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/issues.py +0 -0
  90. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/lifecycle.py +0 -0
  91. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/machine.py +0 -0
  92. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/milestone.py +0 -0
  93. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/plan_followup.py +0 -0
  94. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/plans.py +0 -0
  95. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/portal.py +0 -0
  96. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/pr.py +0 -0
  97. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/release.py +0 -0
  98. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/repo.py +0 -0
  99. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/report.py +0 -0
  100. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/review.py +0 -0
  101. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/scorecard.py +0 -0
  102. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/sessions.py +0 -0
  103. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/setup.py +0 -0
  104. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/smoke.py +0 -0
  105. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/status.py +0 -0
  106. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/store_migrate.py +0 -0
  107. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/terminal.py +0 -0
  108. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/test_gate.py +0 -0
  109. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/commands/tui.py +0 -0
  110. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/comments.py +0 -0
  111. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/config.py +0 -0
  112. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/config_reload.py +0 -0
  113. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/confirm_test.py +0 -0
  114. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/conflict_fix.py +0 -0
  115. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/dao.py +0 -0
  116. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/dashboard/__init__.py +0 -0
  117. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/dashboard/fixture.py +0 -0
  118. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/dashboard/index.html +0 -0
  119. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/dashboard/reports.html +0 -0
  120. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/dashboard/server.py +0 -0
  121. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/dashboard/terminal.py +0 -0
  122. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/db.py +0 -0
  123. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/dead_end.py +0 -0
  124. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/decomposition_chat.py +0 -0
  125. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/README.md +0 -0
  126. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-agent.service +0 -0
  127. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-backup.service +0 -0
  128. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-backup.timer +0 -0
  129. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-db-backup.service +0 -0
  130. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-db-backup.sh +0 -0
  131. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-db-backup.timer +0 -0
  132. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-dr-verify.service +0 -0
  133. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-dr-verify.timer +0 -0
  134. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-drive-queue.service +0 -0
  135. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-drive-queue.timer +0 -0
  136. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-failure-notify.service +0 -0
  137. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-fleet-watchdog.service +0 -0
  138. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  139. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-nightly-smoke.service +0 -0
  140. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-nightly-smoke.timer +0 -0
  141. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-notify.service +0 -0
  142. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-notify.timer +0 -0
  143. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-release-propagate.service +0 -0
  144. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-release-propagate.timer +0 -0
  145. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-release-window.service +0 -0
  146. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-release-window.timer +0 -0
  147. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-serve.service +0 -0
  148. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-web-dist-build.service +0 -0
  149. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-web-dist-build.timer +0 -0
  150. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy/coord-web.service +0 -0
  151. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy_manifest.py +0 -0
  152. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deploy_units.py +0 -0
  153. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deprecation_telemetry.py +0 -0
  154. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/deps.py +0 -0
  155. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/diagnose.py +0 -0
  156. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/dirlink.py +0 -0
  157. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/dispatch.py +0 -0
  158. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/dispatch_liveness.py +0 -0
  159. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/dist_name.py +0 -0
  160. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/dr_promote.py +0 -0
  161. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/dr_verify.py +0 -0
  162. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/drive.py +0 -0
  163. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/drive_queue.py +0 -0
  164. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/drive_sessions_snapshot.py +0 -0
  165. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/drive_state.py +0 -0
  166. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/events.py +0 -0
  167. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/failure_class.py +0 -0
  168. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/failure_classifier.py +0 -0
  169. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/filelock.py +0 -0
  170. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/fleet_config_health.py +0 -0
  171. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/forge_availability.py +0 -0
  172. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/freshness.py +0 -0
  173. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/gate_a.py +0 -0
  174. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/gate_b.py +0 -0
  175. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/gate_snapshot.py +0 -0
  176. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/gates.py +0 -0
  177. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/gen_board_fixture.py +0 -0
  178. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/github_ops.py +0 -0
  179. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/github_throttle.py +0 -0
  180. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/goal.py +0 -0
  181. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/graph_health.py +0 -0
  182. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/gtk_native_driver.py +0 -0
  183. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/__init__.py +0 -0
  184. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/aggregate.py +0 -0
  185. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/__init__.py +0 -0
  186. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/_ci_pin.py +0 -0
  187. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/agent_install.py +0 -0
  188. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/cargo_targets.py +0 -0
  189. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/claude_binary.py +0 -0
  190. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/config_drift.py +0 -0
  191. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  192. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/coord_web_ci_pin.py +0 -0
  193. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/deploy_lane_facts.py +0 -0
  194. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/disk.py +0 -0
  195. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/fleet_board.py +0 -0
  196. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  197. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/fleet_phantom.py +0 -0
  198. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/fleet_unit_drift.py +0 -0
  199. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/graph.py +0 -0
  200. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/graphify_cli.py +0 -0
  201. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/gui_lane_preflight.py +0 -0
  202. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/index_lock.py +0 -0
  203. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/issues_sync_staleness.py +0 -0
  204. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/local_machine_identity.py +0 -0
  205. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/plan_usage.py +0 -0
  206. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/pr_churn.py +0 -0
  207. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/release_cordon.py +0 -0
  208. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/repo_state.py +0 -0
  209. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/spawned_coord.py +0 -0
  210. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/stalled_pipeline.py +0 -0
  211. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/timer_active.py +0 -0
  212. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/toolchain.py +0 -0
  213. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/unit_drift.py +0 -0
  214. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/unit_enablement.py +0 -0
  215. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/wedged_drive_queue.py +0 -0
  216. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/checks/worktrees.py +0 -0
  217. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/cli.py +0 -0
  218. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/context.py +0 -0
  219. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/fleet_snapshot.py +0 -0
  220. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/models.py +0 -0
  221. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/pypi.py +0 -0
  222. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/registry.py +0 -0
  223. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/render.py +0 -0
  224. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/health/units.py +0 -0
  225. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/hooks.py +0 -0
  226. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/housekeeping.py +0 -0
  227. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/interactive.py +0 -0
  228. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/invariant_alarms.py +0 -0
  229. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/issue_store.py +0 -0
  230. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/issues_sync_status.py +0 -0
  231. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/key_spec.py +0 -0
  232. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/liveness_auditor.py +0 -0
  233. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/mac_native_driver.py +0 -0
  234. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/machine_fault.py +0 -0
  235. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/machine_metrics.py +0 -0
  236. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/machine_onboard.py +0 -0
  237. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/machine_pause.py +0 -0
  238. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/machine_stats.py +0 -0
  239. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/milestone_chat.py +0 -0
  240. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/milestone_dispatch.py +0 -0
  241. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/milestone_gate.py +0 -0
  242. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/milestone_order.py +0 -0
  243. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/mock_author.py +0 -0
  244. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/models.py +0 -0
  245. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/native_fs_wait.py +0 -0
  246. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/native_pixels.py +0 -0
  247. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/network.py +0 -0
  248. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/new_issue_chat.py +0 -0
  249. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/nightly_runner.py +0 -0
  250. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/nightly_smoke.py +0 -0
  251. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/nightly_status.py +0 -0
  252. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/nightly_store.py +0 -0
  253. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/notifier/__init__.py +0 -0
  254. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/notifier/baseline.py +0 -0
  255. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/notifier/cli.py +0 -0
  256. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/notifier/collect.py +0 -0
  257. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/notifier/digest.py +0 -0
  258. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/notifier/models.py +0 -0
  259. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/notifier/predicate.py +0 -0
  260. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/notifier/service.py +0 -0
  261. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/notifier/store.py +0 -0
  262. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/notifier/transport.py +0 -0
  263. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/notify.py +0 -0
  264. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/openapi.py +0 -0
  265. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/overlap_fence.py +0 -0
  266. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/overlap_predict.py +0 -0
  267. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/parentage.py +0 -0
  268. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/parentage_github.py +0 -0
  269. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/pipeline.py +0 -0
  270. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/plan_parser.py +0 -0
  271. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/plans.py +0 -0
  272. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/platform_paths.py +0 -0
  273. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/portal_bridge.py +0 -0
  274. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/portal_store.py +0 -0
  275. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/portal_sync.py +0 -0
  276. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/pr_body_lint.py +0 -0
  277. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/prereqs.py +0 -0
  278. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/prereview_gate.py +0 -0
  279. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/progress.py +0 -0
  280. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/providers/__init__.py +0 -0
  281. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/providers/base.py +0 -0
  282. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/providers/claude.py +0 -0
  283. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/providers/claude_pty.py +0 -0
  284. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/providers/opencode.py +0 -0
  285. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/queue_diagnose.py +0 -0
  286. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/reconcile.py +0 -0
  287. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/reconcile_tick.py +0 -0
  288. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/refine_chat.py +0 -0
  289. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/release_cordon.py +0 -0
  290. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/release_gate.py +0 -0
  291. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/release_propagate.py +0 -0
  292. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/release_verify.py +0 -0
  293. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/release_window.py +0 -0
  294. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/repo_dormancy.py +0 -0
  295. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/repo_edit.py +0 -0
  296. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/repo_onboard.py +0 -0
  297. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/reports.py +0 -0
  298. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/rest_schema.py +0 -0
  299. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/restart_cmd.py +0 -0
  300. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/revalidate.py +0 -0
  301. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/scorecard.py +0 -0
  302. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/self_health.py +0 -0
  303. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/serve_app.py +0 -0
  304. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/shell_exec_wrap.py +0 -0
  305. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  306. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  307. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  308. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  309. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  310. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/skills/portal-followup/SKILL.md +0 -0
  311. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/skills/release-now/SKILL.md +0 -0
  312. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  313. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  314. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/skills/update-issue/SKILL.md +0 -0
  315. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/smoke.py +0 -0
  316. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/smoke_tags.py +0 -0
  317. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/spend_ceiling.py +0 -0
  318. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/split_work.py +0 -0
  319. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/sql.py +0 -0
  320. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/stage_projection.py +0 -0
  321. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/state.py +0 -0
  322. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/store_migrate.py +0 -0
  323. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/store_parity.py +0 -0
  324. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/templates/deploy-cloudflare.node.yml +0 -0
  325. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/test_author.py +0 -0
  326. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/test_chat.py +0 -0
  327. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/test_orchestrator.py +0 -0
  328. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/test_report.py +0 -0
  329. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/tui_pty_driver.py +0 -0
  330. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/tui_release.py +0 -0
  331. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/uat_checks.py +0 -0
  332. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/upstream_gaps.py +0 -0
  333. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/usage.py +0 -0
  334. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/usage_limits.py +0 -0
  335. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/usage_rollup.py +0 -0
  336. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/win_native_bridge.py +0 -0
  337. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/win_native_driver.py +0 -0
  338. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coord/worker_events.py +0 -0
  339. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/coordinator.example.yml +0 -0
  340. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-agent.service +0 -0
  341. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-backup.service +0 -0
  342. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-backup.timer +0 -0
  343. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-db-backup.service +0 -0
  344. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-db-backup.sh +0 -0
  345. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-db-backup.timer +0 -0
  346. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-dr-verify.service +0 -0
  347. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-dr-verify.timer +0 -0
  348. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-drive-queue.service +0 -0
  349. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-drive-queue.timer +0 -0
  350. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-failure-notify.service +0 -0
  351. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-failure-notify.sh +0 -0
  352. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-fleet-watchdog.service +0 -0
  353. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-fleet-watchdog.timer +0 -0
  354. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-nightly-smoke.service +0 -0
  355. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-nightly-smoke.timer +0 -0
  356. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-notify.service +0 -0
  357. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-notify.timer +0 -0
  358. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-release-propagate.service +0 -0
  359. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-release-propagate.timer +0 -0
  360. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-release-window.service +0 -0
  361. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-release-window.timer +0 -0
  362. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-serve.service +0 -0
  363. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-web-dist-build.service +0 -0
  364. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-web-dist-build.sh +0 -0
  365. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-web-dist-build.timer +0 -0
  366. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-web-rollback.sh +0 -0
  367. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/coord-web.service +0 -0
  368. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/deploy/node-shim.sh +0 -0
  369. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/ADR_COORD_TUI_CI.md +0 -0
  370. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  371. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/ADR_COORD_WEB_CI.md +0 -0
  372. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/ADR_COORD_WEB_DIST.md +0 -0
  373. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  374. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/AGENT_OPERATIONS.md +0 -0
  375. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/ARCHITECTURE.md +0 -0
  376. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/ARCH_SECURITY_GATES.md +0 -0
  377. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/COCKPIT.md +0 -0
  378. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/CONTROL_CENTER.md +0 -0
  379. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/COST_DISCIPLINE.md +0 -0
  380. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/CROSS_PLATFORM.md +0 -0
  381. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/CUSTOMER_FACING_APPS.md +0 -0
  382. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/CUSTOMER_PORTAL.md +0 -0
  383. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/DATA_STORE_SELECTION.md +0 -0
  384. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/DISASTER_RECOVERY.md +0 -0
  385. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/DRIVE_QUEUE.md +0 -0
  386. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/EPHEMERAL_WORKERS.md +0 -0
  387. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/FORGE_MIGRATION.md +0 -0
  388. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/GRAPHIFY_SETUP.md +0 -0
  389. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/ISSUE_GUIDANCE.md +0 -0
  390. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/MAC_MINI.md +0 -0
  391. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  392. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/NOTIFIER.md +0 -0
  393. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/OPENCODE_VERIFICATION.md +0 -0
  394. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/OPERATING_GOTCHAS.md +0 -0
  395. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/OPERATOR_GUIDES.md +0 -0
  396. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/ORACLE_LOOP.md +0 -0
  397. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/PHONE_WEBAPP.md +0 -0
  398. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/PIPELINE_V2.md +0 -0
  399. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/PLATFORM_EVOLUTION.md +0 -0
  400. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/SECOND_BACKEND.md +0 -0
  401. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/STORE_SERVICE.md +0 -0
  402. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  403. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/WEB_CONTROL_CENTER.md +0 -0
  404. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/WSL_WINDOWS_WORKER.md +0 -0
  405. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/mocks/web/README.md +0 -0
  406. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/mocks/web/_tokens.css +0 -0
  407. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/mocks/web/issue-detail.html +0 -0
  408. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/mocks/web/pipeline-narrow.html +0 -0
  409. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/docs/mocks/web/pipeline-wide.html +0 -0
  410. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/graphify-out/.gitignore +0 -0
  411. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/install-agent.sh +0 -0
  412. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/pyproject.toml +0 -0
  413. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/audit_review_verdict_overrides.py +0 -0
  414. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  415. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/azure-workers/build-worker-image.sh +0 -0
  416. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/azure-workers/coordinator-machine.py +0 -0
  417. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/azure-workers/dr-down.sh +0 -0
  418. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/azure-workers/dr-up.sh +0 -0
  419. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/azure-workers/epic-down.sh +0 -0
  420. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/azure-workers/epic-up.sh +0 -0
  421. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/azure-workers/preflight.sh +0 -0
  422. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/azure-workers/provision-server.sh +0 -0
  423. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/azure-workers/provision-worker.sh +0 -0
  424. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  425. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  426. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/azure-workers/throwaway-vm.sh +0 -0
  427. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/azure-workers/verify-github-token.sh +0 -0
  428. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/check_gh_argv_containment.py +0 -0
  429. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/codegen.py +0 -0
  430. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/comment_cruft.py +0 -0
  431. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/coord-test-runner.sh +0 -0
  432. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  433. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  434. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  435. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  436. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/coord-venv-rollback.sh +0 -0
  437. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/drive-batch.sh +0 -0
  438. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/extract-coord-tui.sh +0 -0
  439. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/fleet_watchdog.py +0 -0
  440. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/gen_board_fixture.py +0 -0
  441. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/gen_mock_index.py +0 -0
  442. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/lib/provision-core.sh +0 -0
  443. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/next_release_tag.py +0 -0
  444. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/provision-machine.sh +0 -0
  445. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/run_tests_in_populated_home.sh +0 -0
  446. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/run_tests_without_gh.sh +0 -0
  447. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/setup-macmini.sh +0 -0
  448. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/smoke_437_interactive.py +0 -0
  449. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/verify-provision-noble.sh +0 -0
  450. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/verify_878_review_capture.py +0 -0
  451. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/verify_release_published.py +0 -0
  452. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/scripts/verify_release_wheel.py +0 -0
  453. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/setup.cfg +0 -0
  454. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/SMOKE_SET.md +0 -0
  455. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/__init__.py +0 -0
  456. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/acceptance/ms-37/conftest.py +0 -0
  457. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/acceptance/ms-37/contract.md +0 -0
  458. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/acceptance/ms-37/manifest.yml +0 -0
  459. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  460. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  461. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/acceptance/ms-51/contract.md +0 -0
  462. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  463. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  464. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/acceptance/ms-51/manifest.yml +0 -0
  465. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  466. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/acceptance/ms-51/tsconfig.json +0 -0
  467. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  468. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/backends.py +0 -0
  469. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/conftest.py +0 -0
  470. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/board-pipeline-basic.json +0 -0
  471. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  472. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  473. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  474. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  475. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/playwright/all_pass.json +0 -0
  476. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  477. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/playwright/mixed_fail.json +0 -0
  478. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  479. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  480. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/playwright/skip.json +0 -0
  481. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/playwright/truncated.json +0 -0
  482. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  483. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  484. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  485. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  486. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
  487. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  488. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  489. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  490. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  491. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_acceptance.py +0 -0
  492. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_acceptance_drivers.py +0 -0
  493. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent.py +0 -0
  494. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_api_error.py +0 -0
  495. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_app.py +0 -0
  496. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_branch_base.py +0 -0
  497. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_branch_capture.py +0 -0
  498. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_config_free_1712.py +0 -0
  499. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_deploy_units_endpoint.py +0 -0
  500. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_dirty_worktree.py +0 -0
  501. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  502. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_graceful_shutdown_3649.py +0 -0
  503. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_graph_refresh.py +0 -0
  504. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_graph_self_heal.py +0 -0
  505. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_health_h3.py +0 -0
  506. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_idle_restart.py +0 -0
  507. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_push_failure.py +0 -0
  508. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_reap.py +0 -0
  509. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_repos_and_pull.py +0 -0
  510. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_restart_services_endpoint.py +0 -0
  511. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_skills_self_heal.py +0 -0
  512. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_startup_diagnostics.py +0 -0
  513. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_update.py +0 -0
  514. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_update_bluegreen.py +0 -0
  515. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_usage_limit.py +0 -0
  516. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_agent_zero_commit.py +0 -0
  517. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_ambient_home_isolation.py +0 -0
  518. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_app_drive.py +0 -0
  519. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_approve_capability_reroute_3241.py +0 -0
  520. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_approve_dependency_busy_2804.py +0 -0
  521. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_approve_reject_plan.py +0 -0
  522. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_approve_usage_gate.py +0 -0
  523. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_approved_work_2532.py +0 -0
  524. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_approved_work_2996.py +0 -0
  525. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_assignment_already_recorded_daemon.py +0 -0
  526. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_audit_log.py +0 -0
  527. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_audit_outcome.py +0 -0
  528. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_audit_query.py +0 -0
  529. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_auto_loop.py +0 -0
  530. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_auto_release_publish_2035.py +0 -0
  531. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_backend_selection.py +0 -0
  532. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_backup.py +0 -0
  533. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_base_checkout_restore.py +0 -0
  534. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_block_log.py +0 -0
  535. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_board_cap_762.py +0 -0
  536. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_board_fixture.py +0 -0
  537. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_board_nightly_status.py +0 -0
  538. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_board_read_path.py +0 -0
  539. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_board_schema.py +0 -0
  540. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_board_service.py +0 -0
  541. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_board_state.py +0 -0
  542. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_board_wire.py +0 -0
  543. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_brain.py +0 -0
  544. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_branch_model.py +0 -0
  545. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_briefing_lessons.py +0 -0
  546. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_bug_intake.py +0 -0
  547. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_bugbash.py +0 -0
  548. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_build_worker_image_env_update.py +0 -0
  549. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cargo_cache.py +0 -0
  550. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_check_gh_argv_containment.py +0 -0
  551. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_ci_acceptance_gate_1950.py +0 -0
  552. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_ci_fix.py +0 -0
  553. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_ci_github.py +0 -0
  554. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_ci_gitlab.py +0 -0
  555. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_ci_parity_2091.py +0 -0
  556. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_ci_store.py +0 -0
  557. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_claim.py +0 -0
  558. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_claude_md_budget.py +0 -0
  559. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_claude_setup_token.py +0 -0
  560. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_acceptance.py +0 -0
  561. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_assign.py +0 -0
  562. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  563. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_assign_interactive_remote.py +0 -0
  564. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_assign_provider.py +0 -0
  565. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  566. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_audit.py +0 -0
  567. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_chat_continue.py +0 -0
  568. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_ci.py +0 -0
  569. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_codegen.py +0 -0
  570. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_decide.py +0 -0
  571. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_diagnose_capability_rules.py +0 -0
  572. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_diagnose_config_provenance.py +0 -0
  573. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_diagnose_forge_availability.py +0 -0
  574. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_diagnose_graph.py +0 -0
  575. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_diagnose_self.py +0 -0
  576. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_diagnose_test_coverage.py +0 -0
  577. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_doctor.py +0 -0
  578. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_doctor_config_free_1801.py +0 -0
  579. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  580. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  581. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_drive.py +0 -0
  582. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_drive_queue.py +0 -0
  583. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_escalate.py +0 -0
  584. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_fix_headless_review.py +0 -0
  585. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_gate_a.py +0 -0
  586. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_inject_board_less.py +0 -0
  587. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_install_drift.py +0 -0
  588. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_install_skills.py +0 -0
  589. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_issue_close_wrong_repo.py +0 -0
  590. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_issue_comment.py +0 -0
  591. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_issue_create_label.py +0 -0
  592. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_issue_reopen.py +0 -0
  593. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_issue_view_list.py +0 -0
  594. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_issues.py +0 -0
  595. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_milestone_assign.py +0 -0
  596. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_milestone_capture.py +0 -0
  597. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_milestone_chat_add_child.py +0 -0
  598. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_milestone_dispatch.py +0 -0
  599. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_milestone_gate_b.py +0 -0
  600. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_milestone_gate_c.py +0 -0
  601. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_milestone_order.py +0 -0
  602. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  603. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_milestone_ship.py +0 -0
  604. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_network.py +0 -0
  605. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_new_issue_chat.py +0 -0
  606. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_plans.py +0 -0
  607. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_portal.py +0 -0
  608. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_pr.py +0 -0
  609. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_pull_artifact.py +0 -0
  610. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_queue.py +0 -0
  611. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_reattach_sessions.py +0 -0
  612. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_refine_board.py +0 -0
  613. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_release_preflight.py +0 -0
  614. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_release_propagate.py +0 -0
  615. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_release_window.py +0 -0
  616. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_repo_2220.py +0 -0
  617. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  618. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_scorecard.py +0 -0
  619. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_serve_store_backend_3084.py +0 -0
  620. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_set_review_findings.py +0 -0
  621. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_smoke_nightly.py +0 -0
  622. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_smoke_nightly_sweep.py +0 -0
  623. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_status_advisory_terminal.py +0 -0
  624. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_status_contested_tag.py +0 -0
  625. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_status_invariant_alarms.py +0 -0
  626. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_status_machine_fault.py +0 -0
  627. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_status_merge_queue.py +0 -0
  628. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_status_nightly.py +0 -0
  629. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_status_provider.py +0 -0
  630. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_status_retried_3340.py +0 -0
  631. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_status_review_finalizing.py +0 -0
  632. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_status_supervisor_3366.py +0 -0
  633. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_status_test_failed_tag.py +0 -0
  634. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_status_usage_limit.py +0 -0
  635. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_sync_comments_873.py +0 -0
  636. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_test_plan.py +0 -0
  637. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_track.py +0 -0
  638. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_tui_update.py +0 -0
  639. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cli_wait.py +0 -0
  640. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_client.py +0 -0
  641. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_client_base_install.py +0 -0
  642. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_client_config_cache_atomic_3052.py +0 -0
  643. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_client_resource_migration_1946.py +0 -0
  644. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_commands_common.py +0 -0
  645. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_comment_cruft.py +0 -0
  646. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_comments.py +0 -0
  647. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_completion_summary.py +0 -0
  648. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_config.py +0 -0
  649. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_config_acceptance.py +0 -0
  650. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_config_audit.py +0 -0
  651. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_config_drift_check.py +0 -0
  652. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_config_effective.py +0 -0
  653. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_config_prereview_gate.py +0 -0
  654. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_config_pricing.py +0 -0
  655. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  656. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_config_usage_gate.py +0 -0
  657. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_confirm_test.py +0 -0
  658. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_conflict_fix.py +0 -0
  659. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_conflict_fix_semantic.py +0 -0
  660. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  661. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_coord_test.py +0 -0
  662. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  663. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_coord_test_runner_baseline.py +0 -0
  664. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_coord_test_runner_populated_home.py +0 -0
  665. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_coord_test_runner_routing.py +0 -0
  666. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_coord_test_runner_toolchain.py +0 -0
  667. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_coord_uat.py +0 -0
  668. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_coord_web_sse_restart_live.py +0 -0
  669. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_coordinator_machine.py +0 -0
  670. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_cross_platform_imports.py +0 -0
  671. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dao.py +0 -0
  672. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dashboard.py +0 -0
  673. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dashboard_api.py +0 -0
  674. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dashboard_fixture.py +0 -0
  675. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dashboard_reports.py +0 -0
  676. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dashboard_server.py +0 -0
  677. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dashboard_terminal.py +0 -0
  678. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dashboard_terminal_live.py +0 -0
  679. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_db.py +0 -0
  680. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dead_end.py +0 -0
  681. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_decomposition_chat.py +0 -0
  682. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_deploy_coord_db_backup.py +0 -0
  683. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_deploy_coord_web_dist.py +0 -0
  684. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_deploy_coord_web_rollback.py +0 -0
  685. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_deploy_db_backup_unit.py +0 -0
  686. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_deploy_drive_queue_unit.py +0 -0
  687. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_deploy_failure_notify_unit.py +0 -0
  688. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_deploy_manifest.py +0 -0
  689. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_deploy_notify_unit.py +0 -0
  690. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_deploy_units_lane.py +0 -0
  691. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_deploy_web_unit.py +0 -0
  692. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_deprecation_telemetry.py +0 -0
  693. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_deps.py +0 -0
  694. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_diagnose.py +0 -0
  695. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dirlink.py +0 -0
  696. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dispatch.py +0 -0
  697. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dispatch_liveness.py +0 -0
  698. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dispatch_target_validation.py +0 -0
  699. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dispatch_workers.py +0 -0
  700. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dist_name.py +0 -0
  701. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_done_housekeeping.py +0 -0
  702. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dr_azure_scripts.py +0 -0
  703. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dr_promote.py +0 -0
  704. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_dr_verify.py +0 -0
  705. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_drive.py +0 -0
  706. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_drive_machine_fault.py +0 -0
  707. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_drive_queue.py +0 -0
  708. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_drive_queue_blocked_rendering.py +0 -0
  709. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_drive_queue_launch_argv.py +0 -0
  710. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_drive_queue_max_parallel_config.py +0 -0
  711. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  712. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_drive_queue_roll_pending.py +0 -0
  713. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  714. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_drive_sessions_snapshot.py +0 -0
  715. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_drive_state.py +0 -0
  716. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_drive_tmux.py +0 -0
  717. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_epic_up_capability_detection.py +0 -0
  718. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_epic_up_image_provenance.py +0 -0
  719. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_errors.py +0 -0
  720. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_events.py +0 -0
  721. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_failure_class.py +0 -0
  722. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_failure_classifier.py +0 -0
  723. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_filelock.py +0 -0
  724. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  725. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_fix_escalation_classifier.py +0 -0
  726. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_fix_of_force_override.py +0 -0
  727. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_fleet_config_health.py +0 -0
  728. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_fleet_health_probes.py +0 -0
  729. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_fleet_health_snapshot.py +0 -0
  730. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_fleet_watchdog.py +0 -0
  731. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_forge_availability.py +0 -0
  732. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_freshness.py +0 -0
  733. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_gate_a.py +0 -0
  734. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_gate_b.py +0 -0
  735. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_gate_snapshot_staleness.py +0 -0
  736. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_gates.py +0 -0
  737. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  738. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_gen_mock_index.py +0 -0
  739. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_generated_rust_fixture.py +0 -0
  740. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_generated_rust_requests.py +0 -0
  741. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_generated_types_fixture.py +0 -0
  742. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_github_ops.py +0 -0
  743. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_github_throttle.py +0 -0
  744. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_goal.py +0 -0
  745. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_graph_health.py +0 -0
  746. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_graph_selfheal_absent_2237.py +0 -0
  747. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_gtk_native_driver.py +0 -0
  748. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_handoff.py +0 -0
  749. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_checks.py +0 -0
  750. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_cli.py +0 -0
  751. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_cli_graph.py +0 -0
  752. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_config.py +0 -0
  753. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_context.py +0 -0
  754. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_coord_tui_ci_pin.py +0 -0
  755. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_coord_web_ci_pin.py +0 -0
  756. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_deploy_lane_facts.py +0 -0
  757. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_fix.py +0 -0
  758. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_incident_regression.py +0 -0
  759. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_issues_sync_staleness.py +0 -0
  760. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_pr_churn.py +0 -0
  761. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_pypi.py +0 -0
  762. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_registry.py +0 -0
  763. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_release_cordon_probe.py +0 -0
  764. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_timer_active.py +0 -0
  765. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_toolchain.py +0 -0
  766. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_unit_drift.py +0 -0
  767. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_unit_enablement.py +0 -0
  768. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_health_wedged_drive_queue.py +0 -0
  769. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_hooks.py +0 -0
  770. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_housekeeping.py +0 -0
  771. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_human_attended_437.py +0 -0
  772. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_init.py +0 -0
  773. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_install_agent_capabilities_3515.py +0 -0
  774. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_install_agent_venv_2911.py +0 -0
  775. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_install_agent_wsl_bridge_3515.py +0 -0
  776. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_integration.py +0 -0
  777. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_interactive.py +0 -0
  778. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_interactive_briefing_echo.py +0 -0
  779. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_interactive_pane_log_2541.py +0 -0
  780. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_interactive_prefill_state.py +0 -0
  781. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_interactive_session_relaunch.py +0 -0
  782. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_interactive_test_verdict_backstop.py +0 -0
  783. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_interactive_token_attribution.py +0 -0
  784. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_interactive_worktree.py +0 -0
  785. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_invariant_alarms.py +0 -0
  786. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_issue_store_seam.py +0 -0
  787. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_issues_sync_status.py +0 -0
  788. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_key_spec.py +0 -0
  789. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_liveness_auditor.py +0 -0
  790. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_liveness_notify.py +0 -0
  791. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_lock_contention_ratchet.py +0 -0
  792. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_mac_native_driver.py +0 -0
  793. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_machine_fault.py +0 -0
  794. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_machine_metrics.py +0 -0
  795. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_machine_onboard.py +0 -0
  796. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_machine_pause.py +0 -0
  797. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_machine_stats.py +0 -0
  798. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_merge_verification.py +0 -0
  799. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_merge_verify.py +0 -0
  800. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_milestone_chat.py +0 -0
  801. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_milestone_dispatch.py +0 -0
  802. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_milestone_gate.py +0 -0
  803. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_milestone_order.py +0 -0
  804. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_milestone_seam.py +0 -0
  805. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_mock_author.py +0 -0
  806. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_model_tiering.py +0 -0
  807. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_models.py +0 -0
  808. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_models_config_labels.py +0 -0
  809. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_models_pinned_1650.py +0 -0
  810. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_native_fs_wait.py +0 -0
  811. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_native_pixels.py +0 -0
  812. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_needs_attention.py +0 -0
  813. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_network.py +0 -0
  814. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_new_issue_chat.py +0 -0
  815. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_next_release_tag.py +0 -0
  816. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_nightly_runner.py +0 -0
  817. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_nightly_smoke.py +0 -0
  818. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_nightly_status.py +0 -0
  819. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_nightly_store.py +0 -0
  820. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_no_eligible_host_3600.py +0 -0
  821. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_node_shim.py +0 -0
  822. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_notifier_baseline.py +0 -0
  823. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_notifier_cli.py +0 -0
  824. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_notifier_collect.py +0 -0
  825. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_notifier_config.py +0 -0
  826. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_notifier_drive_seam.py +0 -0
  827. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_notifier_isolation.py +0 -0
  828. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_notifier_predicate.py +0 -0
  829. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_notifier_quiet_hours.py +0 -0
  830. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_notifier_service.py +0 -0
  831. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_notify.py +0 -0
  832. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_notify_drain.py +0 -0
  833. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_openapi.py +0 -0
  834. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_operational_defaults.py +0 -0
  835. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_overlap_fence.py +0 -0
  836. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_overlap_predict.py +0 -0
  837. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_packaged_deploy_units.py +0 -0
  838. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_parentage.py +0 -0
  839. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_paste_landed.py +0 -0
  840. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  841. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_pipeline.py +0 -0
  842. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_plain_runner_smoke_3673.py +0 -0
  843. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_plan_followup_approve_plan_command.py +0 -0
  844. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_plan_followup_pr_command.py +0 -0
  845. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_plan_followup_review_command.py +0 -0
  846. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_plan_only.py +0 -0
  847. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_plan_parser.py +0 -0
  848. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_platform_paths.py +0 -0
  849. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_portal_bridge.py +0 -0
  850. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_portal_config.py +0 -0
  851. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_portal_store.py +0 -0
  852. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_portal_sync.py +0 -0
  853. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_pr_body_lint.py +0 -0
  854. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_prereqs.py +0 -0
  855. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_prereview_gate.py +0 -0
  856. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_production_db_guard.py +0 -0
  857. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_progress.py +0 -0
  858. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_provider_seam.py +0 -0
  859. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_providers.py +0 -0
  860. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_providers_config_labels.py +0 -0
  861. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_providers_pty.py +0 -0
  862. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_provision_core.py +0 -0
  863. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_provision_machine.py +0 -0
  864. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_py_rust_mirror_inventory.py +0 -0
  865. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_quiet_hours.py +0 -0
  866. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_quiet_hours_store_2146.py +0 -0
  867. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_reap_merged_sessions.py +0 -0
  868. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_reap_stale_interactive_tick.py +0 -0
  869. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_reconcile.py +0 -0
  870. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_reconcile_branch.py +0 -0
  871. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_reconcile_completions.py +0 -0
  872. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  873. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_reconcile_merges.py +0 -0
  874. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_reconcile_no_agent_record.py +0 -0
  875. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_reconcile_tick.py +0 -0
  876. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_reconcile_usage_limit_done.py +0 -0
  877. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_refine_chat.py +0 -0
  878. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_release_cordon_2101.py +0 -0
  879. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  880. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_release_cordon_deadlock_2240.py +0 -0
  881. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  882. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_release_cordon_stuck_2490.py +0 -0
  883. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_release_gate.py +0 -0
  884. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_release_propagate.py +0 -0
  885. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_release_propagate_threshold.py +0 -0
  886. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_release_roll_between_legs_2854.py +0 -0
  887. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_release_roll_window_handoff.py +0 -0
  888. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_release_unified_1242.py +0 -0
  889. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_release_verify.py +0 -0
  890. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_release_window.py +0 -0
  891. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_remote_auto_prune.py +0 -0
  892. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_remote_interactive_reaper.py +0 -0
  893. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_repo_add.py +0 -0
  894. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_repo_dormancy.py +0 -0
  895. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_repo_edit_2220.py +0 -0
  896. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_repo_graph_fleet_2237.py +0 -0
  897. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_repo_max_parallel_3423.py +0 -0
  898. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_repo_onboard_2220.py +0 -0
  899. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_report_public_export.py +0 -0
  900. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_report_result_push.py +0 -0
  901. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_reports.py +0 -0
  902. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_restart_cmd.py +0 -0
  903. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_retry.py +0 -0
  904. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_retry_advisory_1606.py +0 -0
  905. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_retry_escalation_classify_3360.py +0 -0
  906. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_retry_type_1636.py +0 -0
  907. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_revalidate.py +0 -0
  908. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_review_end_review_without_verdict.py +0 -0
  909. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_review_parse_failure_diagnostic.py +0 -0
  910. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_review_reaffirm.py +0 -0
  911. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_review_state.py +0 -0
  912. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_review_verdict_backstop.py +0 -0
  913. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_review_verdict_override_audit.py +0 -0
  914. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_review_verdict_relay.py +0 -0
  915. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_review_zero_commits.py +0 -0
  916. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_scoped_review_wiring.py +0 -0
  917. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_scorecard.py +0 -0
  918. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_self_health.py +0 -0
  919. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_serve.py +0 -0
  920. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_serve_app.py +0 -0
  921. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_serve_app_board_trim.py +0 -0
  922. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_serve_rest_routes.py +0 -0
  923. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_session.py +0 -0
  924. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_slice_issue_attribution.py +0 -0
  925. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_smoke.py +0 -0
  926. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  927. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_smoke_live_checkout_restore.py +0 -0
  928. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_smoke_plain_runner_3673.py +0 -0
  929. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_smoke_workflow.py +0 -0
  930. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_spend_ceiling.py +0 -0
  931. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_spend_ceiling_coordinator.py +0 -0
  932. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_split.py +0 -0
  933. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_split_work.py +0 -0
  934. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_sql_dialect.py +0 -0
  935. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_sqlite_connect_ratchet.py +0 -0
  936. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_stage_projection.py +0 -0
  937. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_stale_busy_reviewer_697.py +0 -0
  938. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_stalled_pipeline.py +0 -0
  939. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_state.py +0 -0
  940. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_state_review_findings_daemon.py +0 -0
  941. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_status_fleet_footer.py +0 -0
  942. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_stop_1567.py +0 -0
  943. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_store_contract.py +0 -0
  944. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_store_migrate.py +0 -0
  945. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_stuck.py +0 -0
  946. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  947. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_terminal_command.py +0 -0
  948. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_test_author.py +0 -0
  949. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_test_chat.py +0 -0
  950. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_test_orchestrator.py +0 -0
  951. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_test_report.py +0 -0
  952. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_test_verdict_parsing.py +0 -0
  953. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_test_verdict_transcript_floor.py +0 -0
  954. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_text_io_encoding_audit.py +0 -0
  955. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_thin_client_board_audit.py +0 -0
  956. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_thin_client_config_load_1080.py +0 -0
  957. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_thin_client_daemon_routing_906.py +0 -0
  958. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_throwaway_vm.py +0 -0
  959. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_tmux_host.py +0 -0
  960. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_tmux_session.py +0 -0
  961. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_transcript_floor.py +0 -0
  962. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_tui_pty_driver.py +0 -0
  963. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_uat_checks.py +0 -0
  964. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_upstream_gaps.py +0 -0
  965. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_usage.py +0 -0
  966. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_usage_limits.py +0 -0
  967. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_usage_rollup.py +0 -0
  968. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_venv_live_install_2121.py +0 -0
  969. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_version_single_source.py +0 -0
  970. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_watch.py +0 -0
  971. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_win_native_bridge.py +0 -0
  972. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_win_native_driver.py +0 -0
  973. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  974. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_worker_env_venv_isolation.py +0 -0
  975. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_worker_events.py +0 -0
  976. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_worker_image_pin_sync.py +0 -0
  977. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_worker_safety.py +0 -0
  978. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_worker_test_scoping.py +0 -0
  979. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_worktree.py +0 -0
  980. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  981. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/tests/test_write_parity.py +0 -0
  982. {code_coordinator-0.5.659 → code_coordinator-0.5.661}/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.659
3
+ Version: 0.5.661
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.659
3
+ Version: 0.5.661
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
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.5.661",
3
+ "distance": 0,
4
+ "node": "g1152ba357daaa2b42b64f3ba32ee103d459ff668",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-10-22"
8
+ }
@@ -2114,7 +2114,12 @@ def merge(
2114
2114
  # #1477: re-test any parked CONFLICT entry before resolving
2115
2115
  # --only — a branch repaired since the last tick should be eligible
2116
2116
  # for --only the moment it's clean, not only after a manual --drop.
2117
+ # Keep the events so the --override-human-required check below can
2118
+ # tell "already HUMAN_REQUIRED" apart from "just auto-cleared by this
2119
+ # same reconcile pass" instead of treating the latter as a usage error.
2120
+ _reconciled_assignment_ids = set()
2117
2121
  for _ev in mq.reconcile_conflict_entries(gh_ops):
2122
+ _reconciled_assignment_ids.add(_ev.entry.assignment_id)
2118
2123
  click.echo(
2119
2124
  f" {_ev.entry.repo_name} #{_ev.entry.issue_number} "
2120
2125
  f"({_ev.entry.branch}): {_ev.kind} — {_ev.message}"
@@ -2173,49 +2178,63 @@ def merge(
2173
2178
  # so it gets its own flag, its own validation, and its own audit
2174
2179
  # row, never bundled into --force-merge.
2175
2180
  if override_human_required:
2181
+ _override_already_moot = False
2176
2182
  if only_entry.state != HUMAN_REQUIRED:
2177
- click.echo(
2178
- "error: --override-human-required only applies to a "
2179
- f"HUMAN_REQUIRED entry; {only_assignment!r} is in state "
2180
- f"{only_entry.state!r}",
2181
- err=True,
2182
- )
2183
- sys.exit(1)
2184
- if dry_run:
2185
- click.echo(
2186
- " --override-human-required: (dry run) would clear "
2187
- f"HUMAN_REQUIRED on {only_assignment!r} — "
2188
- f"{override_human_required!r}"
2189
- )
2190
- else:
2191
- from coord.audit import record_audit # noqa: PLC0415
2192
-
2193
- record_audit(
2194
- tier="business",
2195
- category="merge",
2196
- event_type="human_required_override",
2197
- actor="user",
2198
- summary=(
2199
- f"human_required override: {only_entry.repo_name}"
2200
- f"#{only_entry.issue_number} ({only_assignment}) — "
2201
- f"{override_human_required}"
2202
- ),
2203
- repo=only_entry.repo_name,
2204
- issue=only_entry.issue_number,
2205
- assignment_id=only_entry.assignment_id,
2206
- details={"reason": override_human_required},
2207
- )
2208
- click.echo(
2209
- " --override-human-required: cleared HUMAN_REQUIRED on "
2210
- f"{only_assignment!r} — {override_human_required!r} — "
2211
- "requeued as PENDING"
2212
- )
2213
- # Reset in-memory state either way so the dry-run event stream
2214
- # below reflects what a real run would do (matching the review/
2215
- # smoke gate dry-run convention); actual persistence is still
2216
- # gated on `not dry_run` in the save block further down.
2217
- only_entry.state = PENDING
2218
- only_entry.error = None
2183
+ if only_entry.assignment_id in _reconciled_assignment_ids:
2184
+ # The reconcile pass just above this already found the
2185
+ # PR mergeable again and cleared the latch itself — the
2186
+ # override the operator asked for is moot, not an error.
2187
+ _override_already_moot = True
2188
+ click.echo(
2189
+ " --override-human-required: not needed — "
2190
+ f"{only_assignment!r} was already auto-cleared to "
2191
+ f"{only_entry.state!r} by the conflict reconcile pass"
2192
+ )
2193
+ else:
2194
+ click.echo(
2195
+ "error: --override-human-required only applies to a "
2196
+ f"HUMAN_REQUIRED entry; {only_assignment!r} is in state "
2197
+ f"{only_entry.state!r}",
2198
+ err=True,
2199
+ )
2200
+ sys.exit(1)
2201
+ if not _override_already_moot:
2202
+ if dry_run:
2203
+ click.echo(
2204
+ " --override-human-required: (dry run) would clear "
2205
+ f"HUMAN_REQUIRED on {only_assignment!r} — "
2206
+ f"{override_human_required!r}"
2207
+ )
2208
+ else:
2209
+ from coord.audit import record_audit # noqa: PLC0415
2210
+
2211
+ record_audit(
2212
+ tier="business",
2213
+ category="merge",
2214
+ event_type="human_required_override",
2215
+ actor="user",
2216
+ summary=(
2217
+ f"human_required override: {only_entry.repo_name}"
2218
+ f"#{only_entry.issue_number} ({only_assignment}) — "
2219
+ f"{override_human_required}"
2220
+ ),
2221
+ repo=only_entry.repo_name,
2222
+ issue=only_entry.issue_number,
2223
+ assignment_id=only_entry.assignment_id,
2224
+ details={"reason": override_human_required},
2225
+ )
2226
+ click.echo(
2227
+ " --override-human-required: cleared HUMAN_REQUIRED on "
2228
+ f"{only_assignment!r} — {override_human_required!r} — "
2229
+ "requeued as PENDING"
2230
+ )
2231
+ # Reset in-memory state either way so the dry-run event
2232
+ # stream below reflects what a real run would do (matching
2233
+ # the review/smoke gate dry-run convention); actual
2234
+ # persistence is still gated on `not dry_run` in the save
2235
+ # block further down.
2236
+ only_entry.state = PENDING
2237
+ only_entry.error = None
2219
2238
  # #2157: MERGED is the one non-PENDING state that is not a failure.
2220
2239
  # An exit code reports whether the CALLER's postcondition holds, and
2221
2240
  # for `--only <aid>` that postcondition is "aid's branch is on the
@@ -703,6 +703,15 @@ def has_approved_review(
703
703
  :func:`_backfill_branch_patch_id`'s on-demand network fetch, and a
704
704
  caller must opt into *that* I/O independently of this one.
705
705
 
706
+ #3749: a third, independent escape hatch shares *ancillary_gh_ops*
707
+ with the one above rather than *gh_ops* — see
708
+ :func:`_review_delta_is_context_only`. A SHA mismatch whose base-relative
709
+ diff changed only in context lines (a rebase, a zero-conflict
710
+ base-merge) also still covers the current head, for ANY file, not just
711
+ a configured ancillary set. It activates behind the same opt-in as the
712
+ #3707 check on purpose: a caller must not be able to enable one
713
+ base-relative-diff check without the other.
714
+
706
715
  *config*, when supplied, resolves *ancillary_files*/*ancillary_gh_ops*
707
716
  automatically via :func:`_resolve_ancillary_config` — pass the live
708
717
  ``Config`` instead of resolving ``config.repo(entry.repo_name)
@@ -744,10 +753,24 @@ def scan_approved_reviews(
744
753
  caller of this scan must answer the ancillary-rebase question the same
745
754
  way (#2096), so prefer passing *config* over leaving a call site on the
746
755
  pre-#3707 default of "never exempt".
756
+
757
+ #3749: *ancillary_gh_ops* also gates a second, independent
758
+ base-relative-diff check — see :func:`_review_delta_is_context_only` —
759
+ that covers a patch-id mismatch produced by context-line churn alone
760
+ (a rebase, a zero-conflict base-merge), for any file. It deliberately
761
+ shares *ancillary_gh_ops* rather than the raw *gh_ops* parameter so a
762
+ caller can never opt into one base-relative-diff check without the
763
+ other.
747
764
  """
748
765
  ancillary_files, ancillary_gh_ops = _resolve_ancillary_config(
749
766
  entry, gh_ops, config, ancillary_files, ancillary_gh_ops
750
767
  )
768
+ # #3749: shared across every _review_delta_is_ancillary_only/
769
+ # _review_delta_is_context_only call this scan makes — both check the
770
+ # exact same (repo, base_branch, sha) compare, and current_sha is the
771
+ # same across every pool entry too, so a single dict spanning the whole
772
+ # scan avoids a repeat `gh api compare` round trip per loop iteration.
773
+ diff_cache: dict[tuple[str, str, str], str | None] = {}
751
774
  pool = list(getattr(board, "completed", []) or []) + list(getattr(board, "active", []) or [])
752
775
 
753
776
  branch_work_ids = _chain_work_ids(entry, pool)
@@ -824,11 +847,31 @@ def scan_approved_reviews(
824
847
  getattr(entry, "target_branch", None),
825
848
  review_sha,
826
849
  current_sha,
850
+ diff_cache,
827
851
  ):
828
852
  # #3707: the rebase delta is confined to ancillary paths
829
853
  # (CHANGELOG.md/README.md, per repo config) — approval
830
854
  # still covers it, same as a content-identical patch-id.
831
855
  return ApprovalScan(approved=True, unknown_head=False, review_assignment=a)
856
+ if current_sha is not None and _review_delta_is_context_only(
857
+ ancillary_gh_ops,
858
+ getattr(entry, "repo_github", None),
859
+ getattr(entry, "target_branch", None),
860
+ review_sha,
861
+ current_sha,
862
+ diff_cache,
863
+ ):
864
+ # #3749: the patch-id changed only because upstream churn
865
+ # shifted the diff's context lines (a rebase, a
866
+ # zero-conflict base-merge) — the reviewed hunks' own
867
+ # content is byte-identical, so the approval still covers
868
+ # the current head. No ancillary-files allow-list gates
869
+ # this (unlike the check above, it's sound for any file),
870
+ # but it shares that check's *gh_ops* argument on purpose:
871
+ # both base-relative-diff checks must activate behind the
872
+ # SAME explicit per-call opt-in, so a caller that only
873
+ # intends to opt into one never silently gets the other.
874
+ return ApprovalScan(approved=True, unknown_head=False, review_assignment=a)
832
875
  if current_sha is None:
833
876
  # Refused because we don't KNOW the head, not because we
834
877
  # checked and it moved. Same (closed) gate verdict, but a
@@ -890,6 +933,11 @@ def find_scoped_review_candidate(
890
933
  — :func:`has_approved_review` already carries THAT forward too, via
891
934
  the same :func:`_review_delta_is_ancillary_only` check, so there is
892
935
  nothing left to scope a review around either.
936
+ - The delta since that review changed only the diff's context lines,
937
+ not the reviewed hunks' own content (#3749: a rebase, a zero-conflict
938
+ base-merge) — :func:`has_approved_review` already carries THAT
939
+ forward too, via the same :func:`_review_delta_is_context_only`
940
+ check, so there is nothing left to scope a review around either.
893
941
  - Either patch-id is missing (fail closed, same posture as
894
942
  ``has_approved_review``: an unconfirmable diff gets a full review,
895
943
  never a guessed-at scoped one) — unless the ancillary-only check
@@ -898,6 +946,9 @@ def find_scoped_review_candidate(
898
946
  ancillary_files, ancillary_gh_ops = _resolve_ancillary_config(
899
947
  entry, gh_ops, config, ancillary_files, ancillary_gh_ops
900
948
  )
949
+ # #3749: see the identical cache in `scan_approved_reviews` — shared
950
+ # across every ancillary-only/context-only compare this walk makes.
951
+ diff_cache: dict[tuple[str, str, str], str | None] = {}
901
952
  pool = list(getattr(board, "completed", []) or []) + list(getattr(board, "active", []) or [])
902
953
  branch_work_ids = _chain_work_ids(entry, pool)
903
954
  if not branch_work_ids:
@@ -937,8 +988,18 @@ def find_scoped_review_candidate(
937
988
  getattr(entry, "target_branch", None),
938
989
  review_sha,
939
990
  current_sha,
991
+ diff_cache,
940
992
  ):
941
993
  continue # #3707: ancillary-only delta — has_approved_review already covers it
994
+ if _review_delta_is_context_only(
995
+ ancillary_gh_ops,
996
+ getattr(entry, "repo_github", None),
997
+ getattr(entry, "target_branch", None),
998
+ review_sha,
999
+ current_sha,
1000
+ diff_cache,
1001
+ ):
1002
+ continue # #3749: context-only delta — has_approved_review already covers it
942
1003
  if review_patch_id is None:
943
1004
  continue # fail closed — cannot confirm scope, full review
944
1005
  return a # approval voided ONLY by a content-changing rebase
@@ -2339,6 +2400,7 @@ def _fetch_compare_diff(
2339
2400
  repo_github: str | None,
2340
2401
  base_sha: str | None,
2341
2402
  head_sha: str | None,
2403
+ cache: dict[tuple[str, str, str], str | None] | None = None,
2342
2404
  ) -> str | None:
2343
2405
  """Fetch the unified diff TEXT for one ``get_compare_diff(base_sha,
2344
2406
  head_sha)`` compare, failing closed to ``None`` (never raising) exactly
@@ -2351,13 +2413,28 @@ def _fetch_compare_diff(
2351
2413
  needs the text to tell "this file's content didn't change between the
2352
2414
  two base-relative compares" apart from "this file isn't touched by
2353
2415
  either compare", which a file-name list alone can't distinguish.
2416
+
2417
+ *cache*, when supplied, is a plain dict keyed by ``(repo_github,
2418
+ base_sha, head_sha)`` that the caller owns and reuses across sibling
2419
+ calls within one scan — :func:`_review_delta_is_ancillary_only` and
2420
+ :func:`_review_delta_is_context_only` fetch the exact same two
2421
+ base-relative compares, so a caller that runs both back-to-back (every
2422
+ "is this approved?" surface does, per #3749) would otherwise make the
2423
+ same ``gh api compare`` round trip twice. ``None`` (the default) keeps
2424
+ this an uncached, standalone fetch.
2354
2425
  """
2355
2426
  if gh_ops is None or not repo_github or not base_sha or not head_sha:
2356
2427
  return None
2428
+ key = (repo_github, base_sha, head_sha)
2429
+ if cache is not None and key in cache:
2430
+ return cache[key]
2357
2431
  try:
2358
- return gh_ops.get_compare_diff(repo_github, base_sha, head_sha)
2432
+ result = gh_ops.get_compare_diff(repo_github, base_sha, head_sha)
2359
2433
  except Exception: # noqa: BLE001 — fail-safe: unknown diff is not "ancillary-only"
2360
- return None
2434
+ result = None
2435
+ if cache is not None:
2436
+ cache[key] = result
2437
+ return result
2361
2438
 
2362
2439
 
2363
2440
  _DIFF_GIT_HEADER_RE = re.compile(r"^diff --git a/(.*) b/(.*)$")
@@ -2400,6 +2477,7 @@ def _review_delta_is_ancillary_only(
2400
2477
  base_branch: str | None,
2401
2478
  review_sha: str | None,
2402
2479
  current_sha: str | None,
2480
+ diff_cache: dict[tuple[str, str, str], str | None] | None = None,
2403
2481
  ) -> bool:
2404
2482
  """True when every file that changed between *review_sha* (the SHA an
2405
2483
  existing ``approve``d review covered) and *current_sha* (the branch's
@@ -2439,11 +2517,16 @@ def _review_delta_is_ancillary_only(
2439
2517
  :func:`_backfill_branch_patch_id` — callers that want this check active
2440
2518
  must opt in explicitly, so a caller that only wants patch-id backfill
2441
2519
  (or neither) sees no behavior change.
2520
+
2521
+ *diff_cache*, when supplied, is forwarded to :func:`_fetch_compare_diff`
2522
+ so a caller that also runs :func:`_review_delta_is_context_only` for the
2523
+ same *review_sha*/*current_sha* pair reuses the fetch instead of hitting
2524
+ ``gh api compare`` twice (#3749).
2442
2525
  """
2443
2526
  if not ancillary_files or not base_branch:
2444
2527
  return False
2445
- review_diff = _fetch_compare_diff(gh_ops, repo_github, base_branch, review_sha)
2446
- current_diff = _fetch_compare_diff(gh_ops, repo_github, base_branch, current_sha)
2528
+ review_diff = _fetch_compare_diff(gh_ops, repo_github, base_branch, review_sha, diff_cache)
2529
+ current_diff = _fetch_compare_diff(gh_ops, repo_github, base_branch, current_sha, diff_cache)
2447
2530
  if review_diff is None or current_diff is None:
2448
2531
  return False
2449
2532
  review_blocks = _diff_blocks_by_path(review_diff)
@@ -2464,6 +2547,141 @@ def _review_delta_is_ancillary_only(
2464
2547
  return _files_are_ancillary(sorted(changed_paths), ancillary_files)
2465
2548
 
2466
2549
 
2550
+ def _content_lines_only(block: str) -> list[str]:
2551
+ """Reduce *block* (one file's unified-diff text) to just its added/
2552
+ removed content lines, in order — dropping the ``diff --git``/``index``/
2553
+ ``---``/``+++``/mode/rename header region, the ``@@`` hunk markers
2554
+ themselves, and unchanged context lines.
2555
+
2556
+ Tracks hunk state rather than prefix-matching every line in the block:
2557
+ everything before the first ``@@`` is header (``diff --git``, ``index``,
2558
+ the ``--- a/X`` / ``+++ b/X`` file markers, ``old mode``/``new mode``,
2559
+ ``rename from``/``rename to``), never real content, however it's
2560
+ spelled; everything at or after the first ``@@`` is hunk body, where a
2561
+ line starting with ``+``/``-`` is real added/removed content REGARDLESS
2562
+ of what follows that first character. A naive ``line.startswith("---")``
2563
+ skip would also swallow a genuinely removed line whose content happens
2564
+ to start with ``--`` (a SQL/Lua/Haskell comment, a YAML/Markdown rule,
2565
+ a shell ``--flag \\`` continuation) — this walk never makes that
2566
+ mistake, because it only treats ``---``/``+++`` as header while still in
2567
+ the header region.
2568
+
2569
+ #3749: a diff's context lines shift whenever the base branch changes
2570
+ nearby — a pure rebase, a zero-conflict merge of an advanced base, an
2571
+ unrelated commit landing a few lines above the reviewed hunk — even
2572
+ though the reviewed hunk's own added/removed content is byte-identical.
2573
+ ``git patch-id`` (:func:`coord.github_ops.compute_patch_id`) hashes
2574
+ those context lines too, so this kind of mechanical churn can still
2575
+ flip the patch-id and void an approval that covers unchanged content.
2576
+ Comparing only the ``+``/``-`` lines is intentionally looser than
2577
+ patch-id, checking only that no hunk INSERTED, REMOVED, or REORDERED a
2578
+ real line — it cannot see hunk *position* (the dropped ``@@`` header
2579
+ means two identical lines deleted at different places in the same file
2580
+ compare equal), so it is not a full statement of "nothing a reviewer
2581
+ cares about changed", only of the narrower thing it actually checks.
2582
+ """
2583
+ out: list[str] = []
2584
+ in_hunk = False
2585
+ for line in block.splitlines():
2586
+ if line.startswith("@@"):
2587
+ in_hunk = True
2588
+ continue
2589
+ if not in_hunk:
2590
+ continue # file-identity header region — never content
2591
+ if line.startswith(("+", "-")):
2592
+ out.append(line)
2593
+ return out
2594
+
2595
+
2596
+ def _review_delta_is_context_only(
2597
+ gh_ops: "GhOps | None",
2598
+ repo_github: str | None,
2599
+ base_branch: str | None,
2600
+ review_sha: str | None,
2601
+ current_sha: str | None,
2602
+ diff_cache: dict[tuple[str, str, str], str | None] | None = None,
2603
+ ) -> bool:
2604
+ """True when every file that changed between *review_sha* (what an
2605
+ existing ``approve``d review covered) and *current_sha* (the branch's
2606
+ current head) changed ONLY in diff context — the reviewed hunks'
2607
+ actual added/removed lines are byte-identical, and what moved is purely
2608
+ the unchanged lines around them (#3749: a pure rebase, a zero-conflict
2609
+ base-merge, upstream churn landing near but not inside the reviewed
2610
+ diff). :func:`_review_delta_is_ancillary_only`'s patch-id carry-forward
2611
+ (via ``scan_approved_reviews``'s own #1475 comparison) already catches
2612
+ the case where context happens to be untouched too — this is the
2613
+ fallback for when the base moving shifted it, since ``git patch-id``
2614
+ hashes context lines and so cannot tell the two apart.
2615
+
2616
+ Mirrors :func:`_review_delta_is_ancillary_only`'s approach of anchoring
2617
+ both compares at *base_branch* (never diffing *review_sha* against
2618
+ *current_sha* directly — after a rebase neither is an ancestor of the
2619
+ other) and splitting each into per-file blocks via
2620
+ :func:`_diff_blocks_by_path`. Unlike that function, no
2621
+ *ancillary_files* allow-list gates this — a context-only delta is safe
2622
+ to carry forward for ANY file, not just a configured ancillary set.
2623
+ *gh_ops* here is deliberately the caller's resolved ``ancillary_gh_ops``
2624
+ (never a raw, unconditionally-available ``gh_ops``) so this check is
2625
+ gated behind the SAME explicit per-call opt-in as #3707 — every one of
2626
+ this module's "is this approved?" surfaces must activate (or not
2627
+ activate) both base-relative-diff checks together, never just one: the
2628
+ merge gate and `coord/review.py`'s scoped-review dispatch answering
2629
+ this question differently permanently wedges the queue row.
2630
+
2631
+ Fails closed to ``False`` when *base_branch*/*gh_ops*/*repo_github*/
2632
+ either SHA is missing, either compare call raises or returns ``None``,
2633
+ every per-file block compares byte-identical between the two diffs
2634
+ (which includes both diffs being completely empty — mirrors
2635
+ :func:`_review_delta_is_ancillary_only`'s empty-changed-path case:
2636
+ byte-identical base-relative diffs cannot produce two different
2637
+ patch-ids, so reaching this function at all with nothing differing
2638
+ means a patch-id read upstream was wrong, not that this is a genuine
2639
+ no-op the patch-id check somehow missed), a differing block yields no
2640
+ ``+``/``-`` content lines on EITHER side (a binary-file change, an
2641
+ ``old mode``/``new mode`` permission flip, or an empty-file add/delete
2642
+ — the block differs, but there is no positive evidence of what changed,
2643
+ only the absence of an observed hunk, which is not the same thing), or
2644
+ any changed path's content-only lines differ between the two diffs.
2645
+
2646
+ *diff_cache*, when supplied, is forwarded to :func:`_fetch_compare_diff`
2647
+ so a caller that also runs :func:`_review_delta_is_ancillary_only` for
2648
+ the same *review_sha*/*current_sha* pair reuses that fetch instead of
2649
+ hitting ``gh api compare`` twice for the exact same compare.
2650
+ """
2651
+ if not base_branch:
2652
+ # Short-circuit, not a second safety net: `_fetch_compare_diff`
2653
+ # itself fails closed on a missing base, so this only spares the two
2654
+ # calls (and keeps the no-base case readable here).
2655
+ return False
2656
+ review_diff = _fetch_compare_diff(gh_ops, repo_github, base_branch, review_sha, diff_cache)
2657
+ current_diff = _fetch_compare_diff(gh_ops, repo_github, base_branch, current_sha, diff_cache)
2658
+ if review_diff is None or current_diff is None:
2659
+ return False
2660
+ review_blocks = _diff_blocks_by_path(review_diff)
2661
+ current_blocks = _diff_blocks_by_path(current_diff)
2662
+ any_block_differed = False
2663
+ for path in set(review_blocks) | set(current_blocks):
2664
+ before = review_blocks.get(path, "")
2665
+ after = current_blocks.get(path, "")
2666
+ if before == after:
2667
+ continue # byte-identical block — not even a context shift
2668
+ any_block_differed = True
2669
+ before_content = _content_lines_only(before)
2670
+ after_content = _content_lines_only(after)
2671
+ if not before_content and not after_content:
2672
+ # The block differs but neither side has a `+`/`-` hunk line to
2673
+ # compare — a binary blob, a mode-only change, or an
2674
+ # empty-file add/delete. Absence of an observed content line
2675
+ # is not evidence the content is unchanged.
2676
+ return False
2677
+ if before_content != after_content:
2678
+ return False
2679
+ # Nothing differed at all: byte-identical base-relative diffs cannot
2680
+ # produce two different patch-ids, so a patch-id read upstream of this
2681
+ # call was wrong rather than this being a genuine no-op. Fail closed.
2682
+ return any_block_differed
2683
+
2684
+
2467
2685
  # #1851: the reason string prefix `_entry_gate_status` returns for a CI-stale
2468
2686
  # entry. Both the wording and the eligibility check in
2469
2687
  # :func:`ci_revalidation_candidates` key off this constant so the two can
@@ -5545,21 +5763,69 @@ def refresh_entry_assignment(
5545
5763
 
5546
5764
  # ── Stale-conflict reconciliation (#1477) ───────────────────────────────────
5547
5765
 
5766
+ # A HUMAN_REQUIRED entry's `error` is not always the pristine original
5767
+ # conflict message: `coord.reconcile`'s conflict-fix completion hook builds
5768
+ # several of its own escalation messages as `f"{existing_error}; ..."`,
5769
+ # prefixing a fresh explanation onto whatever was already there rather than
5770
+ # replacing it. `classify_conflict` only pattern-matches wording, so a
5771
+ # message carrying one of these prefixes can still contain a `_REBASEABLE_
5772
+ # SIGNALS` phrase from the ORIGINAL conflict text and classify as
5773
+ # "rebaseable" even though the actual latch reason has nothing to do with
5774
+ # mergeability (the branch's content already landed elsewhere, a worker was
5775
+ # killed by a usage-limit reset, a reword was refused as non-content-
5776
+ # preserving, or an escalation attempt itself could not be dispatched).
5777
+ # These phrases are the ones `reconcile_conflict_entries` must still
5778
+ # recognize and refuse to unpark, even when `classify_conflict` disagrees.
5779
+ _NON_MERGEABILITY_HUMAN_REQUIRED_SIGNALS = (
5780
+ "not a real conflict", # usage-limit kill — never was a conflict
5781
+ "nothing to merge", # already-upstream — content already landed elsewhere
5782
+ "manual reword required", # reword worker declined a non-content-preserving rewrite
5783
+ "escalation could not be dispatched", # ordinary conflict-fix escalation itself declined
5784
+ )
5785
+
5786
+
5787
+ def _is_non_mergeability_human_latch(error: str | None) -> bool:
5788
+ """True when ``error`` carries a known non-mergeability escalation
5789
+ phrase, even though it may also contain conflict wording from a
5790
+ prefixed original message (see ``_NON_MERGEABILITY_HUMAN_REQUIRED_
5791
+ SIGNALS`` above).
5792
+ """
5793
+ if not error:
5794
+ return False
5795
+ text = error.lower()
5796
+ return any(sig in text for sig in _NON_MERGEABILITY_HUMAN_REQUIRED_SIGNALS)
5797
+
5798
+
5548
5799
  def reconcile_conflict_entries(gh_ops: "GhOps") -> list["MergeEvent"]:
5549
- """Re-test every ``CONFLICT`` entry's mergeability and clear stale verdicts.
5800
+ """Re-test stale conflict verdicts (``CONFLICT``, and retry-cap-latched
5801
+ ``HUMAN_REQUIRED``) against live mergeability and clear them when stale.
5550
5802
 
5551
5803
  A ``CONFLICT`` entry caches the ``gh pr merge`` failure message from
5552
5804
  whenever the queue last attempted it, and ``process()`` never looks at it
5553
5805
  again — it only ever iterates ``PENDING`` entries. When a conflict-fix
5554
- worker (#241) lands a rebase, or a human pushes a fix by hand, the branch
5806
+ worker lands a rebase, or a human pushes a fix by hand, the branch
5555
5807
  becomes clean but the entry sits parked on the old verdict forever,
5556
- requiring the three-step manual incantation described in #1477
5557
- (``--drop`` → a bare re-enqueue → ``--only``) to notice.
5558
-
5559
- This re-tests GitHub's own mergeability computation for every
5560
- ``CONFLICT`` entry that has an open PR and, when it now reports clean,
5561
- returns the entry to ``PENDING`` and clears the stored error so it
5562
- re-enters the ordinary merge flow on this tick — no manual archaeology.
5808
+ requiring a manual ``--drop`` → re-enqueue → ``--only`` incantation to
5809
+ notice.
5810
+
5811
+ The same staleness bites a ``HUMAN_REQUIRED`` entry escalated after a
5812
+ conflict-fix retry-cap hit: if the branch was rebased or the conflict
5813
+ resolved by hand afterwards (e.g. a develop merge that happened to land
5814
+ after the latch), the cached error is now pure archaeology and nothing
5815
+ else re-checks it — a clean, approved branch stays blocked until a
5816
+ manual ``--override-human-required``. Eligibility here requires BOTH
5817
+ that :func:`classify_conflict` reads the message as ``"rebaseable"``
5818
+ AND that it does not carry one of the ``_NON_MERGEABILITY_HUMAN_
5819
+ REQUIRED_SIGNALS`` phrases — a permission/protection latch
5820
+ (``classify_conflict(...) == "human"``), and any latch whose actual
5821
+ cause was never a mergeability question in the first place (content
5822
+ already upstream, a usage-limit kill, a declined reword, a declined
5823
+ escalation), are left untouched.
5824
+
5825
+ This re-tests GitHub's own mergeability computation for every eligible
5826
+ entry that has an open PR and, when it now reports clean, returns the
5827
+ entry to ``PENDING`` and clears the stored error so it re-enters the
5828
+ ordinary merge flow on this tick — no manual archaeology.
5563
5829
 
5564
5830
  Fail-closed by design: an entry with no PR yet, or whose mergeability
5565
5831
  can't be determined (``gh`` error, or GitHub still computing it — both
@@ -5594,7 +5860,22 @@ def reconcile_conflict_entries(gh_ops: "GhOps") -> list["MergeEvent"]:
5594
5860
  events: list[MergeEvent] = []
5595
5861
  changed = False
5596
5862
  for entry in items:
5597
- if entry.state != CONFLICT or not entry.pr_number:
5863
+ if not entry.pr_number:
5864
+ continue
5865
+ was_human_required = entry.state == HUMAN_REQUIRED
5866
+ if was_human_required:
5867
+ # Only a conflict-fix retry-cap latch is a mergeability
5868
+ # question — a permission/protection latch, or a latch whose
5869
+ # message merely contains leftover conflict wording from a
5870
+ # prefixed original error but was actually caused by something
5871
+ # re-checking `check_pr_mergeable` could never resolve, is left
5872
+ # alone.
5873
+ if (
5874
+ classify_conflict(entry.error) != "rebaseable"
5875
+ or _is_non_mergeability_human_latch(entry.error)
5876
+ ):
5877
+ continue
5878
+ elif entry.state != CONFLICT:
5598
5879
  continue
5599
5880
  try:
5600
5881
  mergeable = gh_ops.check_pr_mergeable(entry.repo_github, entry.pr_number)
@@ -5617,9 +5898,10 @@ def reconcile_conflict_entries(gh_ops: "GhOps") -> list["MergeEvent"]:
5617
5898
  entry.state = PENDING
5618
5899
  entry.error = None
5619
5900
  changed = True
5901
+ cleared_kind = "human_required latch" if was_human_required else "conflict"
5620
5902
  events.append(MergeEvent(
5621
5903
  entry, "reopened",
5622
- f"conflict cleared — PR #{entry.pr_number} ({entry.branch}) is "
5904
+ f"{cleared_kind} cleared — PR #{entry.pr_number} ({entry.branch}) is "
5623
5905
  "mergeable again, returned to pending",
5624
5906
  ))
5625
5907
  if changed:
@@ -6102,7 +6102,7 @@ def dispatch_scoped_reviews_for_queue(
6102
6102
  ancillary_files=ancillary_files,
6103
6103
  ancillary_gh_ops=github_ops,
6104
6104
  ):
6105
- continue # not stale, or a content-identical/ancillary-only rebase covers it (#1475/#3707)
6105
+ continue # not stale, or a content-identical/ancillary-only/context-only rebase covers it (#1475/#3707/#3749)
6106
6106
 
6107
6107
  prior_review = mq.find_scoped_review_candidate(
6108
6108
  entry,
@@ -6375,7 +6375,7 @@ def maybe_scoped_review_for_completed_fix(
6375
6375
  ancillary_files=ancillary_files,
6376
6376
  ancillary_gh_ops=github_ops,
6377
6377
  ):
6378
- return None # nothing stale to scope a review around — or an ancillary-only delta (#3707)
6378
+ return None # nothing stale to scope a review around — or an ancillary-only/context-only delta (#3707/#3749)
6379
6379
 
6380
6380
  prior_review = mq.find_scoped_review_candidate(
6381
6381
  entry,
@@ -1132,6 +1132,49 @@ class TestMergeOverrideHumanRequired:
1132
1132
  ).fetchall()
1133
1133
  assert rows == []
1134
1134
 
1135
+ def test_override_moot_when_reconcile_already_cleared_entry(
1136
+ self, config_file: Path, coord_dir: Path, coord_db,
1137
+ ) -> None:
1138
+ """`--only`'s own stale-conflict reconcile pass (#1477) runs before
1139
+ this validation and can itself unpark a HUMAN_REQUIRED retry-cap
1140
+ latch the moment GitHub reports the PR mergeable again. That is not
1141
+ a usage error — the override the operator asked for is simply no
1142
+ longer needed — so it must not be reported as one, and must not
1143
+ write a spurious `human_required_override` audit row for an
1144
+ override that never actually applied."""
1145
+ entry = mq.QueuedMerge(
1146
+ assignment_id="h1", repo_name="api", repo_github="acme/api",
1147
+ branch="worker/h1", target_branch="main", issue_number=1,
1148
+ issue_title="t", state=mq.HUMAN_REQUIRED, pr_number=900,
1149
+ error="gh pr merge 900 ... --rebase failed: not mergeable",
1150
+ )
1151
+ _seed_queue([entry])
1152
+
1153
+ def fake_merge(repo, number, method="rebase"):
1154
+ return True, "ok"
1155
+
1156
+ with patch("coord.github_ops.check_pr_mergeable", return_value=True), \
1157
+ patch("coord.github_ops.create_pr") as create, \
1158
+ patch("coord.github_ops.get_pr_size", return_value=10), \
1159
+ patch("coord.github_ops.merge_pr", side_effect=fake_merge):
1160
+ result = CliRunner().invoke(
1161
+ main,
1162
+ [
1163
+ "merge", "--config", str(config_file),
1164
+ "--only", "h1",
1165
+ "--override-human-required", "no longer needed",
1166
+ ],
1167
+ )
1168
+
1169
+ assert result.exit_code == 0, result.output
1170
+ assert "not needed" in result.output
1171
+ assert "cleared HUMAN_REQUIRED" not in result.output
1172
+
1173
+ rows = coord_db.execute(
1174
+ "SELECT * FROM audit_log WHERE event_type='human_required_override'"
1175
+ ).fetchall()
1176
+ assert rows == []
1177
+
1135
1178
  def test_override_dry_run_does_not_persist_or_audit(
1136
1179
  self, config_file: Path, coord_dir: Path, coord_db,
1137
1180
  ) -> None: