code-coordinator 0.5.537__tar.gz → 0.5.538__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 (911) hide show
  1. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/code_coordinator.egg-info/scm_version.json +2 -2
  4. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/lifecycle.py +1 -1
  5. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/status.py +11 -2
  6. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/failure_class.py +11 -1
  7. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/progress.py +12 -1
  8. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/usage.py +35 -4
  9. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_status_provider.py +48 -0
  10. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_provider_seam.py +139 -0
  11. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_usage.py +38 -0
  12. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/.claude/commands/board.md +0 -0
  13. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/.claude/commands/complete-session.md +0 -0
  14. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/.claude/commands/coordinator.md +0 -0
  15. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/.githooks/_lib.sh +0 -0
  16. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/.githooks/post-checkout +0 -0
  17. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/.githooks/post-commit +0 -0
  18. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/.githooks/post-merge +0 -0
  19. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  20. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/.github/coord-ci-acceptance.yml +0 -0
  21. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/.github/workflows/auto-release.yml +0 -0
  22. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/.github/workflows/publish.yml +0 -0
  23. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/.github/workflows/test.yml +0 -0
  24. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/.gitignore +0 -0
  25. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/CLAUDE.md +0 -0
  26. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/GOAL.md +0 -0
  27. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/LICENSE +0 -0
  28. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/MANIFEST.in +0 -0
  29. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/README.md +0 -0
  30. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/code_coordinator.egg-info/SOURCES.txt +0 -0
  31. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/code_coordinator.egg-info/dependency_links.txt +0 -0
  32. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/code_coordinator.egg-info/entry_points.txt +0 -0
  33. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/code_coordinator.egg-info/requires.txt +0 -0
  34. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/code_coordinator.egg-info/scm_file_list.json +0 -0
  35. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/code_coordinator.egg-info/top_level.txt +0 -0
  36. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/__init__.py +0 -0
  37. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/_board_mapping.py +0 -0
  38. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/acceptance.py +0 -0
  39. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/acceptance_drivers.py +0 -0
  40. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/agent.py +0 -0
  41. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/agent_app.py +0 -0
  42. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/agent_update.py +0 -0
  43. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/agents/opencode/.gitignore +0 -0
  44. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/agents/opencode/agents/work.md +0 -0
  45. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/agents/opencode/routing.jsonc +0 -0
  46. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/approved_work.py +0 -0
  47. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/audit.py +0 -0
  48. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/auto_loop.py +0 -0
  49. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/backup.py +0 -0
  50. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/block_log.py +0 -0
  51. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/board_schema.py +0 -0
  52. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/board_service.py +0 -0
  53. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/board_wire.py +0 -0
  54. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/brain.py +0 -0
  55. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/branch_model.py +0 -0
  56. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/bug_intake.py +0 -0
  57. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/cargo_cache.py +0 -0
  58. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/ci_fix.py +0 -0
  59. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/ci_github.py +0 -0
  60. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/ci_gitlab.py +0 -0
  61. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/ci_store.py +0 -0
  62. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/claim.py +0 -0
  63. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/claude_setup_token.py +0 -0
  64. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/cli.py +0 -0
  65. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/client.py +0 -0
  66. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/codegen.py +0 -0
  67. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/__init__.py +0 -0
  68. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/_common.py +0 -0
  69. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/acceptance.py +0 -0
  70. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/agent_ops.py +0 -0
  71. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/audit.py +0 -0
  72. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/backup.py +0 -0
  73. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/chat.py +0 -0
  74. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/ci.py +0 -0
  75. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/codegen.py +0 -0
  76. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/dispatch.py +0 -0
  77. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/dispatch_workers.py +0 -0
  78. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/dr.py +0 -0
  79. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/drive.py +0 -0
  80. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/drive_queue.py +0 -0
  81. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/gate_a.py +0 -0
  82. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/gates.py +0 -0
  83. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/issues.py +0 -0
  84. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/machine.py +0 -0
  85. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/merge.py +0 -0
  86. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/milestone.py +0 -0
  87. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/plan_followup.py +0 -0
  88. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/plans.py +0 -0
  89. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/portal.py +0 -0
  90. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/pr.py +0 -0
  91. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/release.py +0 -0
  92. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/repo.py +0 -0
  93. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/report.py +0 -0
  94. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/review.py +0 -0
  95. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/scorecard.py +0 -0
  96. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/sessions.py +0 -0
  97. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/setup.py +0 -0
  98. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/store_migrate.py +0 -0
  99. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/terminal.py +0 -0
  100. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/test_gate.py +0 -0
  101. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/commands/tui.py +0 -0
  102. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/comments.py +0 -0
  103. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/config.py +0 -0
  104. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/config_reload.py +0 -0
  105. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/confirm_test.py +0 -0
  106. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/conflict_fix.py +0 -0
  107. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/dao.py +0 -0
  108. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/dashboard/__init__.py +0 -0
  109. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/dashboard/fixture.py +0 -0
  110. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/dashboard/index.html +0 -0
  111. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/dashboard/server.py +0 -0
  112. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/dashboard/terminal.py +0 -0
  113. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/db.py +0 -0
  114. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/dead_end.py +0 -0
  115. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/decomposition_chat.py +0 -0
  116. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/README.md +0 -0
  117. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-agent.service +0 -0
  118. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-backup.service +0 -0
  119. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-backup.timer +0 -0
  120. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-db-backup.service +0 -0
  121. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-db-backup.sh +0 -0
  122. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-db-backup.timer +0 -0
  123. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-dr-verify.service +0 -0
  124. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-dr-verify.timer +0 -0
  125. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-drive-queue.service +0 -0
  126. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-drive-queue.timer +0 -0
  127. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-failure-notify.service +0 -0
  128. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-fleet-watchdog.service +0 -0
  129. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  130. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-notify.service +0 -0
  131. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-notify.timer +0 -0
  132. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-release-propagate.service +0 -0
  133. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-release-propagate.timer +0 -0
  134. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-release-window.service +0 -0
  135. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-release-window.timer +0 -0
  136. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-serve.service +0 -0
  137. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-web-dist-build.service +0 -0
  138. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-web-dist-build.timer +0 -0
  139. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy/coord-web.service +0 -0
  140. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy_manifest.py +0 -0
  141. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deploy_units.py +0 -0
  142. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deprecation_telemetry.py +0 -0
  143. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/deps.py +0 -0
  144. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/diagnose.py +0 -0
  145. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/dispatch.py +0 -0
  146. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/dispatch_liveness.py +0 -0
  147. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/dist_name.py +0 -0
  148. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/dr_promote.py +0 -0
  149. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/dr_verify.py +0 -0
  150. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/drive.py +0 -0
  151. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/drive_queue.py +0 -0
  152. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/drive_sessions_snapshot.py +0 -0
  153. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/drive_state.py +0 -0
  154. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/events.py +0 -0
  155. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/failure_classifier.py +0 -0
  156. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/filelock.py +0 -0
  157. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/fleet_config_health.py +0 -0
  158. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/forge_availability.py +0 -0
  159. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/freshness.py +0 -0
  160. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/gate_a.py +0 -0
  161. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/gate_b.py +0 -0
  162. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/gate_snapshot.py +0 -0
  163. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/gates.py +0 -0
  164. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/gen_board_fixture.py +0 -0
  165. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/github_ops.py +0 -0
  166. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/github_throttle.py +0 -0
  167. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/goal.py +0 -0
  168. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/graph_health.py +0 -0
  169. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/__init__.py +0 -0
  170. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/aggregate.py +0 -0
  171. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/__init__.py +0 -0
  172. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/_ci_pin.py +0 -0
  173. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/agent_install.py +0 -0
  174. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/cargo_targets.py +0 -0
  175. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/claude_binary.py +0 -0
  176. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/config_drift.py +0 -0
  177. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/coord_tui_ci_pin.py +0 -0
  178. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/coord_web_ci_pin.py +0 -0
  179. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/deploy_lane_facts.py +0 -0
  180. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/disk.py +0 -0
  181. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/fleet_board.py +0 -0
  182. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  183. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/fleet_phantom.py +0 -0
  184. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/fleet_unit_drift.py +0 -0
  185. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/graph.py +0 -0
  186. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/graphify_cli.py +0 -0
  187. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/index_lock.py +0 -0
  188. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/issues_sync_staleness.py +0 -0
  189. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/local_machine_identity.py +0 -0
  190. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/plan_usage.py +0 -0
  191. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/pr_churn.py +0 -0
  192. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/release_cordon.py +0 -0
  193. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/repo_state.py +0 -0
  194. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/spawned_coord.py +0 -0
  195. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/stalled_pipeline.py +0 -0
  196. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/timer_active.py +0 -0
  197. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/toolchain.py +0 -0
  198. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/unit_drift.py +0 -0
  199. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/unit_enablement.py +0 -0
  200. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/wedged_drive_queue.py +0 -0
  201. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/checks/worktrees.py +0 -0
  202. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/cli.py +0 -0
  203. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/context.py +0 -0
  204. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/fleet_snapshot.py +0 -0
  205. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/models.py +0 -0
  206. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/pypi.py +0 -0
  207. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/registry.py +0 -0
  208. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/render.py +0 -0
  209. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/health/units.py +0 -0
  210. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/hooks.py +0 -0
  211. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/housekeeping.py +0 -0
  212. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/interactive.py +0 -0
  213. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/invariant_alarms.py +0 -0
  214. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/issue_store.py +0 -0
  215. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/issues_sync_status.py +0 -0
  216. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/liveness_auditor.py +0 -0
  217. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/machine_fault.py +0 -0
  218. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/machine_metrics.py +0 -0
  219. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/machine_onboard.py +0 -0
  220. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/machine_pause.py +0 -0
  221. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/machine_stats.py +0 -0
  222. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/merge_queue.py +0 -0
  223. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/milestone_chat.py +0 -0
  224. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/milestone_dispatch.py +0 -0
  225. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/milestone_gate.py +0 -0
  226. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/milestone_order.py +0 -0
  227. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/mock_author.py +0 -0
  228. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/models.py +0 -0
  229. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/network.py +0 -0
  230. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/new_issue_chat.py +0 -0
  231. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/notifier/__init__.py +0 -0
  232. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/notifier/baseline.py +0 -0
  233. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/notifier/cli.py +0 -0
  234. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/notifier/collect.py +0 -0
  235. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/notifier/digest.py +0 -0
  236. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/notifier/models.py +0 -0
  237. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/notifier/predicate.py +0 -0
  238. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/notifier/service.py +0 -0
  239. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/notifier/store.py +0 -0
  240. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/notifier/transport.py +0 -0
  241. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/notify.py +0 -0
  242. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/openapi.py +0 -0
  243. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/overlap_fence.py +0 -0
  244. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/overlap_predict.py +0 -0
  245. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/parentage.py +0 -0
  246. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/parentage_github.py +0 -0
  247. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/pipeline.py +0 -0
  248. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/plan_parser.py +0 -0
  249. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/plans.py +0 -0
  250. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/platform_paths.py +0 -0
  251. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/portal_bridge.py +0 -0
  252. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/portal_store.py +0 -0
  253. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/portal_sync.py +0 -0
  254. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/pr_body_lint.py +0 -0
  255. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/prereqs.py +0 -0
  256. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/providers/__init__.py +0 -0
  257. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/providers/base.py +0 -0
  258. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/providers/claude.py +0 -0
  259. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/providers/claude_pty.py +0 -0
  260. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/providers/opencode.py +0 -0
  261. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/queue_diagnose.py +0 -0
  262. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/reconcile.py +0 -0
  263. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/reconcile_tick.py +0 -0
  264. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/refine_chat.py +0 -0
  265. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/release_cordon.py +0 -0
  266. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/release_propagate.py +0 -0
  267. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/release_verify.py +0 -0
  268. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/release_window.py +0 -0
  269. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/repo_dormancy.py +0 -0
  270. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/repo_edit.py +0 -0
  271. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/repo_onboard.py +0 -0
  272. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/reports.py +0 -0
  273. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/rest_schema.py +0 -0
  274. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/restart_cmd.py +0 -0
  275. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/revalidate.py +0 -0
  276. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/review.py +0 -0
  277. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/scorecard.py +0 -0
  278. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/self_health.py +0 -0
  279. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/serve_app.py +0 -0
  280. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  281. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  282. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  283. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  284. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  285. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/skills/portal-followup/SKILL.md +0 -0
  286. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/skills/release-now/SKILL.md +0 -0
  287. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  288. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  289. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/skills/update-issue/SKILL.md +0 -0
  290. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/smoke.py +0 -0
  291. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/spend_ceiling.py +0 -0
  292. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/split_work.py +0 -0
  293. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/sql.py +0 -0
  294. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/stage_projection.py +0 -0
  295. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/state.py +0 -0
  296. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/store_migrate.py +0 -0
  297. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/store_parity.py +0 -0
  298. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/templates/deploy-cloudflare.node.yml +0 -0
  299. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/test_author.py +0 -0
  300. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/test_chat.py +0 -0
  301. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/test_orchestrator.py +0 -0
  302. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/test_report.py +0 -0
  303. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/tui_release.py +0 -0
  304. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/uat_checks.py +0 -0
  305. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/usage_limits.py +0 -0
  306. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/usage_rollup.py +0 -0
  307. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coord/worker_events.py +0 -0
  308. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/coordinator.example.yml +0 -0
  309. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-agent.service +0 -0
  310. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-backup.service +0 -0
  311. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-backup.timer +0 -0
  312. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-db-backup.service +0 -0
  313. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-db-backup.sh +0 -0
  314. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-db-backup.timer +0 -0
  315. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-dr-verify.service +0 -0
  316. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-dr-verify.timer +0 -0
  317. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-drive-queue.service +0 -0
  318. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-drive-queue.timer +0 -0
  319. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-failure-notify.service +0 -0
  320. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-failure-notify.sh +0 -0
  321. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-fleet-watchdog.service +0 -0
  322. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-fleet-watchdog.timer +0 -0
  323. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-notify.service +0 -0
  324. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-notify.timer +0 -0
  325. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-release-propagate.service +0 -0
  326. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-release-propagate.timer +0 -0
  327. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-release-window.service +0 -0
  328. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-release-window.timer +0 -0
  329. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-serve.service +0 -0
  330. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-web-dist-build.service +0 -0
  331. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-web-dist-build.sh +0 -0
  332. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-web-dist-build.timer +0 -0
  333. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-web-rollback.sh +0 -0
  334. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/coord-web.service +0 -0
  335. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/deploy/node-shim.sh +0 -0
  336. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/ADR_COORD_TUI_CI.md +0 -0
  337. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  338. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/ADR_COORD_WEB_CI.md +0 -0
  339. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/ADR_COORD_WEB_DIST.md +0 -0
  340. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/ADR_PY_RUST_MIRRORS.md +0 -0
  341. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/AGENT_OPERATIONS.md +0 -0
  342. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/ARCHITECTURE.md +0 -0
  343. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/ARCH_SECURITY_GATES.md +0 -0
  344. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/COCKPIT.md +0 -0
  345. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/CONTROL_CENTER.md +0 -0
  346. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/COST_DISCIPLINE.md +0 -0
  347. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/CROSS_PLATFORM.md +0 -0
  348. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/CUSTOMER_FACING_APPS.md +0 -0
  349. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/CUSTOMER_PORTAL.md +0 -0
  350. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/DATA_STORE_SELECTION.md +0 -0
  351. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/DISASTER_RECOVERY.md +0 -0
  352. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/DRIVE_QUEUE.md +0 -0
  353. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/EPHEMERAL_WORKERS.md +0 -0
  354. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/FORGE_MIGRATION.md +0 -0
  355. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/GRAPHIFY_SETUP.md +0 -0
  356. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/ISSUE_GUIDANCE.md +0 -0
  357. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/MAC_MINI.md +0 -0
  358. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  359. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/NOTIFIER.md +0 -0
  360. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/OPENCODE_VERIFICATION.md +0 -0
  361. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/OPERATING_GOTCHAS.md +0 -0
  362. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/OPERATOR_GUIDES.md +0 -0
  363. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/ORACLE_LOOP.md +0 -0
  364. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/PHONE_WEBAPP.md +0 -0
  365. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/PIPELINE_V2.md +0 -0
  366. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/PLATFORM_EVOLUTION.md +0 -0
  367. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/SECOND_BACKEND.md +0 -0
  368. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/STORE_SERVICE.md +0 -0
  369. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  370. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/WEB_CONTROL_CENTER.md +0 -0
  371. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/WSL_WINDOWS_WORKER.md +0 -0
  372. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/mocks/web/README.md +0 -0
  373. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/mocks/web/_tokens.css +0 -0
  374. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/mocks/web/issue-detail.html +0 -0
  375. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/mocks/web/pipeline-narrow.html +0 -0
  376. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/docs/mocks/web/pipeline-wide.html +0 -0
  377. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/graphify-out/.gitignore +0 -0
  378. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/install-agent.sh +0 -0
  379. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/pyproject.toml +0 -0
  380. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/audit_review_verdict_overrides.py +0 -0
  381. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  382. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/azure-workers/build-worker-image.sh +0 -0
  383. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/azure-workers/coordinator-machine.py +0 -0
  384. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/azure-workers/dr-down.sh +0 -0
  385. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/azure-workers/dr-up.sh +0 -0
  386. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/azure-workers/epic-down.sh +0 -0
  387. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/azure-workers/epic-up.sh +0 -0
  388. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/azure-workers/preflight.sh +0 -0
  389. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/azure-workers/provision-server.sh +0 -0
  390. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/azure-workers/provision-worker.sh +0 -0
  391. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  392. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  393. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/azure-workers/throwaway-vm.sh +0 -0
  394. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/azure-workers/verify-github-token.sh +0 -0
  395. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/check_gh_argv_containment.py +0 -0
  396. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/codegen.py +0 -0
  397. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/coord-test-runner.sh +0 -0
  398. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/coord-tui-scaffold/.github/coord-ci-acceptance.yml +0 -0
  399. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/coord-tui-scaffold/.github/workflows/cargo-test.yml +0 -0
  400. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/coord-tui-scaffold/.github/workflows/codegen-drift.yml +0 -0
  401. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/coord-tui-scaffold/CLAUDE.md +0 -0
  402. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/coord-venv-rollback.sh +0 -0
  403. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/drive-batch.sh +0 -0
  404. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/extract-coord-tui.sh +0 -0
  405. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/fleet_watchdog.py +0 -0
  406. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/gen_board_fixture.py +0 -0
  407. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/gen_mock_index.py +0 -0
  408. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/lib/provision-core.sh +0 -0
  409. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/next_release_tag.py +0 -0
  410. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/provision-machine.sh +0 -0
  411. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/run_tests_in_populated_home.sh +0 -0
  412. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/run_tests_without_gh.sh +0 -0
  413. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/setup-macmini.sh +0 -0
  414. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/smoke_437_interactive.py +0 -0
  415. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/verify-provision-noble.sh +0 -0
  416. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/verify_878_review_capture.py +0 -0
  417. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/verify_release_published.py +0 -0
  418. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/scripts/verify_release_wheel.py +0 -0
  419. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/setup.cfg +0 -0
  420. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/SMOKE_SET.md +0 -0
  421. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/__init__.py +0 -0
  422. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/acceptance/ms-37/conftest.py +0 -0
  423. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/acceptance/ms-37/contract.md +0 -0
  424. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/acceptance/ms-37/manifest.yml +0 -0
  425. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  426. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  427. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/acceptance/ms-51/contract.md +0 -0
  428. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  429. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  430. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/acceptance/ms-51/manifest.yml +0 -0
  431. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  432. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/acceptance/ms-51/tsconfig.json +0 -0
  433. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  434. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/backends.py +0 -0
  435. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/conftest.py +0 -0
  436. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/board-pipeline-basic.json +0 -0
  437. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  438. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  439. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  440. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  441. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/playwright/all_pass.json +0 -0
  442. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  443. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/playwright/mixed_fail.json +0 -0
  444. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  445. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  446. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/playwright/skip.json +0 -0
  447. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/playwright/truncated.json +0 -0
  448. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  449. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  450. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  451. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  452. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/test_report/pytest_error_log_record.txt +0 -0
  453. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  454. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  455. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  456. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  457. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_acceptance.py +0 -0
  458. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_acceptance_drivers.py +0 -0
  459. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent.py +0 -0
  460. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_api_error.py +0 -0
  461. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_app.py +0 -0
  462. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_branch_base.py +0 -0
  463. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_branch_capture.py +0 -0
  464. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_config_free_1712.py +0 -0
  465. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_deploy_units_endpoint.py +0 -0
  466. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_dirty_worktree.py +0 -0
  467. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  468. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_graph_self_heal.py +0 -0
  469. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_health_h3.py +0 -0
  470. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_idle_restart.py +0 -0
  471. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_push_failure.py +0 -0
  472. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_reap.py +0 -0
  473. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_repos_and_pull.py +0 -0
  474. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_restart_services_endpoint.py +0 -0
  475. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_skills_self_heal.py +0 -0
  476. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_startup_diagnostics.py +0 -0
  477. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_update.py +0 -0
  478. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_update_bluegreen.py +0 -0
  479. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_usage_limit.py +0 -0
  480. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_agent_zero_commit.py +0 -0
  481. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_ambient_home_isolation.py +0 -0
  482. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_approve_capability_reroute_3241.py +0 -0
  483. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_approve_dependency_busy_2804.py +0 -0
  484. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_approve_reject_plan.py +0 -0
  485. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_approve_usage_gate.py +0 -0
  486. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_approved_work_2532.py +0 -0
  487. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_approved_work_2996.py +0 -0
  488. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_assignment_already_recorded_daemon.py +0 -0
  489. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_audit_log.py +0 -0
  490. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_audit_outcome.py +0 -0
  491. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_audit_query.py +0 -0
  492. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_auto_loop.py +0 -0
  493. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_auto_release_publish_2035.py +0 -0
  494. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_backend_selection.py +0 -0
  495. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_backup.py +0 -0
  496. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_base_checkout_restore.py +0 -0
  497. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_block_log.py +0 -0
  498. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_board_cap_762.py +0 -0
  499. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_board_fixture.py +0 -0
  500. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_board_read_path.py +0 -0
  501. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_board_schema.py +0 -0
  502. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_board_service.py +0 -0
  503. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_board_state.py +0 -0
  504. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_board_wire.py +0 -0
  505. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_brain.py +0 -0
  506. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_branch_model.py +0 -0
  507. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_bug_intake.py +0 -0
  508. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_build_worker_image_env_update.py +0 -0
  509. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cargo_cache.py +0 -0
  510. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_check_gh_argv_containment.py +0 -0
  511. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_ci_acceptance_gate_1950.py +0 -0
  512. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_ci_fix.py +0 -0
  513. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_ci_github.py +0 -0
  514. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_ci_gitlab.py +0 -0
  515. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_ci_parity_2091.py +0 -0
  516. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_ci_store.py +0 -0
  517. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_claim.py +0 -0
  518. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_claude_md_budget.py +0 -0
  519. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_claude_setup_token.py +0 -0
  520. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_acceptance.py +0 -0
  521. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_assign.py +0 -0
  522. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  523. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_assign_interactive_remote.py +0 -0
  524. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_assign_provider.py +0 -0
  525. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  526. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_audit.py +0 -0
  527. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_chat_continue.py +0 -0
  528. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_ci.py +0 -0
  529. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_codegen.py +0 -0
  530. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_decide.py +0 -0
  531. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_diagnose_capability_rules.py +0 -0
  532. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_diagnose_config_provenance.py +0 -0
  533. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_diagnose_forge_availability.py +0 -0
  534. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_diagnose_graph.py +0 -0
  535. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_diagnose_self.py +0 -0
  536. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_diagnose_test_coverage.py +0 -0
  537. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_doctor.py +0 -0
  538. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_doctor_config_free_1801.py +0 -0
  539. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  540. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_doctor_store_backend_3084.py +0 -0
  541. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_drive.py +0 -0
  542. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_drive_queue.py +0 -0
  543. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_escalate.py +0 -0
  544. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_fix_headless_review.py +0 -0
  545. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_gate_a.py +0 -0
  546. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_install_drift.py +0 -0
  547. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_install_skills.py +0 -0
  548. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_issue_comment.py +0 -0
  549. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_issue_create_label.py +0 -0
  550. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_issue_reopen.py +0 -0
  551. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_issue_view_list.py +0 -0
  552. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_issues.py +0 -0
  553. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_merge.py +0 -0
  554. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_milestone_assign.py +0 -0
  555. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_milestone_capture.py +0 -0
  556. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_milestone_chat_add_child.py +0 -0
  557. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_milestone_dispatch.py +0 -0
  558. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_milestone_gate_b.py +0 -0
  559. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_milestone_gate_c.py +0 -0
  560. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_milestone_order.py +0 -0
  561. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  562. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_milestone_ship.py +0 -0
  563. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_network.py +0 -0
  564. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_new_issue_chat.py +0 -0
  565. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_plans.py +0 -0
  566. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_portal.py +0 -0
  567. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_pr.py +0 -0
  568. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_pull_artifact.py +0 -0
  569. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_queue.py +0 -0
  570. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_reattach_sessions.py +0 -0
  571. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_refine_board.py +0 -0
  572. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_release_preflight.py +0 -0
  573. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_release_propagate.py +0 -0
  574. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_release_window.py +0 -0
  575. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_repo_2220.py +0 -0
  576. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  577. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_scorecard.py +0 -0
  578. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_serve_store_backend_3084.py +0 -0
  579. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_set_review_findings.py +0 -0
  580. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_status_advisory_terminal.py +0 -0
  581. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_status_contested_tag.py +0 -0
  582. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_status_invariant_alarms.py +0 -0
  583. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_status_machine_fault.py +0 -0
  584. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_status_merge_queue.py +0 -0
  585. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_status_retried_3340.py +0 -0
  586. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_status_review_finalizing.py +0 -0
  587. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_status_supervisor_3366.py +0 -0
  588. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_status_test_failed_tag.py +0 -0
  589. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_status_usage_limit.py +0 -0
  590. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_sync_comments_873.py +0 -0
  591. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_test_plan.py +0 -0
  592. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_track.py +0 -0
  593. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_tui_update.py +0 -0
  594. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cli_wait.py +0 -0
  595. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_client.py +0 -0
  596. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_client_base_install.py +0 -0
  597. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_client_config_cache_atomic_3052.py +0 -0
  598. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_client_resource_migration_1946.py +0 -0
  599. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_commands_common.py +0 -0
  600. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_comments.py +0 -0
  601. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_completion_summary.py +0 -0
  602. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_config.py +0 -0
  603. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_config_acceptance.py +0 -0
  604. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_config_audit.py +0 -0
  605. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_config_drift_check.py +0 -0
  606. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_config_effective.py +0 -0
  607. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_config_pricing.py +0 -0
  608. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  609. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_config_usage_gate.py +0 -0
  610. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_confirm_test.py +0 -0
  611. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_conflict_fix.py +0 -0
  612. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_conflict_fix_semantic.py +0 -0
  613. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  614. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_coord_test.py +0 -0
  615. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_coord_test_runner_acceptance_toolchain_2936.py +0 -0
  616. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_coord_test_runner_baseline.py +0 -0
  617. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_coord_test_runner_populated_home.py +0 -0
  618. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_coord_test_runner_routing.py +0 -0
  619. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_coord_test_runner_toolchain.py +0 -0
  620. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_coord_uat.py +0 -0
  621. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_coord_web_sse_restart_live.py +0 -0
  622. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_coordinator_machine.py +0 -0
  623. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_cross_platform_imports.py +0 -0
  624. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dao.py +0 -0
  625. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dashboard.py +0 -0
  626. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dashboard_api.py +0 -0
  627. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dashboard_fixture.py +0 -0
  628. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dashboard_server.py +0 -0
  629. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dashboard_terminal.py +0 -0
  630. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dashboard_terminal_live.py +0 -0
  631. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_db.py +0 -0
  632. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dead_end.py +0 -0
  633. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_decomposition_chat.py +0 -0
  634. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_deploy_coord_db_backup.py +0 -0
  635. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_deploy_coord_web_dist.py +0 -0
  636. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_deploy_coord_web_rollback.py +0 -0
  637. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_deploy_db_backup_unit.py +0 -0
  638. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_deploy_drive_queue_unit.py +0 -0
  639. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_deploy_failure_notify_unit.py +0 -0
  640. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_deploy_manifest.py +0 -0
  641. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_deploy_notify_unit.py +0 -0
  642. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_deploy_units_lane.py +0 -0
  643. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_deploy_web_unit.py +0 -0
  644. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_deprecation_telemetry.py +0 -0
  645. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_deps.py +0 -0
  646. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_diagnose.py +0 -0
  647. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dispatch.py +0 -0
  648. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dispatch_liveness.py +0 -0
  649. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dispatch_target_validation.py +0 -0
  650. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dispatch_workers.py +0 -0
  651. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dist_name.py +0 -0
  652. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_done_housekeeping.py +0 -0
  653. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dr_azure_scripts.py +0 -0
  654. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dr_promote.py +0 -0
  655. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_dr_verify.py +0 -0
  656. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_drive.py +0 -0
  657. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_drive_machine_fault.py +0 -0
  658. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_drive_queue.py +0 -0
  659. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_drive_queue_blocked_rendering.py +0 -0
  660. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_drive_queue_launch_argv.py +0 -0
  661. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_drive_queue_max_parallel_config.py +0 -0
  662. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  663. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_drive_queue_roll_pending.py +0 -0
  664. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  665. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_drive_sessions_snapshot.py +0 -0
  666. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_drive_state.py +0 -0
  667. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_drive_tmux.py +0 -0
  668. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_epic_up_capability_detection.py +0 -0
  669. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  670. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_epic_up_image_provenance.py +0 -0
  671. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_errors.py +0 -0
  672. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_events.py +0 -0
  673. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_failure_class.py +0 -0
  674. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_failure_classifier.py +0 -0
  675. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_filelock.py +0 -0
  676. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  677. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_fix_escalation_classifier.py +0 -0
  678. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_fix_of_force_override.py +0 -0
  679. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_fleet_config_health.py +0 -0
  680. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_fleet_health_probes.py +0 -0
  681. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_fleet_health_snapshot.py +0 -0
  682. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_fleet_watchdog.py +0 -0
  683. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_forge_availability.py +0 -0
  684. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_freshness.py +0 -0
  685. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_gate_a.py +0 -0
  686. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_gate_b.py +0 -0
  687. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_gate_snapshot_staleness.py +0 -0
  688. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_gates.py +0 -0
  689. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  690. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_gen_mock_index.py +0 -0
  691. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_generated_rust_fixture.py +0 -0
  692. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_generated_rust_requests.py +0 -0
  693. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_generated_types_fixture.py +0 -0
  694. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_github_ops.py +0 -0
  695. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_github_throttle.py +0 -0
  696. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_goal.py +0 -0
  697. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_graph_health.py +0 -0
  698. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_graph_selfheal_absent_2237.py +0 -0
  699. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_handoff.py +0 -0
  700. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_checks.py +0 -0
  701. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_cli.py +0 -0
  702. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_cli_graph.py +0 -0
  703. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_config.py +0 -0
  704. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_context.py +0 -0
  705. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_coord_tui_ci_pin.py +0 -0
  706. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_coord_web_ci_pin.py +0 -0
  707. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_deploy_lane_facts.py +0 -0
  708. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_fix.py +0 -0
  709. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_incident_regression.py +0 -0
  710. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_issues_sync_staleness.py +0 -0
  711. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_pr_churn.py +0 -0
  712. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_pypi.py +0 -0
  713. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_registry.py +0 -0
  714. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_release_cordon_probe.py +0 -0
  715. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_timer_active.py +0 -0
  716. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_toolchain.py +0 -0
  717. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_unit_drift.py +0 -0
  718. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_unit_enablement.py +0 -0
  719. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_health_wedged_drive_queue.py +0 -0
  720. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_hooks.py +0 -0
  721. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_housekeeping.py +0 -0
  722. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_human_attended_437.py +0 -0
  723. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_init.py +0 -0
  724. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_install_agent_venv_2911.py +0 -0
  725. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_integration.py +0 -0
  726. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_interactive.py +0 -0
  727. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_interactive_briefing_echo.py +0 -0
  728. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_interactive_pane_log_2541.py +0 -0
  729. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_interactive_prefill_state.py +0 -0
  730. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_interactive_session_relaunch.py +0 -0
  731. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_interactive_test_verdict_backstop.py +0 -0
  732. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_interactive_token_attribution.py +0 -0
  733. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_interactive_worktree.py +0 -0
  734. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_invariant_alarms.py +0 -0
  735. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_issue_store_seam.py +0 -0
  736. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_issues_sync_status.py +0 -0
  737. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_liveness_auditor.py +0 -0
  738. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_liveness_notify.py +0 -0
  739. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_lock_contention_ratchet.py +0 -0
  740. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_machine_fault.py +0 -0
  741. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_machine_metrics.py +0 -0
  742. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_machine_onboard.py +0 -0
  743. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_machine_pause.py +0 -0
  744. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_machine_stats.py +0 -0
  745. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_merge_queue.py +0 -0
  746. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_merge_verify.py +0 -0
  747. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_milestone_chat.py +0 -0
  748. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_milestone_dispatch.py +0 -0
  749. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_milestone_gate.py +0 -0
  750. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_milestone_order.py +0 -0
  751. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_milestone_seam.py +0 -0
  752. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_mock_author.py +0 -0
  753. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_model_tiering.py +0 -0
  754. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_models.py +0 -0
  755. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_models_config_labels.py +0 -0
  756. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_needs_attention.py +0 -0
  757. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_network.py +0 -0
  758. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_new_issue_chat.py +0 -0
  759. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_next_release_tag.py +0 -0
  760. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_node_shim.py +0 -0
  761. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_notifier_baseline.py +0 -0
  762. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_notifier_cli.py +0 -0
  763. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_notifier_collect.py +0 -0
  764. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_notifier_config.py +0 -0
  765. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_notifier_drive_seam.py +0 -0
  766. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_notifier_isolation.py +0 -0
  767. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_notifier_predicate.py +0 -0
  768. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_notifier_quiet_hours.py +0 -0
  769. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_notifier_service.py +0 -0
  770. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_notify.py +0 -0
  771. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_notify_drain.py +0 -0
  772. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_openapi.py +0 -0
  773. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_operational_defaults.py +0 -0
  774. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_overlap_fence.py +0 -0
  775. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_overlap_predict.py +0 -0
  776. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_packaged_deploy_units.py +0 -0
  777. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_parentage.py +0 -0
  778. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_paste_landed.py +0 -0
  779. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  780. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_pipeline.py +0 -0
  781. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_plan_followup_approve_plan_command.py +0 -0
  782. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_plan_followup_pr_command.py +0 -0
  783. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_plan_followup_review_command.py +0 -0
  784. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_plan_only.py +0 -0
  785. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_plan_parser.py +0 -0
  786. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_platform_paths.py +0 -0
  787. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_portal_bridge.py +0 -0
  788. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_portal_config.py +0 -0
  789. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_portal_store.py +0 -0
  790. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_portal_sync.py +0 -0
  791. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_pr_body_lint.py +0 -0
  792. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_prereqs.py +0 -0
  793. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_production_db_guard.py +0 -0
  794. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_progress.py +0 -0
  795. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_providers.py +0 -0
  796. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_providers_config_labels.py +0 -0
  797. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_providers_pty.py +0 -0
  798. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_provision_core.py +0 -0
  799. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_provision_machine.py +0 -0
  800. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_py_rust_mirror_inventory.py +0 -0
  801. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_quiet_hours.py +0 -0
  802. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_quiet_hours_store_2146.py +0 -0
  803. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_reap_merged_sessions.py +0 -0
  804. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_reap_stale_interactive_tick.py +0 -0
  805. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_reconcile.py +0 -0
  806. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_reconcile_branch.py +0 -0
  807. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_reconcile_completions.py +0 -0
  808. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  809. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_reconcile_merges.py +0 -0
  810. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_reconcile_no_agent_record.py +0 -0
  811. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_reconcile_tick.py +0 -0
  812. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_reconcile_usage_limit_done.py +0 -0
  813. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_refine_chat.py +0 -0
  814. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_release_cordon_2101.py +0 -0
  815. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  816. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_release_cordon_deadlock_2240.py +0 -0
  817. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_release_cordon_drain_stall_3336.py +0 -0
  818. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_release_cordon_stuck_2490.py +0 -0
  819. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_release_propagate.py +0 -0
  820. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_release_propagate_threshold.py +0 -0
  821. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_release_roll_between_legs_2854.py +0 -0
  822. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_release_roll_window_handoff.py +0 -0
  823. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_release_unified_1242.py +0 -0
  824. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_release_verify.py +0 -0
  825. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_release_window.py +0 -0
  826. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_remote_auto_prune.py +0 -0
  827. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_remote_interactive_reaper.py +0 -0
  828. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_repo_add.py +0 -0
  829. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_repo_dormancy.py +0 -0
  830. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_repo_edit_2220.py +0 -0
  831. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_repo_graph_fleet_2237.py +0 -0
  832. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_repo_max_parallel_3423.py +0 -0
  833. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_repo_onboard_2220.py +0 -0
  834. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_report_result_push.py +0 -0
  835. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_reports.py +0 -0
  836. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_restart_cmd.py +0 -0
  837. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_retry.py +0 -0
  838. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_retry_advisory_1606.py +0 -0
  839. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_retry_escalation_classify_3360.py +0 -0
  840. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_retry_type_1636.py +0 -0
  841. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_revalidate.py +0 -0
  842. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_review.py +0 -0
  843. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_review_end_review_without_verdict.py +0 -0
  844. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_review_parse_failure_diagnostic.py +0 -0
  845. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_review_reaffirm.py +0 -0
  846. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_review_state.py +0 -0
  847. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_review_verdict_backstop.py +0 -0
  848. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_review_verdict_override_audit.py +0 -0
  849. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_review_verdict_relay.py +0 -0
  850. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_review_zero_commits.py +0 -0
  851. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_scoped_review_wiring.py +0 -0
  852. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_scorecard.py +0 -0
  853. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_self_health.py +0 -0
  854. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_serve.py +0 -0
  855. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_serve_app.py +0 -0
  856. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_serve_app_board_trim.py +0 -0
  857. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_serve_rest_routes.py +0 -0
  858. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_session.py +0 -0
  859. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_slice_issue_attribution.py +0 -0
  860. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_smoke.py +0 -0
  861. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_smoke_fanout_manifest_3333.py +0 -0
  862. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_smoke_live_checkout_restore.py +0 -0
  863. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_smoke_workflow.py +0 -0
  864. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_spend_ceiling.py +0 -0
  865. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_spend_ceiling_coordinator.py +0 -0
  866. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_split.py +0 -0
  867. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_split_work.py +0 -0
  868. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_sql_dialect.py +0 -0
  869. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_sqlite_connect_ratchet.py +0 -0
  870. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_stage_projection.py +0 -0
  871. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_stale_busy_reviewer_697.py +0 -0
  872. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_stalled_pipeline.py +0 -0
  873. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_state.py +0 -0
  874. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_state_review_findings_daemon.py +0 -0
  875. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_status_fleet_footer.py +0 -0
  876. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_stop_1567.py +0 -0
  877. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_store_contract.py +0 -0
  878. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_store_migrate.py +0 -0
  879. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_stuck.py +0 -0
  880. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_stuck_test_state_watchdog_2803.py +0 -0
  881. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_terminal_command.py +0 -0
  882. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_test_author.py +0 -0
  883. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_test_chat.py +0 -0
  884. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_test_orchestrator.py +0 -0
  885. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_test_report.py +0 -0
  886. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_test_verdict_parsing.py +0 -0
  887. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_test_verdict_transcript_floor.py +0 -0
  888. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_text_io_encoding_audit.py +0 -0
  889. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_thin_client_board_audit.py +0 -0
  890. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_thin_client_config_load_1080.py +0 -0
  891. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_thin_client_daemon_routing_906.py +0 -0
  892. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_throwaway_vm.py +0 -0
  893. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_tmux_host.py +0 -0
  894. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_tmux_session.py +0 -0
  895. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_transcript_floor.py +0 -0
  896. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_uat_checks.py +0 -0
  897. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_usage_limits.py +0 -0
  898. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_usage_rollup.py +0 -0
  899. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_venv_live_install_2121.py +0 -0
  900. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_version_single_source.py +0 -0
  901. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_watch.py +0 -0
  902. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  903. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_worker_env_venv_isolation.py +0 -0
  904. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_worker_events.py +0 -0
  905. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_worker_image_pin_sync.py +0 -0
  906. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_worker_safety.py +0 -0
  907. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_worker_test_scoping.py +0 -0
  908. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_worktree.py +0 -0
  909. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  910. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/tests/test_write_parity.py +0 -0
  911. {code_coordinator-0.5.537 → code_coordinator-0.5.538}/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.537
3
+ Version: 0.5.538
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.537
3
+ Version: 0.5.538
4
4
  Summary: Coordinate Claude Code workers across multiple machines and repos.
5
5
  Author-email: John Donaghy <johnfdonaghy@gmail.com>
6
6
  License-Expression: LicenseRef-FSL-1.1-MIT
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.537",
2
+ "tag": "0.5.538",
3
3
  "distance": 0,
4
- "node": "g0b0484bb17ec9c86ad41ee4d4d8123042044c389",
4
+ "node": "g497e677b9148b371539abe944ff11b260e6dc373",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-09-30"
@@ -428,7 +428,7 @@ def done(config_path: Path) -> None:
428
428
  pass
429
429
 
430
430
  all_assignments = list(board.active) + list(board.completed)
431
- session_usage = build_session_usage(all_assignments, started_at=started_at)
431
+ session_usage = build_session_usage(all_assignments, started_at=started_at, cfg=cfg)
432
432
  total_cost = session_usage.total_cost_usd
433
433
 
434
434
  click.echo("")
@@ -980,7 +980,7 @@ def status(config_path: Path, machine_filter: str | None, no_reconcile: bool, ti
980
980
  pass
981
981
 
982
982
  all_assignments = list(board.active) + list(board.completed)
983
- session_usage = build_session_usage(all_assignments, started_at=started_at)
983
+ session_usage = build_session_usage(all_assignments, started_at=started_at, cfg=cfg)
984
984
  burn_line = format_burn_rate_line(session_usage)
985
985
  if burn_line:
986
986
  click.echo("")
@@ -1103,7 +1103,7 @@ def status(config_path: Path, machine_filter: str | None, no_reconcile: bool, ti
1103
1103
  machine_by_aid = {
1104
1104
  a.assignment_id: a.machine_name for a in rows if a.assignment_id
1105
1105
  }
1106
- usage = build_session_usage(rows, remote_by_id=agent_completed or None)
1106
+ usage = build_session_usage(rows, remote_by_id=agent_completed or None, cfg=cfg)
1107
1107
  for au in usage.assignments:
1108
1108
  # #3376 review round 2: `cost_unknown` means no local log AND no
1109
1109
  # remote entry. That is the ghost-dispatch signal ONLY if this
@@ -2992,6 +2992,14 @@ def usage(
2992
2992
  pass
2993
2993
 
2994
2994
  # Optionally fetch remote cost data for assignments without local logs.
2995
+ # #2305: cfg is only loaded here (not unconditionally) — the bare
2996
+ # `coord usage` view has always worked with no coordinator.yml present
2997
+ # at all (see TestUsageCommandBareViewHonorsWindowFlags), and that must
2998
+ # stay true. When it IS loaded (here, or by --remote below), it's
2999
+ # threaded into build_session_usage() so a tier-named provider (e.g.
3000
+ # "oc-mid") resolves correctly instead of degrading to ClaudeProvider
3001
+ # log parsing.
3002
+ cfg: "Config | None" = None
2995
3003
  remote_by_id: dict[str, dict] = {}
2996
3004
  if remote and all_assignments:
2997
3005
  cfg = _load_config(config_path)
@@ -3027,6 +3035,7 @@ def usage(
3027
3035
  all_assignments,
3028
3036
  remote_by_id=remote_by_id if remote_by_id else None,
3029
3037
  started_at=started_at,
3038
+ cfg=cfg,
3030
3039
  )
3031
3040
  click.echo(format_usage_report(session, window_label=window_label))
3032
3041
 
@@ -79,6 +79,7 @@ from coord.worker_events import (
79
79
  )
80
80
 
81
81
  if TYPE_CHECKING:
82
+ from coord.config import Config
82
83
  from coord.providers.base import Provider
83
84
 
84
85
  # ── the two classes ─────────────────────────────────────────────────────────
@@ -461,6 +462,7 @@ def classify_log(
461
462
  tail_bytes: int = 65536,
462
463
  provider_name: str | None = None,
463
464
  provider: "Provider | None" = None,
465
+ cfg: "Config | None" = None,
464
466
  ) -> FailureClassification:
465
467
  """Classify a worker's terminal state from its log.
466
468
 
@@ -484,6 +486,14 @@ def classify_log(
484
486
  an escape hatch for tests to pass an already-constructed provider
485
487
  directly, bypassing name resolution.
486
488
 
489
+ *cfg* (#2305): the coordinator's :class:`~coord.config.Config`, passed
490
+ straight through to :func:`coord.providers.get_provider` so a
491
+ tier-named ``providers.definitions`` entry (e.g. ``oc-mid``) resolves to
492
+ its real backend instead of silently degrading to
493
+ :class:`~coord.providers.claude.ClaudeProvider` — *provider_name* alone
494
+ only ever matches the built-in type names. ``None`` (the default)
495
+ preserves pre-#2305 behaviour.
496
+
487
497
  #1710 NOTE — a documented, narrow behaviour difference from the
488
498
  pre-#1710 implementation: that version additionally scanned the raw
489
499
  ``result`` event's ``error`` and bare ``subtype`` fields (via
@@ -509,7 +519,7 @@ def classify_log(
509
519
 
510
520
  if provider is None:
511
521
  from coord.providers import get_provider # noqa: PLC0415
512
- provider = get_provider(provider_name)
522
+ provider = get_provider(provider_name, cfg=cfg)
513
523
  summary = provider.parse_log(log_path, tail_bytes=tail_bytes)
514
524
 
515
525
  classification = classify_failure(
@@ -26,6 +26,7 @@ from pathlib import Path
26
26
  from typing import TYPE_CHECKING
27
27
 
28
28
  if TYPE_CHECKING:
29
+ from coord.config import Config
29
30
  from coord.providers.base import Provider
30
31
 
31
32
 
@@ -118,6 +119,7 @@ def parse_progress(
118
119
  *,
119
120
  provider_name: str | None = None,
120
121
  provider: "Provider | None" = None,
122
+ cfg: "Config | None" = None,
121
123
  ) -> WorkerProgress:
122
124
  """Parse progress from a worker log.
123
125
 
@@ -137,6 +139,15 @@ def parse_progress(
137
139
  precedence over *provider_name*. Mainly for tests that want to
138
140
  exercise a specific (e.g. fake, non-claude) provider without
139
141
  wiring up a full :class:`~coord.config.Config`.
142
+ cfg: The coordinator's :class:`~coord.config.Config`, when the caller
143
+ has one in scope. #2305: without this, ``provider_name`` only
144
+ ever resolves against the built-in provider *types*
145
+ (``claude``/``claude-pty``/``opencode``) — a **tier-named**
146
+ ``providers.definitions`` entry (e.g. ``oc-mid``) silently
147
+ degrades to :class:`~coord.providers.claude.ClaudeProvider`.
148
+ Passed straight through to :func:`coord.providers.get_provider`;
149
+ ``None`` (the default) preserves the pre-#2305 built-ins-only
150
+ resolution, so existing callers are unaffected.
140
151
  """
141
152
  from coord.worker_events import detect_anomalies, is_stream_json
142
153
 
@@ -147,7 +158,7 @@ def parse_progress(
147
158
  if is_stream_json(p):
148
159
  if provider is None:
149
160
  from coord.providers import get_provider # noqa: PLC0415
150
- provider = get_provider(provider_name)
161
+ provider = get_provider(provider_name, cfg=cfg)
151
162
  summary = provider.parse_log(p, tail_bytes=tail_bytes)
152
163
  progress = WorkerProgress()
153
164
  # Synthesise a single rolling "update" line so coord status keeps
@@ -27,6 +27,7 @@ from coord.models import Assignment
27
27
  from coord.state import COORD_DIR
28
28
 
29
29
  if TYPE_CHECKING:
30
+ from coord.config import Config
30
31
  from coord.providers.base import Provider
31
32
 
32
33
  _log = logging.getLogger(__name__)
@@ -155,6 +156,7 @@ def parse_usage_from_log(
155
156
  *,
156
157
  provider_name: str | None = None,
157
158
  provider: "Provider | None" = None,
159
+ cfg: "Config | None" = None,
158
160
  ) -> AssignmentUsage | None:
159
161
  """Parse an :class:`AssignmentUsage` from a worker log file.
160
162
 
@@ -172,6 +174,14 @@ def parse_usage_from_log(
172
174
  behaviour byte-for-byte for every caller that doesn't pass it. *provider*
173
175
  is an escape hatch to pass an already-constructed provider directly
174
176
  (tests; bypasses name resolution).
177
+
178
+ *cfg* (#2305): the coordinator's :class:`~coord.config.Config`, passed
179
+ straight through to :func:`coord.providers.get_provider` so a
180
+ **tier-named** ``providers.definitions`` entry (e.g. ``oc-mid``) resolves
181
+ to its real backend instead of silently degrading to
182
+ :class:`~coord.providers.claude.ClaudeProvider` — *provider_name* alone
183
+ only ever matches the built-in type names. ``None`` (the default)
184
+ preserves pre-#2305 behaviour.
175
185
  """
176
186
  from coord.worker_events import is_stream_json
177
187
 
@@ -179,7 +189,7 @@ def parse_usage_from_log(
179
189
  return None
180
190
  if provider is None:
181
191
  from coord.providers import get_provider # noqa: PLC0415
182
- provider = get_provider(provider_name)
192
+ provider = get_provider(provider_name, cfg=cfg)
183
193
  if not is_stream_json(log_path):
184
194
  # #1710: a provider that claims it reports cost but whose log isn't
185
195
  # stream-json shaped gets NO cost/token data here — that mismatch is
@@ -221,6 +231,7 @@ def _assignment_to_usage(
221
231
  *,
222
232
  logs_dir: Path | None = None,
223
233
  remote_data: dict | None = None,
234
+ cfg: "Config | None" = None,
224
235
  ) -> AssignmentUsage:
225
236
  """Build an :class:`AssignmentUsage` for *a*.
226
237
 
@@ -229,6 +240,12 @@ def _assignment_to_usage(
229
240
 
230
241
  *remote_data* is a dict from the agent's ``list_assignments()`` response
231
242
  (e.g. ``{"cost_so_far": 0.12, "model_used": "claude-sonnet-4-6", ...}``).
243
+
244
+ *cfg* (#2305): threaded through to both the local-log parse and the
245
+ "neither local nor remote" ``get_provider`` fallback below, so a
246
+ tier-named provider (e.g. ``oc-mid``) resolves to its real backend
247
+ rather than :class:`~coord.providers.claude.ClaudeProvider`. ``None``
248
+ (the default) preserves pre-#2305 behaviour.
232
249
  """
233
250
  _logs_dir = logs_dir if logs_dir is not None else LOGS_DIR
234
251
  from coord.models import effective_issue_number # noqa: PLC0415
@@ -252,7 +269,7 @@ def _assignment_to_usage(
252
269
  # #1710: thread the assignment's resolved provider name through so
253
270
  # the parse uses the right provider's parse_log() rather than always
254
271
  # assuming claude.
255
- parsed = parse_usage_from_log(log_path, provider_name=a.provider_name)
272
+ parsed = parse_usage_from_log(log_path, provider_name=a.provider_name, cfg=cfg)
256
273
  if parsed is not None:
257
274
  usage.model = parsed.model or a.model
258
275
  usage.total_cost_usd = parsed.total_cost_usd
@@ -283,7 +300,7 @@ def _assignment_to_usage(
283
300
  if a.assignment_id:
284
301
  from coord.providers import get_provider # noqa: PLC0415
285
302
 
286
- provider = get_provider(a.provider_name)
303
+ provider = get_provider(a.provider_name, cfg=cfg)
287
304
  if provider.capabilities().cost_reporting:
288
305
  usage.cost_unknown = True
289
306
 
@@ -298,6 +315,7 @@ def collect_usage(
298
315
  *,
299
316
  logs_dir: Path | None = None,
300
317
  remote_by_id: dict[str, dict] | None = None,
318
+ cfg: "Config | None" = None,
301
319
  ) -> list[AssignmentUsage]:
302
320
  """Collect :class:`AssignmentUsage` for every assignment on the board.
303
321
 
@@ -305,13 +323,21 @@ def collect_usage(
305
323
  whose logs live on a remote machine. Pass ``None`` (the default) to skip
306
324
  remote lookups entirely — the result will still be correct for any
307
325
  assignment whose log is available locally.
326
+
327
+ *cfg* (#2305): the coordinator's :class:`~coord.config.Config`, when the
328
+ caller has one — threaded to :func:`_assignment_to_usage` so a
329
+ tier-named ``providers.definitions`` entry resolves correctly rather
330
+ than degrading to :class:`~coord.providers.claude.ClaudeProvider`.
331
+ ``None`` (the default) preserves pre-#2305 behaviour.
308
332
  """
309
333
  result: list[AssignmentUsage] = []
310
334
  for a in board_assignments:
311
335
  if not a.assignment_id:
312
336
  continue
313
337
  remote = (remote_by_id or {}).get(a.assignment_id)
314
- result.append(_assignment_to_usage(a, logs_dir=logs_dir, remote_data=remote))
338
+ result.append(
339
+ _assignment_to_usage(a, logs_dir=logs_dir, remote_data=remote, cfg=cfg)
340
+ )
315
341
  return result
316
342
 
317
343
 
@@ -321,12 +347,16 @@ def build_session_usage(
321
347
  logs_dir: Path | None = None,
322
348
  remote_by_id: dict[str, dict] | None = None,
323
349
  started_at: float | None = None,
350
+ cfg: "Config | None" = None,
324
351
  ) -> SessionUsage:
325
352
  """Build a :class:`SessionUsage` from the current board.
326
353
 
327
354
  *started_at* should come from ``session.json["started_at"]`` (parsed to
328
355
  a Unix timestamp). If not provided we fall back to the oldest
329
356
  ``dispatched_at`` among the assignments.
357
+
358
+ *cfg* (#2305): passed straight through to :func:`collect_usage` — see
359
+ its docstring.
330
360
  """
331
361
  if started_at is None:
332
362
  # Derive from oldest dispatch time on the board.
@@ -341,6 +371,7 @@ def build_session_usage(
341
371
  board_assignments,
342
372
  logs_dir=logs_dir,
343
373
  remote_by_id=remote_by_id,
374
+ cfg=cfg,
344
375
  )
345
376
  return SessionUsage(started_at=started_at, assignments=assignments)
346
377
 
@@ -17,13 +17,18 @@ stays uncluttered — only a non-default backend earns the tag.
17
17
 
18
18
  from __future__ import annotations
19
19
 
20
+ import logging
21
+ from pathlib import Path
22
+
20
23
  import coord.network as network_mod
24
+ import pytest
21
25
  from click.testing import CliRunner
22
26
 
23
27
  from coord.commands.status import status as status_cmd
24
28
  from coord.models import Assignment, Board
25
29
  from coord.network import MachineStatus, StatusResult
26
30
  from coord.state import save_board
31
+ from tests.conftest import VALID_CONFIG
27
32
 
28
33
 
29
34
  def _work(
@@ -188,3 +193,46 @@ def test_busy_line_omits_provider_when_absent(valid_config_path, monkeypatch) ->
188
193
  )
189
194
  assert result.exit_code == 0, result.output
190
195
  assert "provider=" not in result.output, result.output
196
+
197
+
198
+ # ── #2305: tier-named providers.definitions must resolve, not degrade ──────
199
+
200
+
201
+ @pytest.fixture
202
+ def tier_provider_config_path(tmp_path: Path) -> Path:
203
+ """`valid_config_path` plus a tier-named `providers.definitions` entry —
204
+ the real fleet shape #2305 is about (`oc-mid` etc.), not a builtin
205
+ provider *type* name."""
206
+ p = tmp_path / "coordinator.yml"
207
+ p.write_text(
208
+ VALID_CONFIG
209
+ + "\nproviders:\n"
210
+ " definitions:\n"
211
+ " oc-mid:\n"
212
+ " type: opencode\n"
213
+ )
214
+ return p
215
+
216
+
217
+ def test_status_resolves_tier_named_provider_without_warning(
218
+ tier_provider_config_path, monkeypatch, coord_db, caplog: pytest.LogCaptureFixture,
219
+ ) -> None:
220
+ """#2305 acceptance criterion: `coord status` against a board holding a
221
+ tier-named assignment (`oc-mid`, not a built-in `claude`/`claude-pty`/
222
+ `opencode` type name) must resolve the assignment's own provider
223
+ definition — no `get_provider: unknown provider_name` warning — because
224
+ `build_session_usage()` (feeding the burn-rate line) is now handed
225
+ `cfg`, which carries `providers.definitions`."""
226
+ save_board(Board(completed=[_work("w1", provider_name="oc-mid")]))
227
+ monkeypatch.setattr(network_mod, "check_all", lambda *a, **k: [])
228
+ runner = CliRunner()
229
+ with caplog.at_level(logging.WARNING, logger="coord.providers"):
230
+ result = runner.invoke(
231
+ status_cmd,
232
+ ["--config", str(tier_provider_config_path)],
233
+ catch_exceptions=False,
234
+ )
235
+ assert result.exit_code == 0, result.output
236
+ assert not any(
237
+ "unknown provider_name" in r.message for r in caplog.records
238
+ ), [r.message for r in caplog.records]
@@ -36,15 +36,42 @@ from pathlib import Path
36
36
 
37
37
  import pytest
38
38
 
39
+ from coord.config import Config, ProviderDef, ProvidersConfig
39
40
  from coord.failure_class import ENVIRONMENTAL, WORK, classify_log
40
41
  from coord.progress import parse_progress
41
42
  from coord.providers import get_provider
42
43
  from coord.providers.base import Capabilities, Provider, WorkerSummary
43
44
  from coord.providers.claude import ClaudeProvider
45
+ from coord.providers.opencode import OpenCodeProvider
44
46
  from coord.review import parse_review_from_log
45
47
  from coord.usage import parse_usage_from_log
46
48
 
47
49
 
50
+ #: A real, verbatim opencode capture (#1703/#1704) — same fixture
51
+ #: ``tests/test_providers.py`` pins ``OpenCodeProvider.parse_log()``'s exact
52
+ #: field values against. Reused here (#2305) as the "vehicle" log for
53
+ #: proving ``cfg``-based resolution of a **tier-named** provider definition
54
+ #: (e.g. ``oc-mid``) actually reaches ``OpenCodeProvider.parse_log()`` at
55
+ #: each of the four #2305 call sites, without depending on a real opencode
56
+ #: binary — the fixture is a static capture, not a live run.
57
+ _OPENCODE_FIXTURE = Path(__file__).parent / "fixtures" / "opencode_run_sample.jsonl"
58
+
59
+
60
+ def _cfg_with_tier_provider(name: str, ptype: str) -> Config:
61
+ """A minimal :class:`~coord.config.Config` whose ``providers.definitions``
62
+ carries one entry keyed by a **tier name** (e.g. ``"oc-mid"``) rather
63
+ than a built-in provider *type* name — the #2305 shape: the name alone
64
+ doesn't match ``_BUILTIN_PROVIDER_TYPES``, so resolution only succeeds
65
+ when the caller actually threads ``cfg`` through to
66
+ :func:`coord.providers.get_provider`.
67
+ """
68
+ return Config(
69
+ repos=[],
70
+ machines=[],
71
+ providers=ProvidersConfig(definitions={name: ProviderDef(type=ptype)}),
72
+ )
73
+
74
+
48
75
  # ── The fake provider ───────────────────────────────────────────────────────
49
76
 
50
77
 
@@ -185,6 +212,30 @@ class TestGetProvider:
185
212
  "totally-unknown-provider" in r.message for r in caplog.records
186
213
  ), "unknown provider_name must produce a LOUD warning, not a silent fallback (#1710)"
187
214
 
215
+ def test_tier_named_definition_degrades_to_claude_without_cfg(
216
+ self, caplog: pytest.LogCaptureFixture
217
+ ) -> None:
218
+ """#2305: this is the bug itself, pinned directly at the seam —
219
+ ``oc-mid`` is a real fleet tier name (see the issue), not a typo.
220
+ Without ``cfg`` there is no ``providers.definitions`` to consult, so
221
+ it degrades to :class:`ClaudeProvider`, loudly."""
222
+ with caplog.at_level(logging.WARNING, logger="coord.providers"):
223
+ provider = get_provider("oc-mid")
224
+ assert isinstance(provider, ClaudeProvider)
225
+ assert any("oc-mid" in r.message for r in caplog.records)
226
+
227
+ def test_tier_named_definition_resolves_via_cfg(
228
+ self, caplog: pytest.LogCaptureFixture
229
+ ) -> None:
230
+ """#2305 fix: with ``cfg`` threaded through, the same tier name
231
+ resolves against ``cfg.providers.definitions`` — the *type* backing
232
+ it (``opencode``), not :class:`ClaudeProvider`, and with no warning."""
233
+ cfg = _cfg_with_tier_provider("oc-mid", "opencode")
234
+ with caplog.at_level(logging.WARNING, logger="coord.providers"):
235
+ provider = get_provider("oc-mid", cfg=cfg)
236
+ assert isinstance(provider, OpenCodeProvider)
237
+ assert not caplog.records
238
+
188
239
 
189
240
  # ── progress.py ──────────────────────────────────────────────────────────────
190
241
 
@@ -250,6 +301,23 @@ class TestProgressSeam:
250
301
  progress = parse_progress(log)
251
302
  assert progress.updates == ["Turn 1: Bash"]
252
303
 
304
+ def test_tier_named_definition_misparses_without_cfg(self) -> None:
305
+ """#2305 regression: `parse_progress`'s own `get_provider()` call
306
+ (the site at `coord/progress.py:150`) is never handed `cfg` here —
307
+ `oc-mid` degrades to ClaudeProvider, which has no idea how to read
308
+ opencode's `step_finish` events, so the real 4-turn run reads as 0."""
309
+ assert _OPENCODE_FIXTURE.exists(), "opencode_run_sample.jsonl fixture is missing"
310
+ progress = parse_progress(_OPENCODE_FIXTURE, provider_name="oc-mid")
311
+ assert progress.updates == ["Turn 0: edit"]
312
+
313
+ def test_tier_named_definition_parses_correctly_with_cfg(self) -> None:
314
+ """#2305 fix: threading `cfg` through resolves `oc-mid` to
315
+ `OpenCodeProvider` at the `coord/progress.py:150` site, and the real
316
+ 4-turn count from the verbatim capture comes through."""
317
+ cfg = _cfg_with_tier_provider("oc-mid", "opencode")
318
+ progress = parse_progress(_OPENCODE_FIXTURE, provider_name="oc-mid", cfg=cfg)
319
+ assert progress.updates == ["Turn 4: edit"]
320
+
253
321
 
254
322
  # ── usage.py ─────────────────────────────────────────────────────────────────
255
323
 
@@ -314,6 +382,27 @@ class TestUsageSeam:
314
382
  assert usage is None
315
383
  assert not caplog.records
316
384
 
385
+ def test_tier_named_definition_misparses_without_cfg(self) -> None:
386
+ """#2305 regression: the `get_provider()` call at `coord/usage.py:182`
387
+ with no `cfg` degrades `oc-mid` to ClaudeProvider — the real 8392
388
+ input tokens in the verbatim opencode capture read as 0."""
389
+ u = parse_usage_from_log(_OPENCODE_FIXTURE, provider_name="oc-mid")
390
+ assert u is not None
391
+ assert u.input_tokens == 0
392
+ assert u.num_turns == 0
393
+
394
+ def test_tier_named_definition_parses_correctly_with_cfg(self) -> None:
395
+ """#2305 fix: `cfg` threaded through resolves `oc-mid` to
396
+ `OpenCodeProvider` at `coord/usage.py:182`, so the real numbers from
397
+ the verbatim capture come through (see
398
+ `test_opencode_parse_log_real_success_fixture` in
399
+ `tests/test_providers.py` for where these values are pinned)."""
400
+ cfg = _cfg_with_tier_provider("oc-mid", "opencode")
401
+ u = parse_usage_from_log(_OPENCODE_FIXTURE, provider_name="oc-mid", cfg=cfg)
402
+ assert u is not None
403
+ assert u.input_tokens == 8392
404
+ assert u.num_turns == 4
405
+
317
406
 
318
407
  # ── failure_class.py ─────────────────────────────────────────────────────────
319
408
 
@@ -354,6 +443,56 @@ class TestFailureClassificationSeam:
354
443
  assert c.failure_class == WORK
355
444
  assert any("nonexistent-provider" in r.message for r in caplog.records)
356
445
 
446
+ def test_tier_named_definition_misclassifies_without_cfg(
447
+ self, tmp_path: Path
448
+ ) -> None:
449
+ """#2305 regression: the `get_provider()` call at
450
+ `coord/failure_class.py:~511` with no `cfg` degrades `oc-mid` to
451
+ ClaudeProvider — ClaudeProvider's parser has no idea how to read
452
+ opencode's `type: "error"` event, so a genuine environmental 503
453
+ classifies as an unknown WORK failure instead."""
454
+ log = _write_fake_log(
455
+ tmp_path / "opencode-error.log",
456
+ [
457
+ json.dumps(
458
+ {
459
+ "type": "error",
460
+ "error": {
461
+ "name": "UnknownError",
462
+ "data": {"message": "API Error: 503 overloaded_error"},
463
+ },
464
+ }
465
+ ),
466
+ ],
467
+ )
468
+ c = classify_log(log, provider_name="oc-mid")
469
+ assert c.failure_class == WORK
470
+
471
+ def test_tier_named_definition_classifies_correctly_with_cfg(
472
+ self, tmp_path: Path
473
+ ) -> None:
474
+ """#2305 fix: `cfg` threaded through resolves `oc-mid` to
475
+ `OpenCodeProvider` at the `coord/failure_class.py` site, so the same
476
+ log correctly classifies as ENVIRONMENTAL."""
477
+ log = _write_fake_log(
478
+ tmp_path / "opencode-error.log",
479
+ [
480
+ json.dumps(
481
+ {
482
+ "type": "error",
483
+ "error": {
484
+ "name": "UnknownError",
485
+ "data": {"message": "API Error: 503 overloaded_error"},
486
+ },
487
+ }
488
+ ),
489
+ ],
490
+ )
491
+ cfg = _cfg_with_tier_provider("oc-mid", "opencode")
492
+ c = classify_log(log, provider_name="oc-mid", cfg=cfg)
493
+ assert c.failure_class == ENVIRONMENTAL
494
+ assert c.api_status == 503
495
+
357
496
 
358
497
  # ── review.py (unchanged code path — asserted for #1710's acceptance bar) ───
359
498
 
@@ -13,6 +13,7 @@ from click.testing import CliRunner
13
13
 
14
14
  import coord.state as state_mod
15
15
  from coord.cli import main
16
+ from coord.config import Config, ProviderDef, ProvidersConfig
16
17
  from coord.models import Assignment
17
18
  from coord.usage import (
18
19
  HIGH_BURN_RATE_USD_PER_HOUR,
@@ -60,6 +61,7 @@ def _assignment(
60
61
  model: str | None = None,
61
62
  dispatched_at: float | None = None,
62
63
  finished_at: float | None = None,
64
+ provider_name: str | None = None,
63
65
  ) -> Assignment:
64
66
  return Assignment(
65
67
  machine_name="m1",
@@ -71,6 +73,7 @@ def _assignment(
71
73
  model=model,
72
74
  dispatched_at=dispatched_at,
73
75
  finished_at=finished_at,
76
+ provider_name=provider_name,
74
77
  )
75
78
 
76
79
 
@@ -375,6 +378,41 @@ class TestCollectUsage:
375
378
  result = collect_usage([a], logs_dir=logs_dir)
376
379
  assert result[0].cost_unknown is False
377
380
 
381
+ def test_tier_named_provider_cost_unknown_wrong_without_cfg(
382
+ self, tmp_path: Path
383
+ ) -> None:
384
+ """#2305 regression: the `get_provider()` call at
385
+ `coord/usage.py:~286` (the "neither local log nor remote data"
386
+ fallback) has no `cfg` to consult here — a tier name that maps to a
387
+ non-cost-reporting backend (`claude-pty`) degrades to the built-in
388
+ `ClaudeProvider`, which *does* report cost, so this ghost-dispatch
389
+ row wrongly flags `cost_unknown=True` for a provider that was never
390
+ expected to report cost in the first place."""
391
+ logs_dir = tmp_path / "logs" # empty — no local log
392
+ a = _assignment(assignment_id="ghost002", provider_name="interactive-tier")
393
+ result = collect_usage([a], logs_dir=logs_dir) # no cfg
394
+ assert result[0].cost_unknown is True
395
+
396
+ def test_tier_named_provider_cost_unknown_correct_with_cfg(
397
+ self, tmp_path: Path
398
+ ) -> None:
399
+ """#2305 fix: `cfg` threaded through `collect_usage` ->
400
+ `_assignment_to_usage` -> `get_provider()` resolves
401
+ `interactive-tier` to `claude-pty` (`cost_reporting=False`), so the
402
+ ghost-dispatch row correctly stays `cost_unknown=False` — there was
403
+ never any cost to have captured."""
404
+ logs_dir = tmp_path / "logs" # empty — no local log
405
+ a = _assignment(assignment_id="ghost002", provider_name="interactive-tier")
406
+ cfg = Config(
407
+ repos=[],
408
+ machines=[],
409
+ providers=ProvidersConfig(
410
+ definitions={"interactive-tier": ProviderDef(type="claude-pty")}
411
+ ),
412
+ )
413
+ result = collect_usage([a], logs_dir=logs_dir, cfg=cfg)
414
+ assert result[0].cost_unknown is False
415
+
378
416
 
379
417
  class TestBuildSessionUsage:
380
418
  def test_derives_started_at_from_dispatch_time(self, tmp_path: Path) -> None: