code-coordinator 0.5.531__tar.gz → 0.5.533__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 (914) hide show
  1. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. code_coordinator-0.5.533/code_coordinator.egg-info/scm_version.json +8 -0
  4. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/audit.py +73 -3
  5. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/lifecycle.py +58 -15
  6. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/config.py +82 -7
  7. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/drive.py +82 -10
  8. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/forge_availability.py +162 -75
  9. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/housekeeping.py +56 -7
  10. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/serve_app.py +46 -4
  11. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/sql.py +76 -0
  12. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_audit_log.py +95 -0
  13. code_coordinator-0.5.533/tests/test_config_audit.py +157 -0
  14. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_drive.py +137 -11
  15. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_forge_availability.py +175 -1
  16. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_github_ops.py +10 -0
  17. code_coordinator-0.5.533/tests/test_housekeeping.py +539 -0
  18. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_sql_dialect.py +84 -0
  19. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_sqlite_connect_ratchet.py +8 -2
  20. code_coordinator-0.5.531/code_coordinator.egg-info/scm_version.json +0 -8
  21. code_coordinator-0.5.531/tests/test_config_audit.py +0 -86
  22. code_coordinator-0.5.531/tests/test_housekeeping.py +0 -259
  23. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/.claude/commands/board.md +0 -0
  24. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/.claude/commands/complete-session.md +0 -0
  25. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/.claude/commands/coordinator.md +0 -0
  26. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/.githooks/_lib.sh +0 -0
  27. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/.githooks/post-checkout +0 -0
  28. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/.githooks/post-commit +0 -0
  29. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/.githooks/post-merge +0 -0
  30. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  31. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/.github/coord-ci-acceptance.yml +0 -0
  32. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/.github/workflows/auto-release.yml +0 -0
  33. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/.github/workflows/publish.yml +0 -0
  34. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/.github/workflows/test.yml +0 -0
  35. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/.gitignore +0 -0
  36. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/CLAUDE.md +0 -0
  37. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/GOAL.md +0 -0
  38. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/LICENSE +0 -0
  39. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/MANIFEST.in +0 -0
  40. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/README.md +0 -0
  41. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/code_coordinator.egg-info/SOURCES.txt +0 -0
  42. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/code_coordinator.egg-info/dependency_links.txt +0 -0
  43. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/code_coordinator.egg-info/entry_points.txt +0 -0
  44. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/code_coordinator.egg-info/requires.txt +0 -0
  45. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/code_coordinator.egg-info/scm_file_list.json +0 -0
  46. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/code_coordinator.egg-info/top_level.txt +0 -0
  47. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/__init__.py +0 -0
  48. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/_board_mapping.py +0 -0
  49. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/acceptance.py +0 -0
  50. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/acceptance_drivers.py +0 -0
  51. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/agent.py +0 -0
  52. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/agent_app.py +0 -0
  53. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/agent_update.py +0 -0
  54. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/agents/opencode/.gitignore +0 -0
  55. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/agents/opencode/agents/work.md +0 -0
  56. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/agents/opencode/routing.jsonc +0 -0
  57. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/approved_work.py +0 -0
  58. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/auto_loop.py +0 -0
  59. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/backup.py +0 -0
  60. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/block_log.py +0 -0
  61. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/board_schema.py +0 -0
  62. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/board_service.py +0 -0
  63. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/board_wire.py +0 -0
  64. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/brain.py +0 -0
  65. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/branch_model.py +0 -0
  66. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/bug_intake.py +0 -0
  67. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/cargo_cache.py +0 -0
  68. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/ci_fix.py +0 -0
  69. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/ci_github.py +0 -0
  70. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/ci_gitlab.py +0 -0
  71. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/ci_store.py +0 -0
  72. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/claim.py +0 -0
  73. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/claude_setup_token.py +0 -0
  74. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/cli.py +0 -0
  75. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/client.py +0 -0
  76. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/codegen.py +0 -0
  77. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/__init__.py +0 -0
  78. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/_common.py +0 -0
  79. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/acceptance.py +0 -0
  80. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/agent_ops.py +0 -0
  81. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/audit.py +0 -0
  82. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/backup.py +0 -0
  83. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/chat.py +0 -0
  84. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/ci.py +0 -0
  85. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/codegen.py +0 -0
  86. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/dispatch.py +0 -0
  87. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/dispatch_workers.py +0 -0
  88. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/dr.py +0 -0
  89. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/drive.py +0 -0
  90. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/drive_queue.py +0 -0
  91. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/gate_a.py +0 -0
  92. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/gates.py +0 -0
  93. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/issues.py +0 -0
  94. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/machine.py +0 -0
  95. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/merge.py +0 -0
  96. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/milestone.py +0 -0
  97. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/plan_followup.py +0 -0
  98. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/plans.py +0 -0
  99. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/portal.py +0 -0
  100. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/pr.py +0 -0
  101. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/release.py +0 -0
  102. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/repo.py +0 -0
  103. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/report.py +0 -0
  104. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/review.py +0 -0
  105. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/scorecard.py +0 -0
  106. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/sessions.py +0 -0
  107. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/setup.py +0 -0
  108. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/status.py +0 -0
  109. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/store_migrate.py +0 -0
  110. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/terminal.py +0 -0
  111. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/test_gate.py +0 -0
  112. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/commands/tui.py +0 -0
  113. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/comments.py +0 -0
  114. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/config_reload.py +0 -0
  115. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/confirm_test.py +0 -0
  116. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/conflict_fix.py +0 -0
  117. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/dao.py +0 -0
  118. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/dashboard/__init__.py +0 -0
  119. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/dashboard/fixture.py +0 -0
  120. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/dashboard/index.html +0 -0
  121. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/dashboard/server.py +0 -0
  122. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/dashboard/terminal.py +0 -0
  123. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/db.py +0 -0
  124. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/dead_end.py +0 -0
  125. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/decomposition_chat.py +0 -0
  126. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/README.md +0 -0
  127. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-agent.service +0 -0
  128. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-backup.service +0 -0
  129. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-backup.timer +0 -0
  130. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-db-backup.service +0 -0
  131. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-db-backup.sh +0 -0
  132. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-db-backup.timer +0 -0
  133. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-dr-verify.service +0 -0
  134. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-dr-verify.timer +0 -0
  135. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-drive-queue.service +0 -0
  136. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-drive-queue.timer +0 -0
  137. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-failure-notify.service +0 -0
  138. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-fleet-watchdog.service +0 -0
  139. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  140. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-notify.service +0 -0
  141. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-notify.timer +0 -0
  142. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-release-propagate.service +0 -0
  143. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-release-propagate.timer +0 -0
  144. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-release-window.service +0 -0
  145. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-release-window.timer +0 -0
  146. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-serve.service +0 -0
  147. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-web-dist-build.service +0 -0
  148. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-web-dist-build.timer +0 -0
  149. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy/coord-web.service +0 -0
  150. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy_manifest.py +0 -0
  151. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deploy_units.py +0 -0
  152. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deprecation_telemetry.py +0 -0
  153. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/deps.py +0 -0
  154. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/diagnose.py +0 -0
  155. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/dispatch.py +0 -0
  156. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/dispatch_liveness.py +0 -0
  157. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/dist_name.py +0 -0
  158. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/dr_promote.py +0 -0
  159. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/dr_verify.py +0 -0
  160. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/drive_queue.py +0 -0
  161. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/drive_sessions_snapshot.py +0 -0
  162. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/drive_state.py +0 -0
  163. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/events.py +0 -0
  164. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/failure_class.py +0 -0
  165. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/failure_classifier.py +0 -0
  166. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/filelock.py +0 -0
  167. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/fleet_config_health.py +0 -0
  168. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/freshness.py +0 -0
  169. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/gate_a.py +0 -0
  170. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/gate_b.py +0 -0
  171. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/gate_snapshot.py +0 -0
  172. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/gates.py +0 -0
  173. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/gen_board_fixture.py +0 -0
  174. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/github_ops.py +0 -0
  175. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/github_throttle.py +0 -0
  176. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/goal.py +0 -0
  177. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/graph_health.py +0 -0
  178. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/__init__.py +0 -0
  179. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/aggregate.py +0 -0
  180. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/__init__.py +0 -0
  181. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/_ci_pin.py +0 -0
  182. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/agent_install.py +0 -0
  183. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/cargo_targets.py +0 -0
  184. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/claude_binary.py +0 -0
  185. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/config_drift.py +0 -0
  186. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  187. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/coord_web_ci_pin.py +0 -0
  188. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/deploy_lane_facts.py +0 -0
  189. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/disk.py +0 -0
  190. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/fleet_board.py +0 -0
  191. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  192. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/fleet_phantom.py +0 -0
  193. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/fleet_unit_drift.py +0 -0
  194. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/graph.py +0 -0
  195. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/graphify_cli.py +0 -0
  196. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/index_lock.py +0 -0
  197. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/issues_sync_staleness.py +0 -0
  198. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/local_machine_identity.py +0 -0
  199. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/plan_usage.py +0 -0
  200. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/pr_churn.py +0 -0
  201. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/release_cordon.py +0 -0
  202. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/repo_state.py +0 -0
  203. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/spawned_coord.py +0 -0
  204. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/stalled_pipeline.py +0 -0
  205. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/timer_active.py +0 -0
  206. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/toolchain.py +0 -0
  207. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/unit_drift.py +0 -0
  208. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/unit_enablement.py +0 -0
  209. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/wedged_drive_queue.py +0 -0
  210. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/checks/worktrees.py +0 -0
  211. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/cli.py +0 -0
  212. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/context.py +0 -0
  213. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/fleet_snapshot.py +0 -0
  214. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/models.py +0 -0
  215. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/pypi.py +0 -0
  216. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/registry.py +0 -0
  217. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/render.py +0 -0
  218. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/health/units.py +0 -0
  219. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/hooks.py +0 -0
  220. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/interactive.py +0 -0
  221. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/invariant_alarms.py +0 -0
  222. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/issue_store.py +0 -0
  223. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/issues_sync_status.py +0 -0
  224. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/liveness_auditor.py +0 -0
  225. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/machine_fault.py +0 -0
  226. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/machine_metrics.py +0 -0
  227. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/machine_onboard.py +0 -0
  228. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/machine_pause.py +0 -0
  229. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/machine_stats.py +0 -0
  230. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/merge_queue.py +0 -0
  231. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/milestone_chat.py +0 -0
  232. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/milestone_dispatch.py +0 -0
  233. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/milestone_gate.py +0 -0
  234. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/milestone_order.py +0 -0
  235. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/mock_author.py +0 -0
  236. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/models.py +0 -0
  237. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/network.py +0 -0
  238. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/new_issue_chat.py +0 -0
  239. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/notifier/__init__.py +0 -0
  240. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/notifier/baseline.py +0 -0
  241. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/notifier/cli.py +0 -0
  242. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/notifier/collect.py +0 -0
  243. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/notifier/digest.py +0 -0
  244. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/notifier/models.py +0 -0
  245. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/notifier/predicate.py +0 -0
  246. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/notifier/service.py +0 -0
  247. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/notifier/store.py +0 -0
  248. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/notifier/transport.py +0 -0
  249. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/notify.py +0 -0
  250. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/openapi.py +0 -0
  251. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/overlap_fence.py +0 -0
  252. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/overlap_predict.py +0 -0
  253. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/parentage.py +0 -0
  254. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/parentage_github.py +0 -0
  255. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/pipeline.py +0 -0
  256. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/plan_parser.py +0 -0
  257. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/plans.py +0 -0
  258. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/platform_paths.py +0 -0
  259. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/portal_bridge.py +0 -0
  260. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/portal_store.py +0 -0
  261. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/portal_sync.py +0 -0
  262. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/pr_body_lint.py +0 -0
  263. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/prereqs.py +0 -0
  264. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/progress.py +0 -0
  265. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/providers/__init__.py +0 -0
  266. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/providers/base.py +0 -0
  267. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/providers/claude.py +0 -0
  268. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/providers/claude_pty.py +0 -0
  269. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/providers/opencode.py +0 -0
  270. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/queue_diagnose.py +0 -0
  271. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/reconcile.py +0 -0
  272. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/reconcile_tick.py +0 -0
  273. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/refine_chat.py +0 -0
  274. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/release_cordon.py +0 -0
  275. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/release_propagate.py +0 -0
  276. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/release_verify.py +0 -0
  277. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/release_window.py +0 -0
  278. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/repo_dormancy.py +0 -0
  279. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/repo_edit.py +0 -0
  280. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/repo_onboard.py +0 -0
  281. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/reports.py +0 -0
  282. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/rest_schema.py +0 -0
  283. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/restart_cmd.py +0 -0
  284. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/revalidate.py +0 -0
  285. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/review.py +0 -0
  286. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/scorecard.py +0 -0
  287. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/self_health.py +0 -0
  288. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  289. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  290. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  291. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  292. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  293. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/skills/portal-followup/SKILL.md +0 -0
  294. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/skills/release-now/SKILL.md +0 -0
  295. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  296. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  297. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/skills/update-issue/SKILL.md +0 -0
  298. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/smoke.py +0 -0
  299. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/spend_ceiling.py +0 -0
  300. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/split_work.py +0 -0
  301. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/stage_projection.py +0 -0
  302. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/state.py +0 -0
  303. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/store_migrate.py +0 -0
  304. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/store_parity.py +0 -0
  305. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/templates/deploy-cloudflare.node.yml +0 -0
  306. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/test_author.py +0 -0
  307. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/test_chat.py +0 -0
  308. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/test_orchestrator.py +0 -0
  309. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/test_report.py +0 -0
  310. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/tui_release.py +0 -0
  311. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/uat_checks.py +0 -0
  312. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/usage.py +0 -0
  313. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/usage_limits.py +0 -0
  314. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/usage_rollup.py +0 -0
  315. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coord/worker_events.py +0 -0
  316. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/coordinator.example.yml +0 -0
  317. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-agent.service +0 -0
  318. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-backup.service +0 -0
  319. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-backup.timer +0 -0
  320. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-db-backup.service +0 -0
  321. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-db-backup.sh +0 -0
  322. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-db-backup.timer +0 -0
  323. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-dr-verify.service +0 -0
  324. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-dr-verify.timer +0 -0
  325. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-drive-queue.service +0 -0
  326. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-drive-queue.timer +0 -0
  327. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-failure-notify.service +0 -0
  328. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-failure-notify.sh +0 -0
  329. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-fleet-watchdog.service +0 -0
  330. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-fleet-watchdog.timer +0 -0
  331. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-notify.service +0 -0
  332. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-notify.timer +0 -0
  333. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-release-propagate.service +0 -0
  334. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-release-propagate.timer +0 -0
  335. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-release-window.service +0 -0
  336. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-release-window.timer +0 -0
  337. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-serve.service +0 -0
  338. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-web-dist-build.service +0 -0
  339. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-web-dist-build.sh +0 -0
  340. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-web-dist-build.timer +0 -0
  341. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-web-rollback.sh +0 -0
  342. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/coord-web.service +0 -0
  343. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/deploy/node-shim.sh +0 -0
  344. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/ADR_COORD_TUI_CI.md +0 -0
  345. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  346. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/ADR_COORD_WEB_CI.md +0 -0
  347. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/ADR_COORD_WEB_DIST.md +0 -0
  348. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  349. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/AGENT_OPERATIONS.md +0 -0
  350. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/ARCHITECTURE.md +0 -0
  351. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/ARCH_SECURITY_GATES.md +0 -0
  352. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/COCKPIT.md +0 -0
  353. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/CONTROL_CENTER.md +0 -0
  354. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/COST_DISCIPLINE.md +0 -0
  355. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/CROSS_PLATFORM.md +0 -0
  356. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/CUSTOMER_FACING_APPS.md +0 -0
  357. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/CUSTOMER_PORTAL.md +0 -0
  358. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/DATA_STORE_SELECTION.md +0 -0
  359. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/DISASTER_RECOVERY.md +0 -0
  360. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/DRIVE_QUEUE.md +0 -0
  361. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/EPHEMERAL_WORKERS.md +0 -0
  362. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/FORGE_MIGRATION.md +0 -0
  363. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/GRAPHIFY_SETUP.md +0 -0
  364. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/ISSUE_GUIDANCE.md +0 -0
  365. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/MAC_MINI.md +0 -0
  366. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  367. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/NOTIFIER.md +0 -0
  368. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/OPENCODE_VERIFICATION.md +0 -0
  369. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/OPERATING_GOTCHAS.md +0 -0
  370. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/OPERATOR_GUIDES.md +0 -0
  371. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/ORACLE_LOOP.md +0 -0
  372. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/PHONE_WEBAPP.md +0 -0
  373. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/PIPELINE_V2.md +0 -0
  374. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/PLATFORM_EVOLUTION.md +0 -0
  375. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/SECOND_BACKEND.md +0 -0
  376. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/STORE_SERVICE.md +0 -0
  377. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  378. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/WEB_CONTROL_CENTER.md +0 -0
  379. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/WSL_WINDOWS_WORKER.md +0 -0
  380. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/mocks/web/README.md +0 -0
  381. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/mocks/web/_tokens.css +0 -0
  382. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/mocks/web/issue-detail.html +0 -0
  383. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/mocks/web/pipeline-narrow.html +0 -0
  384. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/docs/mocks/web/pipeline-wide.html +0 -0
  385. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/graphify-out/.gitignore +0 -0
  386. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/install-agent.sh +0 -0
  387. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/pyproject.toml +0 -0
  388. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/audit_review_verdict_overrides.py +0 -0
  389. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  390. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/azure-workers/build-worker-image.sh +0 -0
  391. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/azure-workers/coordinator-machine.py +0 -0
  392. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/azure-workers/dr-down.sh +0 -0
  393. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/azure-workers/dr-up.sh +0 -0
  394. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/azure-workers/epic-down.sh +0 -0
  395. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/azure-workers/epic-up.sh +0 -0
  396. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/azure-workers/preflight.sh +0 -0
  397. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/azure-workers/provision-server.sh +0 -0
  398. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/azure-workers/provision-worker.sh +0 -0
  399. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  400. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  401. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/azure-workers/throwaway-vm.sh +0 -0
  402. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/azure-workers/verify-github-token.sh +0 -0
  403. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/check_gh_argv_containment.py +0 -0
  404. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/codegen.py +0 -0
  405. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/coord-test-runner.sh +0 -0
  406. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  407. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  408. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  409. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  410. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/coord-venv-rollback.sh +0 -0
  411. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/drive-batch.sh +0 -0
  412. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/extract-coord-tui.sh +0 -0
  413. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/fleet_watchdog.py +0 -0
  414. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/gen_board_fixture.py +0 -0
  415. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/gen_mock_index.py +0 -0
  416. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/lib/provision-core.sh +0 -0
  417. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/next_release_tag.py +0 -0
  418. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/provision-machine.sh +0 -0
  419. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/run_tests_in_populated_home.sh +0 -0
  420. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/run_tests_without_gh.sh +0 -0
  421. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/setup-macmini.sh +0 -0
  422. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/smoke_437_interactive.py +0 -0
  423. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/verify-provision-noble.sh +0 -0
  424. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/verify_878_review_capture.py +0 -0
  425. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/verify_release_published.py +0 -0
  426. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/scripts/verify_release_wheel.py +0 -0
  427. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/setup.cfg +0 -0
  428. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/SMOKE_SET.md +0 -0
  429. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/__init__.py +0 -0
  430. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/acceptance/ms-37/conftest.py +0 -0
  431. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/acceptance/ms-37/contract.md +0 -0
  432. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/acceptance/ms-37/manifest.yml +0 -0
  433. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  434. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  435. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/acceptance/ms-51/contract.md +0 -0
  436. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  437. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  438. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/acceptance/ms-51/manifest.yml +0 -0
  439. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  440. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/acceptance/ms-51/tsconfig.json +0 -0
  441. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  442. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/backends.py +0 -0
  443. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/conftest.py +0 -0
  444. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/board-pipeline-basic.json +0 -0
  445. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  446. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  447. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  448. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  449. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/playwright/all_pass.json +0 -0
  450. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  451. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/playwright/mixed_fail.json +0 -0
  452. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  453. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  454. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/playwright/skip.json +0 -0
  455. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/playwright/truncated.json +0 -0
  456. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  457. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  458. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  459. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  460. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
  461. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  462. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  463. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  464. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  465. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_acceptance.py +0 -0
  466. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_acceptance_drivers.py +0 -0
  467. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent.py +0 -0
  468. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_api_error.py +0 -0
  469. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_app.py +0 -0
  470. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_branch_base.py +0 -0
  471. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_branch_capture.py +0 -0
  472. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_config_free_1712.py +0 -0
  473. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_deploy_units_endpoint.py +0 -0
  474. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_dirty_worktree.py +0 -0
  475. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  476. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_graph_self_heal.py +0 -0
  477. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_health_h3.py +0 -0
  478. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_idle_restart.py +0 -0
  479. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_push_failure.py +0 -0
  480. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_reap.py +0 -0
  481. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_repos_and_pull.py +0 -0
  482. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_restart_services_endpoint.py +0 -0
  483. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_skills_self_heal.py +0 -0
  484. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_startup_diagnostics.py +0 -0
  485. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_update.py +0 -0
  486. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_update_bluegreen.py +0 -0
  487. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_usage_limit.py +0 -0
  488. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_agent_zero_commit.py +0 -0
  489. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_ambient_home_isolation.py +0 -0
  490. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_approve_capability_reroute_3241.py +0 -0
  491. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_approve_dependency_busy_2804.py +0 -0
  492. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_approve_reject_plan.py +0 -0
  493. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_approve_usage_gate.py +0 -0
  494. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_approved_work_2532.py +0 -0
  495. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_approved_work_2996.py +0 -0
  496. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_assignment_already_recorded_daemon.py +0 -0
  497. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_audit_outcome.py +0 -0
  498. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_audit_query.py +0 -0
  499. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_auto_loop.py +0 -0
  500. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_auto_release_publish_2035.py +0 -0
  501. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_backend_selection.py +0 -0
  502. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_backup.py +0 -0
  503. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_base_checkout_restore.py +0 -0
  504. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_block_log.py +0 -0
  505. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_board_cap_762.py +0 -0
  506. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_board_fixture.py +0 -0
  507. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_board_read_path.py +0 -0
  508. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_board_schema.py +0 -0
  509. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_board_service.py +0 -0
  510. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_board_state.py +0 -0
  511. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_board_wire.py +0 -0
  512. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_brain.py +0 -0
  513. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_branch_model.py +0 -0
  514. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_bug_intake.py +0 -0
  515. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_build_worker_image_env_update.py +0 -0
  516. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cargo_cache.py +0 -0
  517. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_check_gh_argv_containment.py +0 -0
  518. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_ci_acceptance_gate_1950.py +0 -0
  519. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_ci_fix.py +0 -0
  520. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_ci_github.py +0 -0
  521. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_ci_gitlab.py +0 -0
  522. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_ci_parity_2091.py +0 -0
  523. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_ci_store.py +0 -0
  524. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_claim.py +0 -0
  525. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_claude_md_budget.py +0 -0
  526. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_claude_setup_token.py +0 -0
  527. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_acceptance.py +0 -0
  528. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_assign.py +0 -0
  529. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  530. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_assign_interactive_remote.py +0 -0
  531. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_assign_provider.py +0 -0
  532. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  533. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_audit.py +0 -0
  534. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_chat_continue.py +0 -0
  535. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_ci.py +0 -0
  536. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_codegen.py +0 -0
  537. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_decide.py +0 -0
  538. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_diagnose_capability_rules.py +0 -0
  539. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_diagnose_config_provenance.py +0 -0
  540. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_diagnose_forge_availability.py +0 -0
  541. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_diagnose_graph.py +0 -0
  542. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_diagnose_self.py +0 -0
  543. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_diagnose_test_coverage.py +0 -0
  544. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_doctor.py +0 -0
  545. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_doctor_config_free_1801.py +0 -0
  546. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  547. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  548. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_drive.py +0 -0
  549. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_drive_queue.py +0 -0
  550. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_escalate.py +0 -0
  551. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_fix_headless_review.py +0 -0
  552. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_gate_a.py +0 -0
  553. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_install_drift.py +0 -0
  554. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_install_skills.py +0 -0
  555. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_issue_comment.py +0 -0
  556. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_issue_create_label.py +0 -0
  557. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_issue_reopen.py +0 -0
  558. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_issue_view_list.py +0 -0
  559. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_issues.py +0 -0
  560. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_merge.py +0 -0
  561. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_milestone_assign.py +0 -0
  562. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_milestone_capture.py +0 -0
  563. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_milestone_chat_add_child.py +0 -0
  564. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_milestone_dispatch.py +0 -0
  565. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_milestone_gate_b.py +0 -0
  566. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_milestone_gate_c.py +0 -0
  567. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_milestone_order.py +0 -0
  568. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  569. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_milestone_ship.py +0 -0
  570. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_network.py +0 -0
  571. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_new_issue_chat.py +0 -0
  572. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_plans.py +0 -0
  573. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_portal.py +0 -0
  574. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_pr.py +0 -0
  575. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_pull_artifact.py +0 -0
  576. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_queue.py +0 -0
  577. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_reattach_sessions.py +0 -0
  578. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_refine_board.py +0 -0
  579. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_release_preflight.py +0 -0
  580. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_release_propagate.py +0 -0
  581. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_release_window.py +0 -0
  582. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_repo_2220.py +0 -0
  583. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  584. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_scorecard.py +0 -0
  585. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_serve_store_backend_3084.py +0 -0
  586. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_set_review_findings.py +0 -0
  587. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_status_advisory_terminal.py +0 -0
  588. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_status_contested_tag.py +0 -0
  589. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_status_invariant_alarms.py +0 -0
  590. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_status_machine_fault.py +0 -0
  591. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_status_merge_queue.py +0 -0
  592. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_status_provider.py +0 -0
  593. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_status_retried_3340.py +0 -0
  594. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_status_review_finalizing.py +0 -0
  595. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_status_supervisor_3366.py +0 -0
  596. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_status_test_failed_tag.py +0 -0
  597. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_status_usage_limit.py +0 -0
  598. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_sync_comments_873.py +0 -0
  599. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_test_plan.py +0 -0
  600. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_track.py +0 -0
  601. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_tui_update.py +0 -0
  602. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cli_wait.py +0 -0
  603. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_client.py +0 -0
  604. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_client_base_install.py +0 -0
  605. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_client_config_cache_atomic_3052.py +0 -0
  606. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_client_resource_migration_1946.py +0 -0
  607. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_commands_common.py +0 -0
  608. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_comments.py +0 -0
  609. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_completion_summary.py +0 -0
  610. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_config.py +0 -0
  611. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_config_acceptance.py +0 -0
  612. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_config_drift_check.py +0 -0
  613. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_config_effective.py +0 -0
  614. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_config_pricing.py +0 -0
  615. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  616. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_config_usage_gate.py +0 -0
  617. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_confirm_test.py +0 -0
  618. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_conflict_fix.py +0 -0
  619. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_conflict_fix_semantic.py +0 -0
  620. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  621. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_coord_test.py +0 -0
  622. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  623. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_coord_test_runner_baseline.py +0 -0
  624. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_coord_test_runner_populated_home.py +0 -0
  625. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_coord_test_runner_routing.py +0 -0
  626. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_coord_test_runner_toolchain.py +0 -0
  627. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_coord_uat.py +0 -0
  628. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_coord_web_sse_restart_live.py +0 -0
  629. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_coordinator_machine.py +0 -0
  630. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_cross_platform_imports.py +0 -0
  631. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dao.py +0 -0
  632. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dashboard.py +0 -0
  633. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dashboard_api.py +0 -0
  634. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dashboard_fixture.py +0 -0
  635. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dashboard_server.py +0 -0
  636. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dashboard_terminal.py +0 -0
  637. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dashboard_terminal_live.py +0 -0
  638. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_db.py +0 -0
  639. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dead_end.py +0 -0
  640. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_decomposition_chat.py +0 -0
  641. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_deploy_coord_db_backup.py +0 -0
  642. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_deploy_coord_web_dist.py +0 -0
  643. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_deploy_coord_web_rollback.py +0 -0
  644. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_deploy_db_backup_unit.py +0 -0
  645. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_deploy_drive_queue_unit.py +0 -0
  646. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_deploy_failure_notify_unit.py +0 -0
  647. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_deploy_manifest.py +0 -0
  648. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_deploy_notify_unit.py +0 -0
  649. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_deploy_units_lane.py +0 -0
  650. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_deploy_web_unit.py +0 -0
  651. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_deprecation_telemetry.py +0 -0
  652. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_deps.py +0 -0
  653. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_diagnose.py +0 -0
  654. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dispatch.py +0 -0
  655. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dispatch_liveness.py +0 -0
  656. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dispatch_target_validation.py +0 -0
  657. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dispatch_workers.py +0 -0
  658. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dist_name.py +0 -0
  659. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_done_housekeeping.py +0 -0
  660. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dr_azure_scripts.py +0 -0
  661. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dr_promote.py +0 -0
  662. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_dr_verify.py +0 -0
  663. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_drive_machine_fault.py +0 -0
  664. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_drive_queue.py +0 -0
  665. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_drive_queue_blocked_rendering.py +0 -0
  666. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_drive_queue_launch_argv.py +0 -0
  667. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_drive_queue_max_parallel_config.py +0 -0
  668. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  669. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_drive_queue_roll_pending.py +0 -0
  670. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  671. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_drive_sessions_snapshot.py +0 -0
  672. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_drive_state.py +0 -0
  673. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_drive_tmux.py +0 -0
  674. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_epic_up_capability_detection.py +0 -0
  675. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  676. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_epic_up_image_provenance.py +0 -0
  677. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_errors.py +0 -0
  678. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_events.py +0 -0
  679. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_failure_class.py +0 -0
  680. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_failure_classifier.py +0 -0
  681. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_filelock.py +0 -0
  682. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  683. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_fix_escalation_classifier.py +0 -0
  684. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_fix_of_force_override.py +0 -0
  685. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_fleet_config_health.py +0 -0
  686. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_fleet_health_probes.py +0 -0
  687. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_fleet_health_snapshot.py +0 -0
  688. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_fleet_watchdog.py +0 -0
  689. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_freshness.py +0 -0
  690. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_gate_a.py +0 -0
  691. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_gate_b.py +0 -0
  692. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_gate_snapshot_staleness.py +0 -0
  693. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_gates.py +0 -0
  694. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  695. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_gen_mock_index.py +0 -0
  696. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_generated_rust_fixture.py +0 -0
  697. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_generated_rust_requests.py +0 -0
  698. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_generated_types_fixture.py +0 -0
  699. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_github_throttle.py +0 -0
  700. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_goal.py +0 -0
  701. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_graph_health.py +0 -0
  702. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_graph_selfheal_absent_2237.py +0 -0
  703. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_handoff.py +0 -0
  704. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_checks.py +0 -0
  705. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_cli.py +0 -0
  706. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_cli_graph.py +0 -0
  707. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_config.py +0 -0
  708. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_context.py +0 -0
  709. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_coord_tui_ci_pin.py +0 -0
  710. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_coord_web_ci_pin.py +0 -0
  711. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_deploy_lane_facts.py +0 -0
  712. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_fix.py +0 -0
  713. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_incident_regression.py +0 -0
  714. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_issues_sync_staleness.py +0 -0
  715. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_pr_churn.py +0 -0
  716. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_pypi.py +0 -0
  717. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_registry.py +0 -0
  718. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_release_cordon_probe.py +0 -0
  719. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_timer_active.py +0 -0
  720. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_toolchain.py +0 -0
  721. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_unit_drift.py +0 -0
  722. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_unit_enablement.py +0 -0
  723. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_health_wedged_drive_queue.py +0 -0
  724. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_hooks.py +0 -0
  725. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_human_attended_437.py +0 -0
  726. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_init.py +0 -0
  727. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_install_agent_venv_2911.py +0 -0
  728. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_integration.py +0 -0
  729. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_interactive.py +0 -0
  730. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_interactive_briefing_echo.py +0 -0
  731. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_interactive_pane_log_2541.py +0 -0
  732. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_interactive_prefill_state.py +0 -0
  733. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_interactive_session_relaunch.py +0 -0
  734. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_interactive_test_verdict_backstop.py +0 -0
  735. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_interactive_token_attribution.py +0 -0
  736. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_interactive_worktree.py +0 -0
  737. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_invariant_alarms.py +0 -0
  738. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_issue_store_seam.py +0 -0
  739. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_issues_sync_status.py +0 -0
  740. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_liveness_auditor.py +0 -0
  741. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_liveness_notify.py +0 -0
  742. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_lock_contention_ratchet.py +0 -0
  743. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_machine_fault.py +0 -0
  744. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_machine_metrics.py +0 -0
  745. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_machine_onboard.py +0 -0
  746. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_machine_pause.py +0 -0
  747. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_machine_stats.py +0 -0
  748. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_merge_queue.py +0 -0
  749. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_merge_verify.py +0 -0
  750. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_milestone_chat.py +0 -0
  751. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_milestone_dispatch.py +0 -0
  752. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_milestone_gate.py +0 -0
  753. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_milestone_order.py +0 -0
  754. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_milestone_seam.py +0 -0
  755. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_mock_author.py +0 -0
  756. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_model_tiering.py +0 -0
  757. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_models.py +0 -0
  758. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_models_config_labels.py +0 -0
  759. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_needs_attention.py +0 -0
  760. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_network.py +0 -0
  761. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_new_issue_chat.py +0 -0
  762. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_next_release_tag.py +0 -0
  763. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_node_shim.py +0 -0
  764. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_notifier_baseline.py +0 -0
  765. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_notifier_cli.py +0 -0
  766. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_notifier_collect.py +0 -0
  767. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_notifier_config.py +0 -0
  768. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_notifier_drive_seam.py +0 -0
  769. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_notifier_isolation.py +0 -0
  770. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_notifier_predicate.py +0 -0
  771. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_notifier_quiet_hours.py +0 -0
  772. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_notifier_service.py +0 -0
  773. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_notify.py +0 -0
  774. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_notify_drain.py +0 -0
  775. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_openapi.py +0 -0
  776. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_operational_defaults.py +0 -0
  777. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_overlap_fence.py +0 -0
  778. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_overlap_predict.py +0 -0
  779. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_packaged_deploy_units.py +0 -0
  780. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_parentage.py +0 -0
  781. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_paste_landed.py +0 -0
  782. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  783. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_pipeline.py +0 -0
  784. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_plan_followup_approve_plan_command.py +0 -0
  785. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_plan_followup_pr_command.py +0 -0
  786. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_plan_followup_review_command.py +0 -0
  787. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_plan_only.py +0 -0
  788. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_plan_parser.py +0 -0
  789. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_platform_paths.py +0 -0
  790. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_portal_bridge.py +0 -0
  791. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_portal_config.py +0 -0
  792. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_portal_store.py +0 -0
  793. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_portal_sync.py +0 -0
  794. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_pr_body_lint.py +0 -0
  795. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_prereqs.py +0 -0
  796. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_production_db_guard.py +0 -0
  797. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_progress.py +0 -0
  798. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_provider_seam.py +0 -0
  799. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_providers.py +0 -0
  800. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_providers_config_labels.py +0 -0
  801. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_providers_pty.py +0 -0
  802. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_provision_core.py +0 -0
  803. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_provision_machine.py +0 -0
  804. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_py_rust_mirror_inventory.py +0 -0
  805. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_quiet_hours.py +0 -0
  806. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_quiet_hours_store_2146.py +0 -0
  807. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_reap_merged_sessions.py +0 -0
  808. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_reap_stale_interactive_tick.py +0 -0
  809. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_reconcile.py +0 -0
  810. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_reconcile_branch.py +0 -0
  811. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_reconcile_completions.py +0 -0
  812. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  813. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_reconcile_merges.py +0 -0
  814. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_reconcile_no_agent_record.py +0 -0
  815. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_reconcile_tick.py +0 -0
  816. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_reconcile_usage_limit_done.py +0 -0
  817. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_refine_chat.py +0 -0
  818. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_release_cordon_2101.py +0 -0
  819. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  820. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_release_cordon_deadlock_2240.py +0 -0
  821. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  822. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_release_cordon_stuck_2490.py +0 -0
  823. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_release_propagate.py +0 -0
  824. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_release_propagate_threshold.py +0 -0
  825. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_release_roll_between_legs_2854.py +0 -0
  826. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_release_roll_window_handoff.py +0 -0
  827. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_release_unified_1242.py +0 -0
  828. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_release_verify.py +0 -0
  829. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_release_window.py +0 -0
  830. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_remote_auto_prune.py +0 -0
  831. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_remote_interactive_reaper.py +0 -0
  832. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_repo_add.py +0 -0
  833. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_repo_dormancy.py +0 -0
  834. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_repo_edit_2220.py +0 -0
  835. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_repo_graph_fleet_2237.py +0 -0
  836. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_repo_max_parallel_3423.py +0 -0
  837. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_repo_onboard_2220.py +0 -0
  838. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_report_result_push.py +0 -0
  839. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_reports.py +0 -0
  840. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_restart_cmd.py +0 -0
  841. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_retry.py +0 -0
  842. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_retry_advisory_1606.py +0 -0
  843. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_retry_escalation_classify_3360.py +0 -0
  844. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_retry_type_1636.py +0 -0
  845. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_revalidate.py +0 -0
  846. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_review.py +0 -0
  847. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_review_end_review_without_verdict.py +0 -0
  848. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_review_parse_failure_diagnostic.py +0 -0
  849. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_review_reaffirm.py +0 -0
  850. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_review_state.py +0 -0
  851. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_review_verdict_backstop.py +0 -0
  852. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_review_verdict_override_audit.py +0 -0
  853. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_review_verdict_relay.py +0 -0
  854. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_review_zero_commits.py +0 -0
  855. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_scoped_review_wiring.py +0 -0
  856. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_scorecard.py +0 -0
  857. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_self_health.py +0 -0
  858. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_serve.py +0 -0
  859. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_serve_app.py +0 -0
  860. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_serve_app_board_trim.py +0 -0
  861. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_serve_rest_routes.py +0 -0
  862. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_session.py +0 -0
  863. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_slice_issue_attribution.py +0 -0
  864. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_smoke.py +0 -0
  865. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  866. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_smoke_live_checkout_restore.py +0 -0
  867. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_smoke_workflow.py +0 -0
  868. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_spend_ceiling.py +0 -0
  869. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_spend_ceiling_coordinator.py +0 -0
  870. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_split.py +0 -0
  871. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_split_work.py +0 -0
  872. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_stage_projection.py +0 -0
  873. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_stale_busy_reviewer_697.py +0 -0
  874. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_stalled_pipeline.py +0 -0
  875. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_state.py +0 -0
  876. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_state_review_findings_daemon.py +0 -0
  877. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_status_fleet_footer.py +0 -0
  878. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_stop_1567.py +0 -0
  879. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_store_contract.py +0 -0
  880. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_store_migrate.py +0 -0
  881. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_stuck.py +0 -0
  882. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  883. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_terminal_command.py +0 -0
  884. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_test_author.py +0 -0
  885. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_test_chat.py +0 -0
  886. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_test_orchestrator.py +0 -0
  887. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_test_report.py +0 -0
  888. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_test_verdict_parsing.py +0 -0
  889. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_test_verdict_transcript_floor.py +0 -0
  890. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_text_io_encoding_audit.py +0 -0
  891. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_thin_client_board_audit.py +0 -0
  892. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_thin_client_config_load_1080.py +0 -0
  893. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_thin_client_daemon_routing_906.py +0 -0
  894. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_throwaway_vm.py +0 -0
  895. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_tmux_host.py +0 -0
  896. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_tmux_session.py +0 -0
  897. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_transcript_floor.py +0 -0
  898. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_uat_checks.py +0 -0
  899. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_usage.py +0 -0
  900. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_usage_limits.py +0 -0
  901. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_usage_rollup.py +0 -0
  902. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_venv_live_install_2121.py +0 -0
  903. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_version_single_source.py +0 -0
  904. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_watch.py +0 -0
  905. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  906. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_worker_env_venv_isolation.py +0 -0
  907. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_worker_events.py +0 -0
  908. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_worker_image_pin_sync.py +0 -0
  909. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_worker_safety.py +0 -0
  910. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_worker_test_scoping.py +0 -0
  911. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_worktree.py +0 -0
  912. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  913. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/tests/test_write_parity.py +0 -0
  914. {code_coordinator-0.5.531 → code_coordinator-0.5.533}/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.531
3
+ Version: 0.5.533
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.531
3
+ Version: 0.5.533
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.533",
3
+ "distance": 0,
4
+ "node": "g3ea458dbd41140d5bf4dca2f931046590f1b3fb0",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-09-30"
8
+ }
@@ -40,6 +40,7 @@ __all__ = [
40
40
  "query_audit_log",
41
41
  "audit_lock_contention_losses",
42
42
  "flush_lock_contention_summary",
43
+ "sweep_operational_retention",
43
44
  ]
44
45
 
45
46
  # Valid values are documented in the issue but not enforced here — callers
@@ -276,9 +277,14 @@ def _maybe_trim(conn) -> None:
276
277
  """Opportunistic cap: when ``audit.max_rows`` is set (> 0), delete the
277
278
  oldest rows past that count after every insert.
278
279
 
279
- Default (``max_rows=0``) is unlimited — this is a no-op in the common
280
- case. Config is read via :func:`_cached_config` rather than re-parsed
281
- on every call — see that function's docstring for why (#2654).
280
+ **Tier-blind** (see :class:`coord.config.AuditConfig`'s ``max_rows``
281
+ docstring): this deletes the globally oldest rows by ``id`` regardless
282
+ of ``tier``, so a busy ``operational``-tier writer can push a
283
+ ``business``-tier row out ahead of it. Default (``max_rows=0``) is
284
+ unlimited — this is a no-op in the common case. Config is read via
285
+ :func:`_cached_config` rather than re-parsed on every call — see that
286
+ function's docstring for why (#2654). Use
287
+ :func:`sweep_operational_retention` for a tier-scoped cap instead.
282
288
  """
283
289
  max_rows = _resolve_max_rows()
284
290
  if max_rows <= 0:
@@ -292,6 +298,70 @@ def _maybe_trim(conn) -> None:
292
298
  conn.commit()
293
299
 
294
300
 
301
+ # ── #3469: per-tier retention for the operational tier ──────────────────────
302
+ #
303
+ # `_maybe_trim` above is a row-count cap, tier-blind by construction (it has
304
+ # to be: `max_rows` predates the `tier` column's operational-vs-business
305
+ # distinction even mattering for retention). #3469's actual problem --
306
+ # `forge_availability`'s ~100k operational-tier rows/day dwarfing the whole
307
+ # table -- needs a cap that can bound just that tier without ever being able
308
+ # to touch a `business`-tier row (a real board transition: dispatch, test/
309
+ # review/merge verdicts) no matter how old it is. This is that cap: a plain
310
+ # time-window DELETE scoped to `tier = 'operational'`, wired into
311
+ # `coord.housekeeping.sweep`'s low-cadence tick (and `coord housekeeping`'s
312
+ # on-demand run) rather than firing on every insert like `_maybe_trim` does
313
+ # — the same cadence tradeoff `coord.forge_availability._PRUNE_INTERVAL_S`
314
+ # already documents for the exact same reason.
315
+
316
+
317
+ def _resolve_operational_retention_days() -> float:
318
+ """Read ``audit.operational_retention_days`` from coordinator.yml.
319
+ Returns ``0`` (disabled — keep everything, today's behaviour) on any
320
+ failure, matching :func:`_resolve_max_rows`'s fail-safe."""
321
+ try:
322
+ cfg = _cached_config()
323
+ return max(0.0, float(cfg.audit.operational_retention_days))
324
+ except Exception: # noqa: BLE001 — best-effort; disabled is the safe default
325
+ return 0.0
326
+
327
+
328
+ def sweep_operational_retention(*, now: float | None = None, dry_run: bool = False) -> int:
329
+ """Delete ``tier='operational'`` ``audit_log`` rows older than
330
+ ``audit.operational_retention_days`` (#3469). Returns the number of
331
+ rows deleted (or, with ``dry_run=True``, that *would be* deleted) —
332
+ ``0`` when the knob is unset/disabled (the default) or there was
333
+ nothing past the cutoff.
334
+
335
+ **Never touches a ``business``-tier row**, regardless of age — the
336
+ ``WHERE tier = 'operational'`` clause is the whole point of this
337
+ function existing alongside the tier-blind :func:`_maybe_trim`.
338
+
339
+ Unlike ``record_audit``'s best-effort contract (a board mutation must
340
+ never fail because its audit row didn't write), this is explicit,
341
+ on-demand maintenance (``coord housekeeping``, or the daemon's
342
+ low-cadence tick calling the same path) — a failure here should
343
+ surface to whoever ran it, not vanish into a debug log.
344
+ """
345
+ days = _resolve_operational_retention_days()
346
+ if days <= 0:
347
+ return 0
348
+ now = now if now is not None else time.time()
349
+ cutoff = now - days * 86400.0
350
+ conn = get_connection()
351
+ if dry_run:
352
+ row = sql.execute(
353
+ conn,
354
+ "SELECT COUNT(*) FROM audit_log WHERE tier = 'operational' AND ts < ?",
355
+ (cutoff,),
356
+ ).fetchone()
357
+ return int(row[0]) if row else 0
358
+ cur = sql.execute(
359
+ conn, "DELETE FROM audit_log WHERE tier = 'operational' AND ts < ?", (cutoff,),
360
+ )
361
+ conn.commit()
362
+ return cur.rowcount if cur.rowcount and cur.rowcount > 0 else 0
363
+
364
+
295
365
  # ── #2654: cached config reads for the two per-write resolvers below ───────
296
366
  #
297
367
  # `_resolve_level` and `_resolve_max_rows` both used to call `coord.config.
@@ -30,23 +30,47 @@ def _print_housekeeping_result(resp: dict) -> None:
30
30
  # this sweep did, so a run that only reclaimed leaked worktrees must not
31
31
  # print "nothing to archive" and hide it.
32
32
  removed_wt = resp.get("removed_confirm_worktrees", 0)
33
- if not archived_a and not archived_n and not removed_wt:
33
+ # #3469: the operational-tier audit retention sweep runs unconditionally
34
+ # (its own knob, its own window — see `coord.housekeeping.sweep`'s
35
+ # docstring), independent of everything above, and must be reported on
36
+ # its own terms too: once `audit.operational_retention_days` is turned
37
+ # on, a tick that *only* deletes stale operational audit rows will be
38
+ # the common case, and silently folding it into the "nothing to
39
+ # archive" branch would hide the one thing #3469 exists to report.
40
+ audit_deleted = resp.get("audit_operational_deleted", 0)
41
+ # #3469: `reclaim=True` can be the only thing a run did (e.g. an
42
+ # operator running `coord housekeeping --reclaim` against a DB with
43
+ # nothing currently stale) — it must not go unreported just because
44
+ # nothing else fired.
45
+ reclaimed = bool(resp.get("reclaimed"))
46
+ nothing_archived = not archived_a and not archived_n and not removed_wt and not audit_deleted
47
+ if nothing_archived:
34
48
  click.echo(
35
49
  f"housekeeping: nothing to archive (no terminal rows older than {days}d)."
36
50
  )
37
- return
38
- verb = "would archive" if dry else "archived"
39
- suffix = " (dry-run — nothing moved)" if dry else ""
40
- click.echo(
41
- f"housekeeping: {verb} {archived_a} assignment(s) + "
42
- f"{archived_n} notification(s) (terminal, older than {days}d).{suffix}"
43
- )
51
+ if not reclaimed:
52
+ return
53
+ if archived_a or archived_n:
54
+ verb = "would archive" if dry else "archived"
55
+ suffix = " (dry-run — nothing moved)" if dry else ""
56
+ click.echo(
57
+ f"housekeeping: {verb} {archived_a} assignment(s) + "
58
+ f"{archived_n} notification(s) (terminal, older than {days}d).{suffix}"
59
+ )
44
60
  if removed_wt:
45
61
  wt_verb = "would remove" if dry else "removed"
46
62
  click.echo(
47
63
  f"housekeeping: {wt_verb} {removed_wt} stale confirm-worktree(s) "
48
64
  "(#2974)."
49
65
  )
66
+ if audit_deleted:
67
+ audit_verb = "would delete" if dry else "deleted"
68
+ click.echo(
69
+ f"housekeeping: {audit_verb} {audit_deleted} stale operational "
70
+ "audit_log row(s) (#3469)."
71
+ )
72
+ if reclaimed:
73
+ click.echo("housekeeping: reclaimed disk space (VACUUM) (#3469).")
50
74
 
51
75
 
52
76
  @click.command(
@@ -58,8 +82,13 @@ def _print_housekeeping_result(resp: dict) -> None:
58
82
  "Moves terminal assignments older than COORD_ARCHIVE_RETENTION_DAYS "
59
83
  "(default 30) + their notifications into assignments_archive / "
60
84
  "notifications_archive — it NEVER deletes, and never touches active, "
61
- "recent, merge-queued, open-issue-latest, or review-linked rows. Routes "
62
- "through the daemon (the canonical DB lives there)."
85
+ "recent, merge-queued, open-issue-latest, or review-linked rows. Also "
86
+ "runs the #3469 operational-tier audit_log retention sweep (deletes "
87
+ "stale tier='operational' rows only, per audit.operational_retention_days "
88
+ "— business-tier rows are never touched). Pass --reclaim to also VACUUM "
89
+ "(dialect-routed) afterwards, so those DELETEs actually shrink the "
90
+ "on-disk DB — see 'coord housekeeping --help' for that flag's own "
91
+ "detail. Routes through the daemon (the canonical DB lives there)."
63
92
  ),
64
93
  )
65
94
 
@@ -69,9 +98,18 @@ def _print_housekeeping_result(resp: dict) -> None:
69
98
  is_flag=True,
70
99
  help="Report what would be archived without moving anything.",
71
100
  )
72
-
73
-
74
- def housekeeping(dry_run: bool) -> None:
101
+ @click.option(
102
+ "--reclaim",
103
+ is_flag=True,
104
+ help=(
105
+ "#3469: after every archive/delete above has run, also run a "
106
+ "dialect-routed space-reclaim pass (SQLite VACUUM; Postgres VACUUM) "
107
+ "so a retention sweep's DELETEs actually shrink the on-disk DB "
108
+ "artifact. One-off, operator-invoked — never run automatically by "
109
+ "the daemon's low-cadence tick. No-op when combined with --dry-run."
110
+ ),
111
+ )
112
+ def housekeeping(dry_run: bool, reclaim: bool) -> None:
75
113
  """#762: archive stale terminal board rows (active/recent/referenced kept)."""
76
114
  from coord.board_service import daemon_reroute_target # noqa: PLC0415
77
115
 
@@ -80,7 +118,12 @@ def housekeeping(dry_run: bool) -> None:
80
118
  from coord.client import post_record # noqa: PLC0415
81
119
 
82
120
  try:
83
- resp = post_record(_svc, "/housekeeping", {"dry_run": dry_run}, timeout=180.0)
121
+ resp = post_record(
122
+ _svc,
123
+ "/housekeeping",
124
+ {"dry_run": dry_run, "reclaim": reclaim},
125
+ timeout=180.0,
126
+ )
84
127
  except Exception as exc: # noqa: BLE001
85
128
  click.echo(f"error: housekeeping via daemon failed: {exc}", err=True)
86
129
  sys.exit(1)
@@ -89,7 +132,7 @@ def housekeeping(dry_run: bool) -> None:
89
132
 
90
133
  from coord import housekeeping as _hk # noqa: PLC0415
91
134
 
92
- _print_housekeeping_result(_hk.sweep(dry_run=dry_run))
135
+ _print_housekeeping_result(_hk.sweep(dry_run=dry_run, reclaim=reclaim))
93
136
 
94
137
 
95
138
  @click.command(help="Poll agents and post completion/failure comments on GitHub.")
@@ -1658,15 +1658,21 @@ class StoreConfig:
1658
1658
 
1659
1659
  @dataclass
1660
1660
  class AuditConfig:
1661
- """``audit:`` block (#1036/#1038) — the append-only ``audit_log``
1661
+ """``audit:`` block (#1036/#1038/#3469) — the append-only ``audit_log``
1662
1662
  table's tunables.
1663
1663
 
1664
- ``max_rows`` is a future retention cap, not a pruning sweep: when set
1665
- above the default ``0`` (unlimited), :func:`coord.audit.record_audit`
1666
- opportunistically deletes the oldest rows past that count after every
1667
- insert. ``0`` means keep everything forever — the default for this
1668
- milestone, since retention policy is explicitly out of scope (see the
1669
- issue's "Out of scope" section).
1664
+ ``max_rows`` is a **tier-blind** retention cap, not a pruning sweep: when
1665
+ set above the default ``0`` (unlimited), :func:`coord.audit._maybe_trim`
1666
+ opportunistically deletes the oldest rows *by ``id``, across every tier*
1667
+ past that count after every insert. Plainly: capping ``max_rows`` on a
1668
+ busy ``operational``-tier writer (e.g. #1896's ``forge_availability``)
1669
+ can just as easily delete ``business``-tier history (dispatch / test /
1670
+ review / merge verdicts) to make room — it has no concept of tier at
1671
+ all. ``0`` means keep everything forever, still the default (retention
1672
+ policy was explicitly out of scope for the milestone that introduced
1673
+ this field). Use ``operational_retention_days`` below when the intent is
1674
+ "bound the operational tier without ever touching business rows" —
1675
+ that is the tier-aware knob #3469 added for exactly this gap.
1670
1676
 
1671
1677
  ``level`` (#1038) selects how much of the audit taxonomy is captured:
1672
1678
  ``"business"`` records only real board transitions (dispatch, verdicts,
@@ -1676,10 +1682,46 @@ class AuditConfig:
1676
1682
  ``tier="operational"``, ``actor="daemon"``. Business-tier rows are
1677
1683
  always recorded regardless of ``level`` — this only gates the
1678
1684
  operational tier.
1685
+
1686
+ ``operational_retention_days`` (#3469) is a time-window retention sweep
1687
+ scoped to ``tier="operational"`` rows only — :func:`coord.audit.
1688
+ sweep_operational_retention` deletes ``operational`` rows older than
1689
+ this many days and never touches a ``business`` row, no matter how old.
1690
+ Default ``0`` disables the sweep entirely (today's behaviour: keep
1691
+ everything). Wired into :func:`coord.housekeeping.sweep`'s low-cadence
1692
+ tick, same as every other retention sweep in this codebase.
1679
1693
  """
1680
1694
 
1681
1695
  max_rows: int = 0
1682
1696
  level: str = "operational"
1697
+ operational_retention_days: float = 0.0
1698
+
1699
+
1700
+ @dataclass
1701
+ class ForgeAvailabilityConfig:
1702
+ """``forge_availability:`` block (#3469) — retention tuning for the
1703
+ ``category="forge_availability"`` rows :mod:`coord.forge_availability`
1704
+ writes into ``audit_log`` (#1896/#2654/#2988).
1705
+
1706
+ ``retention_days`` bounds how long a ``forge_availability`` row survives
1707
+ before :func:`coord.forge_availability._maybe_prune` deletes it. Default
1708
+ (30) is scoped to what ``coord diagnose --forge-availability`` actually
1709
+ reads by default (its own ``--window-days`` defaults to 30) rather than
1710
+ the historical hardcoded 90 — #3469 measured the 90-day steady state at
1711
+ ~9M rows / ~3GB for this one category alone. ``90`` remains the
1712
+ documented ceiling (:data:`coord.forge_availability.RETENTION_DAYS`):
1713
+ any configured value above it is silently clamped down to 90, never up
1714
+ — a config typo should not accidentally uncap the sweep.
1715
+
1716
+ Note the ``0`` asymmetry against ``AuditConfig.operational_retention_days``
1717
+ above: there ``0`` means "sweep disabled, keep everything forever". Here
1718
+ ``0``/negative is rejected outright (must be a positive number) — there is
1719
+ no "never prune forge_availability" concept, since #1896/#2654/#2988 is
1720
+ exactly the unbounded-growth problem this knob exists to prevent, and
1721
+ disabling it by config would silently reopen that gap.
1722
+ """
1723
+
1724
+ retention_days: float = 30.0
1683
1725
 
1684
1726
 
1685
1727
  @dataclass
@@ -2439,6 +2481,9 @@ class Config:
2439
2481
  milestone: MilestoneConfig = field(default_factory=MilestoneConfig)
2440
2482
  providers: ProvidersConfig = field(default_factory=ProvidersConfig)
2441
2483
  audit: AuditConfig = field(default_factory=AuditConfig)
2484
+ forge_availability: ForgeAvailabilityConfig = field(
2485
+ default_factory=ForgeAvailabilityConfig
2486
+ )
2442
2487
  pricing: PricingConfig = field(default_factory=PricingConfig)
2443
2488
  health: HealthConfig = field(default_factory=HealthConfig)
2444
2489
  # #1632 — absent block == disabled == today's behaviour (silence).
@@ -2706,6 +2751,7 @@ def parse_mapping(raw: Any, *, path: Path | None = None) -> Config:
2706
2751
  propagation = _parse_propagation(raw.get("propagation"))
2707
2752
  milestone = _parse_milestone(raw.get("milestone"))
2708
2753
  audit = _parse_audit(raw.get("audit"))
2754
+ forge_availability = _parse_forge_availability(raw.get("forge_availability"))
2709
2755
  pricing = _parse_pricing(raw.get("pricing"))
2710
2756
  health = _parse_health(raw.get("health"))
2711
2757
  notifications = _parse_notifications(raw.get("notifications"))
@@ -2731,6 +2777,7 @@ def parse_mapping(raw: Any, *, path: Path | None = None) -> Config:
2731
2777
  milestone=milestone,
2732
2778
  providers=providers,
2733
2779
  audit=audit,
2780
+ forge_availability=forge_availability,
2734
2781
  pricing=pricing,
2735
2782
  health=health,
2736
2783
  notifications=notifications,
@@ -4626,6 +4673,34 @@ def _parse_audit(raw: Any) -> AuditConfig:
4626
4673
  f"audit.level must be one of {_VALID_AUDIT_LEVELS!r}, got {value!r}"
4627
4674
  )
4628
4675
  cfg.level = value
4676
+ if "operational_retention_days" in raw:
4677
+ value = raw["operational_retention_days"]
4678
+ if isinstance(value, bool) or not isinstance(value, (int, float)) or value < 0:
4679
+ raise ConfigError(
4680
+ "audit.operational_retention_days must be a non-negative number"
4681
+ )
4682
+ cfg.operational_retention_days = float(value)
4683
+ return cfg
4684
+
4685
+
4686
+ def _parse_forge_availability(raw: Any) -> ForgeAvailabilityConfig:
4687
+ """Parse the optional ``forge_availability:`` block (#3469).
4688
+
4689
+ An absent block returns ``ForgeAvailabilityConfig()`` — the new 30-day
4690
+ default, itself a deliberate change from the pre-#3469 hardcoded 90-day
4691
+ retention (see that dataclass's docstring for the measured why).
4692
+ """
4693
+ if raw is None:
4694
+ return ForgeAvailabilityConfig()
4695
+ if not isinstance(raw, dict):
4696
+ raise ConfigError("'forge_availability' must be a mapping")
4697
+
4698
+ cfg = ForgeAvailabilityConfig()
4699
+ if "retention_days" in raw:
4700
+ value = raw["retention_days"]
4701
+ if isinstance(value, bool) or not isinstance(value, (int, float)) or value <= 0:
4702
+ raise ConfigError("forge_availability.retention_days must be a positive number")
4703
+ cfg.retention_days = float(value)
4629
4704
  return cfg
4630
4705
 
4631
4706
 
@@ -1387,7 +1387,9 @@ def _decide_acceptance_author(
1387
1387
  # cites), so the thing being waited for could not happen even with
1388
1388
  # `merge.auto_drain` on.
1389
1389
  return replace(
1390
- _decide_acceptance_landing(state, oracle, opts, counters, machine),
1390
+ _decide_acceptance_landing(
1391
+ state, oracle, opts, counters, machine, verifier
1392
+ ),
1391
1393
  warnings=(
1392
1394
  f"ACCEPTANCE: JIT slice {aid} is ADVISORY with commits present "
1393
1395
  "— proceeding per --accept-advisory (#1357)",
@@ -1460,7 +1462,9 @@ def _decide_acceptance_author(
1460
1462
  # Authoring finished and the branch carries commits: hand over to the
1461
1463
  # landing driver, which observes the daemon-driven Test/Review stages
1462
1464
  # and performs the one step the daemon will not (#2079 — the merge).
1463
- return _decide_acceptance_landing(state, oracle, opts, counters, machine)
1465
+ return _decide_acceptance_landing(
1466
+ state, oracle, opts, counters, machine, verifier
1467
+ )
1464
1468
 
1465
1469
  # "" / running: still authoring — nothing to drive yet.
1466
1470
  return _wait(
@@ -1476,6 +1480,7 @@ def _decide_acceptance_landing(
1476
1480
  opts: DriveOptions,
1477
1481
  counters: DriveCounters,
1478
1482
  machine: str,
1483
+ verifier: MergeVerifier,
1479
1484
  ) -> Action:
1480
1485
  """Land the authored JIT acceptance slice (#2079).
1481
1486
 
@@ -1673,7 +1678,7 @@ def _decide_acceptance_landing(
1673
1678
  merge_aid=state.acceptance_merge_aid,
1674
1679
  merge_pr_url=state.acceptance_merge_pr_url,
1675
1680
  )
1676
- action = _decide_merge(shadow, opts, counters.slice_budget())
1681
+ action = _decide_merge(shadow, opts, counters.slice_budget(), verifier)
1677
1682
  return replace(
1678
1683
  action,
1679
1684
  label=_acceptance_label(action.label),
@@ -1779,6 +1784,8 @@ class MergeVerifier(Protocol):
1779
1784
  self, state: IssueState
1780
1785
  ) -> EpicChecklistSnapshot | None: ...
1781
1786
 
1787
+ def github_backoff_active(self) -> bool: ...
1788
+
1782
1789
 
1783
1790
  def _remote_matches_repo(remote_url: str, repo_github: str) -> bool:
1784
1791
  """Loosely compare a ``git remote get-url origin`` URL against the
@@ -1991,6 +1998,26 @@ class GitMergeVerifier:
1991
1998
 
1992
1999
  return github_ops.get_branch_sha(state.repo_github, state.work_branch)
1993
2000
 
2001
+ def github_backoff_active(self) -> bool:
2002
+ """True when GitHub's shared, fleet-wide rate-limit backoff
2003
+ (:mod:`coord.github_throttle`, #2809/#2934) is currently in force.
2004
+
2005
+ #3479: the ONE thing :func:`_decide_merge`'s ``"unknown_head"`` arm
2006
+ must check before spending a live ``coord merge --only`` re-check —
2007
+ see that arm's own docstring for the latched-reason bug this
2008
+ guards against. Routed through :func:`coord.github_throttle.
2009
+ consult` (not the same-host-only :func:`~coord.github_throttle.
2010
+ current`) so this honours a backoff another machine recorded via
2011
+ the daemon, exactly like the shared funnel every live ``gh`` call
2012
+ already consults before it ever reaches GitHub — re-probing INTO a
2013
+ window another host just tripped is precisely the synchronized-
2014
+ hammering #2809 exists to prevent.
2015
+ """
2016
+ from coord import github_throttle # noqa: PLC0415
2017
+
2018
+ _sleep_s, backoff = github_throttle.consult()
2019
+ return backoff is not None
2020
+
1994
2021
  def epic_checklist_snapshot(
1995
2022
  self, state: IssueState
1996
2023
  ) -> EpicChecklistSnapshot | None:
@@ -2913,7 +2940,7 @@ def decide(
2913
2940
  warnings=warnings,
2914
2941
  )
2915
2942
 
2916
- merge = _decide_merge(state, opts, counters)
2943
+ merge = _decide_merge(state, opts, counters, verifier)
2917
2944
  return replace(merge, warnings=warnings + merge.warnings)
2918
2945
 
2919
2946
 
@@ -4275,7 +4302,10 @@ def _park_uat_fixup_dispatch_failure(
4275
4302
 
4276
4303
 
4277
4304
  def _decide_merge(
4278
- state: IssueState, opts: DriveOptions, counters: DriveCounters
4305
+ state: IssueState,
4306
+ opts: DriveOptions,
4307
+ counters: DriveCounters,
4308
+ verifier: MergeVerifier,
4279
4309
  ) -> Action:
4280
4310
  """The MERGE stage.
4281
4311
 
@@ -4335,13 +4365,55 @@ def _decide_merge(
4335
4365
  # confirmed. No retry or fix this driver can take changes GitHub's
4336
4366
  # answer; wait, exactly like the CI-unreadable case below, and never
4337
4367
  # spend a merge attempt re-observing the identical unreadable probe.
4368
+ #
4369
+ # #3479: this used to be a BARE `_wait()` for as long as this reason
4370
+ # stayed on the board — nothing here ever re-probed, so a `merge_reason`
4371
+ # from an outage that had already cleared just kept getting re-read
4372
+ # forever (quadraui#1083: 309 consecutive polls over 2.5h reprinting the
4373
+ # identical "branch head unknown" line while GitHub was fully healthy
4374
+ # the whole time — `gh auth status` OK, rate limit 5000/5000 — because
4375
+ # the REAL block, a failing required CI check, was a few lines further
4376
+ # down in `_decide_merge` and this arm returned before ever reaching
4377
+ # it). "Branch head unknown" means "wait until the probe recovers", so
4378
+ # this now actually re-probes: once the shared GitHub backoff
4379
+ # (:mod:`coord.github_throttle`, #2809/#2934 — the SAME funnel every
4380
+ # live `gh` call already consults) is no longer active, dispatch the
4381
+ # identical budget-exempt real `coord merge --only <aid>` re-check the
4382
+ # CI-unreadable arm below uses, instead of re-reading a value nothing
4383
+ # here ever refreshes. That live attempt re-evaluates every gate,
4384
+ # including CI, so a resolved outage reaches the SAME `checks_failed` →
4385
+ # `coord.commands.merge._dispatch_ci_fixes` path a human running the
4386
+ # identical command by hand already does — the quadraui#1083 recovery.
4387
+ #
4388
+ # While the backoff IS active, this still just waits, WITHOUT touching
4389
+ # `verifier`/GitHub at all — #2809's whole point is that hammering
4390
+ # GitHub during a backoff window only prolongs it, so no probe (real or
4391
+ # otherwise) is issued while one is in force.
4338
4392
  if _merge_gate_kind(gate_reason) == "unknown_head":
4339
- return _wait(
4340
- label=(
4341
- "MERGE: branch head unknown — GitHub read failed (rate "
4342
- "limit, auth, or network); waiting, not retrying (#2704): "
4343
- f"{gate_reason}"
4393
+ if verifier.github_backoff_active():
4394
+ return _wait(
4395
+ label=(
4396
+ "MERGE: branch head unknown — GitHub backoff active "
4397
+ "(#2809); waiting, not probing (#2704/#3479): "
4398
+ f"{gate_reason}"
4399
+ )
4344
4400
  )
4401
+ aid = state.merge_aid or state.work_aid
4402
+ return Action(
4403
+ kind=RUN,
4404
+ label=(
4405
+ "MERGE: branch head unknown — GitHub backoff clear, "
4406
+ "re-checking for real instead of re-reading the latched "
4407
+ f"reason (#2704/#3479): {gate_reason}"
4408
+ ),
4409
+ command=("merge", "--only", aid, "--method", opts.merge_method),
4410
+ on_error="warn",
4411
+ error_message=(
4412
+ "coord merge returned non-zero (or the merge lock timed "
4413
+ "out) while re-checking an unknown branch head — "
4414
+ "re-checking next poll"
4415
+ ),
4416
+ serialize_merge=True,
4345
4417
  )
4346
4418
  # #2947 (follow-up to #2687): the UAT gate is a human-attended block — no
4347
4419
  # `coord merge` retry can clear it, only an operator or a customer