code-coordinator 0.5.243__tar.gz → 0.5.245__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 (861) hide show
  1. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/CLAUDE.md +3 -4
  2. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/PKG-INFO +1 -1
  3. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/code_coordinator.egg-info/PKG-INFO +1 -1
  4. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/code_coordinator.egg-info/SOURCES.txt +7 -0
  5. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/code_coordinator.egg-info/scm_file_list.json +7 -0
  6. code_coordinator-0.5.245/code_coordinator.egg-info/scm_version.json +8 -0
  7. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/__init__.py +20 -2
  8. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/acceptance_drivers.py +14 -0
  9. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/agent.py +135 -30
  10. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/audit.py +7 -3
  11. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/board_bool_guard.py +9 -0
  12. code_coordinator-0.5.245/coord/board_schema.py +393 -0
  13. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/client.py +75 -0
  14. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/_common.py +162 -37
  15. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/acceptance.py +64 -1
  16. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/chat.py +3 -1
  17. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/dispatch.py +3 -1
  18. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/dispatch_workers.py +3 -1
  19. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/drive_queue.py +15 -7
  20. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/merge.py +2 -3
  21. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/portal.py +694 -27
  22. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/release.py +26 -13
  23. code_coordinator-0.5.245/coord/commands/repo.py +1259 -0
  24. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/sessions.py +78 -54
  25. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/test_gate.py +13 -5
  26. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/dao.py +95 -83
  27. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/dashboard/server.py +12 -30
  28. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/db.py +708 -446
  29. code_coordinator-0.5.245/coord/decomposition_chat.py +536 -0
  30. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/drive.py +68 -6
  31. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/drive_queue.py +91 -17
  32. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/drive_state.py +107 -42
  33. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/forge_availability.py +3 -1
  34. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/gates.py +35 -22
  35. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/github_ops.py +226 -2
  36. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/housekeeping.py +16 -13
  37. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/interactive.py +14 -4
  38. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/issue_store.py +35 -16
  39. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/merge_queue.py +364 -49
  40. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/notify.py +3 -1
  41. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/openapi.py +7 -80
  42. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/platform_paths.py +23 -3
  43. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/portal_store.py +805 -94
  44. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/portal_sync.py +268 -13
  45. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/release_cordon.py +228 -20
  46. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/release_propagate.py +10 -4
  47. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/repo_edit.py +94 -0
  48. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/repo_onboard.py +224 -10
  49. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/reports.py +13 -8
  50. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/serve_app.py +333 -34
  51. code_coordinator-0.5.245/coord/sql.py +509 -0
  52. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/state.py +300 -211
  53. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/test_chat.py +3 -1
  54. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/test_orchestrator.py +3 -1
  55. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/worker_events.py +41 -8
  56. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/fleet_watchdog.py +12 -1
  57. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/gen_board_fixture.py +12 -10
  58. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/conftest.py +224 -4
  59. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_acceptance_drivers.py +22 -0
  60. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent.py +118 -70
  61. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_app.py +44 -14
  62. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_branch_capture.py +12 -10
  63. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_reap.py +48 -2
  64. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_zero_commit.py +53 -47
  65. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_audit_log.py +28 -2
  66. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_board_fixture.py +10 -5
  67. code_coordinator-0.5.245/tests/test_board_schema.py +404 -0
  68. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cargo_cache.py +52 -23
  69. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_acceptance.py +84 -0
  70. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_portal.py +502 -3
  71. code_coordinator-0.5.245/tests/test_commands_common.py +449 -0
  72. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_coord_test_runner_populated_home.py +35 -17
  73. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_coord_test_runner_routing.py +3 -1
  74. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_dao.py +34 -0
  75. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_dashboard_terminal.py +22 -0
  76. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_db.py +482 -0
  77. code_coordinator-0.5.245/tests/test_decomposition_chat.py +787 -0
  78. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_drive.py +102 -4
  79. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_drive_queue.py +183 -11
  80. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_drive_state.py +114 -8
  81. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_epic_up_down_symlinked_config_1887.py +3 -1
  82. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_filelock.py +10 -0
  83. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_fleet_watchdog.py +41 -0
  84. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_gates.py +27 -0
  85. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_github_ops.py +59 -0
  86. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_human_attended_437.py +7 -3
  87. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_issue_store_seam.py +72 -0
  88. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_merge_queue.py +448 -0
  89. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_model_tiering.py +71 -44
  90. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_openapi.py +3 -3
  91. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_plan_only.py +9 -3
  92. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_platform_paths.py +92 -0
  93. code_coordinator-0.5.245/tests/test_portal_store.py +1184 -0
  94. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_portal_sync.py +232 -0
  95. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_progress.py +22 -14
  96. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_release_cordon_deadlock_2240.py +385 -0
  97. code_coordinator-0.5.245/tests/test_repo_add.py +540 -0
  98. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_repo_edit_2220.py +120 -0
  99. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_repo_onboard_2220.py +192 -0
  100. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_serve.py +16 -1
  101. code_coordinator-0.5.245/tests/test_sql_dialect.py +768 -0
  102. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_state.py +296 -2
  103. code_coordinator-0.5.245/tests/test_store_contract.py +1021 -0
  104. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_version_single_source.py +58 -0
  105. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_worker_events.py +58 -0
  106. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_worker_image_pin_sync.py +6 -4
  107. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_worktree.py +52 -20
  108. code_coordinator-0.5.243/code_coordinator.egg-info/scm_version.json +0 -8
  109. code_coordinator-0.5.243/coord/commands/repo.py +0 -497
  110. code_coordinator-0.5.243/coord/decomposition_chat.py +0 -286
  111. code_coordinator-0.5.243/tests/test_decomposition_chat.py +0 -272
  112. code_coordinator-0.5.243/tests/test_portal_store.py +0 -465
  113. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/.claude/commands/board.md +0 -0
  114. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/.claude/commands/complete-session.md +0 -0
  115. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/.claude/commands/coordinator.md +0 -0
  116. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/.githooks/_lib.sh +0 -0
  117. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/.githooks/post-checkout +0 -0
  118. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/.githooks/post-commit +0 -0
  119. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/.githooks/post-merge +0 -0
  120. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  121. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/.github/coord-ci-acceptance.yml +0 -0
  122. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/.github/workflows/auto-release.yml +0 -0
  123. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/.github/workflows/cargo-test.yml +0 -0
  124. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/.github/workflows/publish.yml +0 -0
  125. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/.github/workflows/release-tui.yml +0 -0
  126. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/.github/workflows/test.yml +0 -0
  127. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/.gitignore +0 -0
  128. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/GOAL.md +0 -0
  129. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/LICENSE +0 -0
  130. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/MANIFEST.in +0 -0
  131. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/README.md +0 -0
  132. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/code_coordinator.egg-info/dependency_links.txt +0 -0
  133. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/code_coordinator.egg-info/entry_points.txt +0 -0
  134. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/code_coordinator.egg-info/requires.txt +0 -0
  135. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/code_coordinator.egg-info/top_level.txt +0 -0
  136. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/_board_mapping.py +0 -0
  137. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/acceptance.py +0 -0
  138. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/agent_app.py +0 -0
  139. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/agent_update.py +0 -0
  140. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/agents/opencode/.gitignore +0 -0
  141. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/agents/opencode/agents/work.md +0 -0
  142. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/agents/opencode/routing.jsonc +0 -0
  143. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/approved_work.py +0 -0
  144. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/auto_loop.py +0 -0
  145. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/block_log.py +0 -0
  146. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/board_service.py +0 -0
  147. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/board_wire.py +0 -0
  148. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/brain.py +0 -0
  149. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/branch_model.py +0 -0
  150. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/bug_intake.py +0 -0
  151. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/cargo_cache.py +0 -0
  152. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/ci_fix.py +0 -0
  153. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/ci_github.py +0 -0
  154. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/ci_gitlab.py +0 -0
  155. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/ci_store.py +0 -0
  156. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/claim.py +0 -0
  157. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/cli.py +0 -0
  158. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/__init__.py +0 -0
  159. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/agent_ops.py +0 -0
  160. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/audit.py +0 -0
  161. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/drive.py +0 -0
  162. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/gate_a.py +0 -0
  163. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/gates.py +0 -0
  164. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/issues.py +0 -0
  165. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/lifecycle.py +0 -0
  166. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/milestone.py +0 -0
  167. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/plan_followup.py +0 -0
  168. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/plans.py +0 -0
  169. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/report.py +0 -0
  170. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/review.py +0 -0
  171. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/scorecard.py +0 -0
  172. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/setup.py +0 -0
  173. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/status.py +0 -0
  174. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/terminal.py +0 -0
  175. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/commands/tui.py +0 -0
  176. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/comments.py +0 -0
  177. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/config.py +0 -0
  178. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/config_reload.py +0 -0
  179. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/confirm_test.py +0 -0
  180. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/conflict_fix.py +0 -0
  181. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/dashboard/__init__.py +0 -0
  182. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/dashboard/fixture.py +0 -0
  183. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/dashboard/index.html +0 -0
  184. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/dashboard/terminal.py +0 -0
  185. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/dead_end.py +0 -0
  186. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/README.md +0 -0
  187. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-agent.service +0 -0
  188. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-db-backup.service +0 -0
  189. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-db-backup.sh +0 -0
  190. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-db-backup.timer +0 -0
  191. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-drive-queue.service +0 -0
  192. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-drive-queue.timer +0 -0
  193. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-failure-notify.service +0 -0
  194. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-fleet-watchdog.service +0 -0
  195. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  196. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-notify.service +0 -0
  197. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-notify.timer +0 -0
  198. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-release-propagate.service +0 -0
  199. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-release-propagate.timer +0 -0
  200. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-release-window.service +0 -0
  201. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-release-window.timer +0 -0
  202. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-serve.service +0 -0
  203. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-web-dist-build.service +0 -0
  204. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-web-dist-build.timer +0 -0
  205. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy/coord-web.service +0 -0
  206. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy_manifest.py +0 -0
  207. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deploy_units.py +0 -0
  208. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/deps.py +0 -0
  209. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/diagnose.py +0 -0
  210. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/dispatch.py +0 -0
  211. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/dist_name.py +0 -0
  212. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/events.py +0 -0
  213. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/failure_class.py +0 -0
  214. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/filelock.py +0 -0
  215. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/fleet_config_health.py +0 -0
  216. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/freshness.py +0 -0
  217. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/gate_a.py +0 -0
  218. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/gate_b.py +0 -0
  219. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/gate_snapshot.py +0 -0
  220. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/goal.py +0 -0
  221. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/graph_health.py +0 -0
  222. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/__init__.py +0 -0
  223. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/aggregate.py +0 -0
  224. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/__init__.py +0 -0
  225. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/agent_install.py +0 -0
  226. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/cargo_targets.py +0 -0
  227. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/claude_binary.py +0 -0
  228. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/coord_web_ci_pin.py +0 -0
  229. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/deploy_lane_facts.py +0 -0
  230. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/disk.py +0 -0
  231. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/fleet_board.py +0 -0
  232. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  233. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/fleet_phantom.py +0 -0
  234. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/fleet_unit_drift.py +0 -0
  235. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/graph.py +0 -0
  236. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/graphify_cli.py +0 -0
  237. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/index_lock.py +0 -0
  238. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/plan_usage.py +0 -0
  239. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/release_cordon.py +0 -0
  240. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/repo_state.py +0 -0
  241. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/spawned_coord.py +0 -0
  242. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/stalled_pipeline.py +0 -0
  243. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/timer_active.py +0 -0
  244. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/toolchain.py +0 -0
  245. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/unit_drift.py +0 -0
  246. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/unit_enablement.py +0 -0
  247. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/checks/worktrees.py +0 -0
  248. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/cli.py +0 -0
  249. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/context.py +0 -0
  250. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/fleet_snapshot.py +0 -0
  251. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/models.py +0 -0
  252. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/pypi.py +0 -0
  253. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/registry.py +0 -0
  254. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/render.py +0 -0
  255. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/health/units.py +0 -0
  256. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/hooks.py +0 -0
  257. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/liveness_auditor.py +0 -0
  258. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/machine_pause.py +0 -0
  259. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/milestone_chat.py +0 -0
  260. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/milestone_dispatch.py +0 -0
  261. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/milestone_gate.py +0 -0
  262. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/milestone_order.py +0 -0
  263. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/mock_author.py +0 -0
  264. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/models.py +0 -0
  265. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/network.py +0 -0
  266. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/new_issue_chat.py +0 -0
  267. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/notifier/__init__.py +0 -0
  268. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/notifier/baseline.py +0 -0
  269. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/notifier/cli.py +0 -0
  270. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/notifier/collect.py +0 -0
  271. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/notifier/digest.py +0 -0
  272. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/notifier/models.py +0 -0
  273. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/notifier/predicate.py +0 -0
  274. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/notifier/service.py +0 -0
  275. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/notifier/store.py +0 -0
  276. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/notifier/transport.py +0 -0
  277. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/overlap_fence.py +0 -0
  278. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/overlap_predict.py +0 -0
  279. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/parentage.py +0 -0
  280. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/parentage_github.py +0 -0
  281. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/pipeline.py +0 -0
  282. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/plan_parser.py +0 -0
  283. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/plans.py +0 -0
  284. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/portal_bridge.py +0 -0
  285. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/pr_body_lint.py +0 -0
  286. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/prereqs.py +0 -0
  287. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/progress.py +0 -0
  288. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/providers/__init__.py +0 -0
  289. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/providers/base.py +0 -0
  290. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/providers/claude.py +0 -0
  291. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/providers/claude_pty.py +0 -0
  292. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/providers/opencode.py +0 -0
  293. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/queue_diagnose.py +0 -0
  294. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/reconcile.py +0 -0
  295. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/reconcile_tick.py +0 -0
  296. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/refine_chat.py +0 -0
  297. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/release_verify.py +0 -0
  298. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/release_window.py +0 -0
  299. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/revalidate.py +0 -0
  300. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/review.py +0 -0
  301. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/scorecard.py +0 -0
  302. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/self_health.py +0 -0
  303. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  304. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  305. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  306. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  307. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  308. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/skills/portal-followup/SKILL.md +0 -0
  309. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  310. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  311. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/skills/update-issue/SKILL.md +0 -0
  312. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/smoke.py +0 -0
  313. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/spend_ceiling.py +0 -0
  314. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/split_work.py +0 -0
  315. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/stage_projection.py +0 -0
  316. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/test_author.py +0 -0
  317. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/test_report.py +0 -0
  318. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/tui_release.py +0 -0
  319. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/usage.py +0 -0
  320. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/usage_limits.py +0 -0
  321. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coord/usage_rollup.py +0 -0
  322. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/coordinator.example.yml +0 -0
  323. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-agent.service +0 -0
  324. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-db-backup.service +0 -0
  325. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-db-backup.sh +0 -0
  326. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-db-backup.timer +0 -0
  327. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-drive-queue.service +0 -0
  328. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-drive-queue.timer +0 -0
  329. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-failure-notify.service +0 -0
  330. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-failure-notify.sh +0 -0
  331. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-fleet-watchdog.service +0 -0
  332. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-fleet-watchdog.timer +0 -0
  333. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-notify.service +0 -0
  334. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-notify.timer +0 -0
  335. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-release-propagate.service +0 -0
  336. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-release-propagate.timer +0 -0
  337. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-release-window.service +0 -0
  338. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-release-window.timer +0 -0
  339. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-serve.service +0 -0
  340. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-web-dist-build.service +0 -0
  341. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-web-dist-build.sh +0 -0
  342. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-web-dist-build.timer +0 -0
  343. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-web-rollback.sh +0 -0
  344. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/coord-web.service +0 -0
  345. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/deploy/node-shim.sh +0 -0
  346. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  347. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/ADR_COORD_WEB_CI.md +0 -0
  348. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/ADR_COORD_WEB_DIST.md +0 -0
  349. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/AGENT_OPERATIONS.md +0 -0
  350. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/ARCHITECTURE.md +0 -0
  351. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/ARCH_SECURITY_GATES.md +0 -0
  352. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/COCKPIT.md +0 -0
  353. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/CONTROL_CENTER.md +0 -0
  354. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/COST_DISCIPLINE.md +0 -0
  355. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/CROSS_PLATFORM.md +0 -0
  356. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/CUSTOMER_FACING_APPS.md +0 -0
  357. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/CUSTOMER_PORTAL.md +0 -0
  358. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/DRIVE_QUEUE.md +0 -0
  359. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/EPHEMERAL_WORKERS.md +0 -0
  360. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/FORGE_MIGRATION.md +0 -0
  361. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/GRAPHIFY_SETUP.md +0 -0
  362. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/ISSUE_GUIDANCE.md +0 -0
  363. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/MAC_MINI.md +0 -0
  364. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  365. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/NOTIFIER.md +0 -0
  366. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/OPENCODE_VERIFICATION.md +0 -0
  367. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/OPERATING_GOTCHAS.md +0 -0
  368. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/ORACLE_LOOP.md +0 -0
  369. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/PHONE_WEBAPP.md +0 -0
  370. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/PIPELINE_V2.md +0 -0
  371. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/PLATFORM_EVOLUTION.md +0 -0
  372. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/SECOND_BACKEND.md +0 -0
  373. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/STORE_SERVICE.md +0 -0
  374. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  375. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/WEB_CONTROL_CENTER.md +0 -0
  376. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/WSL_WINDOWS_WORKER.md +0 -0
  377. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/mocks/web/README.md +0 -0
  378. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/mocks/web/_tokens.css +0 -0
  379. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/mocks/web/issue-detail.html +0 -0
  380. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/mocks/web/pipeline-narrow.html +0 -0
  381. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/docs/mocks/web/pipeline-wide.html +0 -0
  382. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/graphify-out/.gitignore +0 -0
  383. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/install-agent.sh +0 -0
  384. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/pyproject.toml +0 -0
  385. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/audit_review_verdict_overrides.py +0 -0
  386. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  387. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/azure-workers/build-worker-image.sh +0 -0
  388. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/azure-workers/coordinator-machine.py +0 -0
  389. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/azure-workers/epic-down.sh +0 -0
  390. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/azure-workers/epic-up.sh +0 -0
  391. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/azure-workers/preflight.sh +0 -0
  392. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/azure-workers/provision-worker.sh +0 -0
  393. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  394. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  395. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/azure-workers/verify-github-token.sh +0 -0
  396. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/check_gh_argv_containment.py +0 -0
  397. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/codegen.py +0 -0
  398. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/coord-test-runner.sh +0 -0
  399. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/coord-venv-rollback.sh +0 -0
  400. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/drive-batch.sh +0 -0
  401. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/gen_mock_index.py +0 -0
  402. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/next_release_tag.py +0 -0
  403. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/run_tests_in_populated_home.sh +0 -0
  404. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/run_tests_without_gh.sh +0 -0
  405. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/smoke_437_interactive.py +0 -0
  406. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/verify_878_review_capture.py +0 -0
  407. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/verify_release_published.py +0 -0
  408. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/scripts/verify_release_wheel.py +0 -0
  409. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/setup.cfg +0 -0
  410. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/SMOKE_SET.md +0 -0
  411. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/__init__.py +0 -0
  412. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  413. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-33/contract.md +0 -0
  414. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-33/manifest.yml +0 -0
  415. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  416. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  417. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  418. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  419. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-37/conftest.py +0 -0
  420. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-37/contract.md +0 -0
  421. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-37/manifest.yml +0 -0
  422. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  423. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  424. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-38/contract.md +0 -0
  425. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-38/manifest.yml +0 -0
  426. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  427. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  428. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  429. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  430. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  431. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  432. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  433. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  434. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  435. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  436. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-51/contract.md +0 -0
  437. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  438. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  439. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-51/manifest.yml +0 -0
  440. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  441. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-51/tsconfig.json +0 -0
  442. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  443. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  444. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  445. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/contract.md +0 -0
  446. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  447. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/manifest.yml +0 -0
  448. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  449. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  450. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  451. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  452. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  453. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  454. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  455. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  456. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  457. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  458. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  459. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
  460. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-67/contract.md +0 -0
  461. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
  462. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-67/manifest.yml +0 -0
  463. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
  464. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
  465. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
  466. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
  467. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
  468. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
  469. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  470. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/board-pipeline-basic.json +0 -0
  471. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  472. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  473. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  474. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  475. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/playwright/all_pass.json +0 -0
  476. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  477. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/playwright/mixed_fail.json +0 -0
  478. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  479. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  480. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/playwright/skip.json +0 -0
  481. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/playwright/truncated.json +0 -0
  482. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  483. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  484. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  485. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  486. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  487. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  488. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  489. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  490. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_acceptance.py +0 -0
  491. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_api_error.py +0 -0
  492. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_branch_base.py +0 -0
  493. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_config_free_1712.py +0 -0
  494. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_deploy_units_endpoint.py +0 -0
  495. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_dirty_worktree.py +0 -0
  496. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  497. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_graph_self_heal.py +0 -0
  498. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_health_h3.py +0 -0
  499. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_idle_restart.py +0 -0
  500. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_push_failure.py +0 -0
  501. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_repos_and_pull.py +0 -0
  502. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_restart_services_endpoint.py +0 -0
  503. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_skills_self_heal.py +0 -0
  504. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_startup_diagnostics.py +0 -0
  505. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_update.py +0 -0
  506. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_update_bluegreen.py +0 -0
  507. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_agent_usage_limit.py +0 -0
  508. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_ambient_home_isolation.py +0 -0
  509. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_approve_reject_plan.py +0 -0
  510. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_approve_usage_gate.py +0 -0
  511. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_approved_work_2532.py +0 -0
  512. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_assignment_already_recorded_daemon.py +0 -0
  513. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_audit_outcome.py +0 -0
  514. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_audit_query.py +0 -0
  515. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_auto_loop.py +0 -0
  516. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_auto_release_publish_2035.py +0 -0
  517. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_base_checkout_restore.py +0 -0
  518. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_block_log.py +0 -0
  519. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_board_cap_762.py +0 -0
  520. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_board_read_path.py +0 -0
  521. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_board_service.py +0 -0
  522. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_board_state.py +0 -0
  523. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_board_wire.py +0 -0
  524. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_brain.py +0 -0
  525. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_branch_model.py +0 -0
  526. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_bug_intake.py +0 -0
  527. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_build_worker_image_env_update.py +0 -0
  528. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_check_gh_argv_containment.py +0 -0
  529. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_ci_acceptance_gate_1950.py +0 -0
  530. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_ci_fix.py +0 -0
  531. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_ci_gitlab.py +0 -0
  532. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_ci_parity_2091.py +0 -0
  533. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_ci_store.py +0 -0
  534. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_claim.py +0 -0
  535. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_assign.py +0 -0
  536. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  537. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_assign_interactive_remote.py +0 -0
  538. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_assign_provider.py +0 -0
  539. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  540. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_audit.py +0 -0
  541. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_chat_continue.py +0 -0
  542. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_decide.py +0 -0
  543. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_diagnose_config_provenance.py +0 -0
  544. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_diagnose_forge_availability.py +0 -0
  545. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_diagnose_graph.py +0 -0
  546. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_diagnose_self.py +0 -0
  547. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_doctor.py +0 -0
  548. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_doctor_config_free_1801.py +0 -0
  549. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  550. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_drive.py +0 -0
  551. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_drive_queue.py +0 -0
  552. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_escalate.py +0 -0
  553. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_fix_headless_review.py +0 -0
  554. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_gate_a.py +0 -0
  555. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_install_drift.py +0 -0
  556. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_install_skills.py +0 -0
  557. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_issue_comment.py +0 -0
  558. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_issue_create_label.py +0 -0
  559. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_issue_reopen.py +0 -0
  560. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_issue_view_list.py +0 -0
  561. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_merge.py +0 -0
  562. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_milestone_assign.py +0 -0
  563. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_milestone_capture.py +0 -0
  564. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_milestone_chat_add_child.py +0 -0
  565. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_milestone_dispatch.py +0 -0
  566. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_milestone_gate_b.py +0 -0
  567. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_milestone_gate_c.py +0 -0
  568. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_milestone_order.py +0 -0
  569. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  570. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_milestone_ship.py +0 -0
  571. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_network.py +0 -0
  572. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_new_issue_chat.py +0 -0
  573. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_plans.py +0 -0
  574. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_pull_artifact.py +0 -0
  575. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_queue.py +0 -0
  576. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_reattach_sessions.py +0 -0
  577. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_refine_board.py +0 -0
  578. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_release_preflight.py +0 -0
  579. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_release_propagate.py +0 -0
  580. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_release_window.py +0 -0
  581. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_repo_2220.py +0 -0
  582. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  583. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_scorecard.py +0 -0
  584. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_set_review_findings.py +0 -0
  585. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_status_advisory_terminal.py +0 -0
  586. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_status_contested_tag.py +0 -0
  587. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_status_merge_queue.py +0 -0
  588. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_status_provider.py +0 -0
  589. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_status_review_finalizing.py +0 -0
  590. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_status_test_failed_tag.py +0 -0
  591. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_status_usage_limit.py +0 -0
  592. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_sync_comments_873.py +0 -0
  593. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_test_plan.py +0 -0
  594. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_track.py +0 -0
  595. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_tui_update.py +0 -0
  596. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cli_wait.py +0 -0
  597. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_client_base_install.py +0 -0
  598. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_comments.py +0 -0
  599. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_completion_summary.py +0 -0
  600. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_config.py +0 -0
  601. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_config_acceptance.py +0 -0
  602. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_config_audit.py +0 -0
  603. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_config_pricing.py +0 -0
  604. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  605. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_config_usage_gate.py +0 -0
  606. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_confirm_test.py +0 -0
  607. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_conflict_fix.py +0 -0
  608. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_conflict_fix_semantic.py +0 -0
  609. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  610. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_coord_test.py +0 -0
  611. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_coord_test_runner_baseline.py +0 -0
  612. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_coord_test_runner_toolchain.py +0 -0
  613. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_coord_uat.py +0 -0
  614. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_coord_web_sse_restart_live.py +0 -0
  615. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_coordinator_machine.py +0 -0
  616. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_cross_platform_imports.py +0 -0
  617. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_dashboard.py +0 -0
  618. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_dashboard_fixture.py +0 -0
  619. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_dashboard_terminal_live.py +0 -0
  620. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_dead_end.py +0 -0
  621. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_deploy_coord_db_backup.py +0 -0
  622. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_deploy_coord_web_dist.py +0 -0
  623. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_deploy_coord_web_rollback.py +0 -0
  624. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_deploy_drive_queue_unit.py +0 -0
  625. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_deploy_failure_notify_unit.py +0 -0
  626. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_deploy_manifest.py +0 -0
  627. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_deploy_notify_unit.py +0 -0
  628. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_deploy_units_lane.py +0 -0
  629. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_deploy_web_unit.py +0 -0
  630. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_deps.py +0 -0
  631. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_diagnose.py +0 -0
  632. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_dispatch.py +0 -0
  633. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_dispatch_target_validation.py +0 -0
  634. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_dist_name.py +0 -0
  635. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_done_housekeeping.py +0 -0
  636. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_drive_queue_blocked_rendering.py +0 -0
  637. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_drive_queue_launch_argv.py +0 -0
  638. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  639. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_drive_queue_roll_pending.py +0 -0
  640. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  641. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_drive_tmux.py +0 -0
  642. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_epic_up_capability_detection.py +0 -0
  643. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_epic_up_image_provenance.py +0 -0
  644. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_errors.py +0 -0
  645. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_events.py +0 -0
  646. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_failure_class.py +0 -0
  647. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  648. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_fix_of_force_override.py +0 -0
  649. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_fleet_config_health.py +0 -0
  650. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_fleet_health_probes.py +0 -0
  651. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_fleet_health_snapshot.py +0 -0
  652. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_forge_availability.py +0 -0
  653. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_freshness.py +0 -0
  654. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_gate_a.py +0 -0
  655. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_gate_b.py +0 -0
  656. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_gate_snapshot_staleness.py +0 -0
  657. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  658. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_gen_mock_index.py +0 -0
  659. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_generated_types_fixture.py +0 -0
  660. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_goal.py +0 -0
  661. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_graph_health.py +0 -0
  662. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_graph_selfheal_absent_2237.py +0 -0
  663. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_handoff.py +0 -0
  664. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_checks.py +0 -0
  665. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_cli.py +0 -0
  666. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_cli_graph.py +0 -0
  667. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_config.py +0 -0
  668. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_context.py +0 -0
  669. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_coord_web_ci_pin.py +0 -0
  670. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_deploy_lane_facts.py +0 -0
  671. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_fix.py +0 -0
  672. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_incident_regression.py +0 -0
  673. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_pypi.py +0 -0
  674. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_registry.py +0 -0
  675. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_release_cordon_probe.py +0 -0
  676. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_timer_active.py +0 -0
  677. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_toolchain.py +0 -0
  678. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_unit_drift.py +0 -0
  679. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_health_unit_enablement.py +0 -0
  680. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_hooks.py +0 -0
  681. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_init.py +0 -0
  682. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_integration.py +0 -0
  683. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_interactive_briefing_echo.py +0 -0
  684. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_interactive_pane_log_2541.py +0 -0
  685. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_interactive_prefill_state.py +0 -0
  686. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_interactive_session_relaunch.py +0 -0
  687. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_interactive_test_verdict_backstop.py +0 -0
  688. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_interactive_token_attribution.py +0 -0
  689. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_interactive_worktree.py +0 -0
  690. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_liveness_auditor.py +0 -0
  691. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_liveness_notify.py +0 -0
  692. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_machine_pause.py +0 -0
  693. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_merge_verify.py +0 -0
  694. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_milestone_chat.py +0 -0
  695. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_milestone_dispatch.py +0 -0
  696. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_milestone_gate.py +0 -0
  697. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_milestone_order.py +0 -0
  698. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_milestone_seam.py +0 -0
  699. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_mock_author.py +0 -0
  700. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_models.py +0 -0
  701. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_models_config_labels.py +0 -0
  702. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_needs_attention.py +0 -0
  703. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_network.py +0 -0
  704. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_new_issue_chat.py +0 -0
  705. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_next_release_tag.py +0 -0
  706. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_node_shim.py +0 -0
  707. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_notifier_baseline.py +0 -0
  708. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_notifier_cli.py +0 -0
  709. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_notifier_collect.py +0 -0
  710. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_notifier_config.py +0 -0
  711. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_notifier_drive_seam.py +0 -0
  712. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_notifier_isolation.py +0 -0
  713. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_notifier_predicate.py +0 -0
  714. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_notifier_quiet_hours.py +0 -0
  715. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_notifier_service.py +0 -0
  716. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_notify.py +0 -0
  717. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_notify_drain.py +0 -0
  718. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_operational_defaults.py +0 -0
  719. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_overlap_fence.py +0 -0
  720. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_overlap_predict.py +0 -0
  721. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_packaged_deploy_units.py +0 -0
  722. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_parentage.py +0 -0
  723. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_paste_landed.py +0 -0
  724. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  725. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_pipeline.py +0 -0
  726. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_plan_followup_approve_plan_command.py +0 -0
  727. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_plan_followup_pr_command.py +0 -0
  728. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_plan_followup_review_command.py +0 -0
  729. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_plan_parser.py +0 -0
  730. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_portal_bridge.py +0 -0
  731. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_portal_config.py +0 -0
  732. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_pr_body_lint.py +0 -0
  733. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_prereqs.py +0 -0
  734. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_production_db_guard.py +0 -0
  735. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_provider_seam.py +0 -0
  736. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_providers.py +0 -0
  737. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_providers_config_labels.py +0 -0
  738. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_providers_pty.py +0 -0
  739. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_quiet_hours.py +0 -0
  740. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_quiet_hours_store_2146.py +0 -0
  741. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_reap_merged_sessions.py +0 -0
  742. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_reap_stale_interactive_tick.py +0 -0
  743. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_reconcile.py +0 -0
  744. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_reconcile_branch.py +0 -0
  745. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_reconcile_completions.py +0 -0
  746. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  747. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_reconcile_merges.py +0 -0
  748. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_reconcile_no_agent_record.py +0 -0
  749. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_reconcile_tick.py +0 -0
  750. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_reconcile_usage_limit_done.py +0 -0
  751. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_refine_chat.py +0 -0
  752. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_release_cordon_2101.py +0 -0
  753. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  754. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_release_cordon_stuck_2490.py +0 -0
  755. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_release_propagate.py +0 -0
  756. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_release_propagate_threshold.py +0 -0
  757. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_release_roll_window_handoff.py +0 -0
  758. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_release_unified_1242.py +0 -0
  759. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_release_verify.py +0 -0
  760. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_release_window.py +0 -0
  761. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_remote_auto_prune.py +0 -0
  762. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_remote_interactive_reaper.py +0 -0
  763. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_repo_graph_fleet_2237.py +0 -0
  764. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_report_result_push.py +0 -0
  765. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_reports.py +0 -0
  766. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_retry.py +0 -0
  767. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_retry_advisory_1606.py +0 -0
  768. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_retry_type_1636.py +0 -0
  769. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_revalidate.py +0 -0
  770. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_review.py +0 -0
  771. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_review_end_review_without_verdict.py +0 -0
  772. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_review_parse_failure_diagnostic.py +0 -0
  773. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_review_reaffirm.py +0 -0
  774. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_review_state.py +0 -0
  775. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_review_verdict_backstop.py +0 -0
  776. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_review_verdict_override_audit.py +0 -0
  777. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_review_verdict_relay.py +0 -0
  778. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_review_zero_commits.py +0 -0
  779. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_scoped_review_wiring.py +0 -0
  780. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_scorecard.py +0 -0
  781. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_self_health.py +0 -0
  782. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_serve_app_board_trim.py +0 -0
  783. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_session.py +0 -0
  784. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_slice_issue_attribution.py +0 -0
  785. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_smoke.py +0 -0
  786. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_smoke_live_checkout_restore.py +0 -0
  787. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_smoke_workflow.py +0 -0
  788. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_spend_ceiling.py +0 -0
  789. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_spend_ceiling_coordinator.py +0 -0
  790. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_split.py +0 -0
  791. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_split_work.py +0 -0
  792. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_stage_projection.py +0 -0
  793. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_stalled_pipeline.py +0 -0
  794. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_state_review_findings_daemon.py +0 -0
  795. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_status_fleet_footer.py +0 -0
  796. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_stop_1567.py +0 -0
  797. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_stuck.py +0 -0
  798. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_terminal_command.py +0 -0
  799. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_test_author.py +0 -0
  800. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_test_chat.py +0 -0
  801. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_test_orchestrator.py +0 -0
  802. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_test_report.py +0 -0
  803. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_test_verdict_parsing.py +0 -0
  804. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_test_verdict_transcript_floor.py +0 -0
  805. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_text_io_encoding_audit.py +0 -0
  806. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_thin_client_board_audit.py +0 -0
  807. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_thin_client_config_load_1080.py +0 -0
  808. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_thin_client_daemon_routing_906.py +0 -0
  809. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_tmux_host.py +0 -0
  810. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_tmux_session.py +0 -0
  811. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_transcript_floor.py +0 -0
  812. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_usage.py +0 -0
  813. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_usage_limits.py +0 -0
  814. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_usage_rollup.py +0 -0
  815. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_venv_live_install_2121.py +0 -0
  816. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_watch.py +0 -0
  817. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  818. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_worker_env_venv_isolation.py +0 -0
  819. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_worker_safety.py +0 -0
  820. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_worker_test_scoping.py +0 -0
  821. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  822. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/Cargo.lock +0 -0
  823. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/Cargo.toml +0 -0
  824. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/cargo-config-local-quadraui.toml.example +0 -0
  825. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/approved.rs +0 -0
  826. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/audit.rs +0 -0
  827. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/chat.rs +0 -0
  828. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/data.rs +0 -0
  829. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/dialogs.rs +0 -0
  830. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/doc_tabs.rs +0 -0
  831. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/drive.rs +0 -0
  832. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/drive_queue.rs +0 -0
  833. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/escalation.rs +0 -0
  834. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/events.rs +0 -0
  835. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/fixtures.rs +0 -0
  836. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/fleet_health.rs +0 -0
  837. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/fleet_sessions.rs +0 -0
  838. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/fleet_terminals.rs +0 -0
  839. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/format.rs +0 -0
  840. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/milestone_dag.rs +0 -0
  841. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/mod.rs +0 -0
  842. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/msv.rs +0 -0
  843. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/pipeline.rs +0 -0
  844. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/plans.rs +0 -0
  845. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/render.rs +0 -0
  846. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/reports.rs +0 -0
  847. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/sessions.rs +0 -0
  848. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/settings_ui.rs +0 -0
  849. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/sidebar.rs +0 -0
  850. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/terminal.rs +0 -0
  851. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/tests.rs +0 -0
  852. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/types.rs +0 -0
  853. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/app/workspace.rs +0 -0
  854. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/bin/gtk.rs +0 -0
  855. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/commands.rs +0 -0
  856. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/lib.rs +0 -0
  857. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/main.rs +0 -0
  858. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/src/settings.rs +0 -0
  859. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/tests/acceptance.rs +0 -0
  860. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/tests/cli.rs +0 -0
  861. {code_coordinator-0.5.243 → code_coordinator-0.5.245}/tui/tests/fixtures/board_sample.json +0 -0
@@ -223,10 +223,9 @@ versus keep in the coordinator session) are in
223
223
  bypassed by the one class of session most likely to reach for `gh` out of habit. Reads are
224
224
  covered too — `coord issue list` and `coord issue view` shipped in #2484, so a plain issue
225
225
  listing/search or an issue-plus-comments lookup has no excuse to reach for `gh`. Where no
226
- `coord` subcommand covers what's needed — still a real gap in places as of 2026-08 (e.g. #2643:
227
- `coord issue` can create/edit/label/close but cannot post a plain comment on an issue that stays
228
- open) — falling back to `gh` for that one call is fine, but say so and treat it as a gap to flag
229
- or file, not a silent workaround.
226
+ `coord` subcommand covers what's needed — the seam is wide but not total, so check
227
+ `coord <group> --help` before concluding either way — falling back to `gh` for that one call is
228
+ fine, but say so and treat it as a gap to flag or file, not a silent workaround.
230
229
 
231
230
  ## Testing — black-box coverage is the acceptance bar
232
231
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.243
3
+ Version: 0.5.245
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.243
3
+ Version: 0.5.245
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
@@ -41,6 +41,7 @@ coord/audit.py
41
41
  coord/auto_loop.py
42
42
  coord/block_log.py
43
43
  coord/board_bool_guard.py
44
+ coord/board_schema.py
44
45
  coord/board_service.py
45
46
  coord/board_wire.py
46
47
  coord/brain.py
@@ -135,6 +136,7 @@ coord/serve_app.py
135
136
  coord/smoke.py
136
137
  coord/spend_ceiling.py
137
138
  coord/split_work.py
139
+ coord/sql.py
138
140
  coord/stage_projection.py
139
141
  coord/state.py
140
142
  coord/test_author.py
@@ -390,6 +392,7 @@ tests/test_block_log.py
390
392
  tests/test_board_cap_762.py
391
393
  tests/test_board_fixture.py
392
394
  tests/test_board_read_path.py
395
+ tests/test_board_schema.py
393
396
  tests/test_board_service.py
394
397
  tests/test_board_state.py
395
398
  tests/test_board_wire.py
@@ -470,6 +473,7 @@ tests/test_cli_track.py
470
473
  tests/test_cli_tui_update.py
471
474
  tests/test_cli_wait.py
472
475
  tests/test_client_base_install.py
476
+ tests/test_commands_common.py
473
477
  tests/test_comments.py
474
478
  tests/test_completion_summary.py
475
479
  tests/test_config.py
@@ -660,6 +664,7 @@ tests/test_release_verify.py
660
664
  tests/test_release_window.py
661
665
  tests/test_remote_auto_prune.py
662
666
  tests/test_remote_interactive_reaper.py
667
+ tests/test_repo_add.py
663
668
  tests/test_repo_edit_2220.py
664
669
  tests/test_repo_graph_fleet_2237.py
665
670
  tests/test_repo_onboard_2220.py
@@ -692,12 +697,14 @@ tests/test_spend_ceiling.py
692
697
  tests/test_spend_ceiling_coordinator.py
693
698
  tests/test_split.py
694
699
  tests/test_split_work.py
700
+ tests/test_sql_dialect.py
695
701
  tests/test_stage_projection.py
696
702
  tests/test_stalled_pipeline.py
697
703
  tests/test_state.py
698
704
  tests/test_state_review_findings_daemon.py
699
705
  tests/test_status_fleet_footer.py
700
706
  tests/test_stop_1567.py
707
+ tests/test_store_contract.py
701
708
  tests/test_stuck.py
702
709
  tests/test_terminal_command.py
703
710
  tests/test_test_author.py
@@ -35,6 +35,7 @@
35
35
  "coord/auto_loop.py",
36
36
  "coord/block_log.py",
37
37
  "coord/board_bool_guard.py",
38
+ "coord/board_schema.py",
38
39
  "coord/board_service.py",
39
40
  "coord/board_wire.py",
40
41
  "coord/brain.py",
@@ -242,6 +243,7 @@
242
243
  "coord/smoke.py",
243
244
  "coord/spend_ceiling.py",
244
245
  "coord/split_work.py",
246
+ "coord/sql.py",
245
247
  "coord/stage_projection.py",
246
248
  "coord/state.py",
247
249
  "coord/test_author.py",
@@ -462,6 +464,7 @@
462
464
  "tests/test_board_cap_762.py",
463
465
  "tests/test_board_fixture.py",
464
466
  "tests/test_board_read_path.py",
467
+ "tests/test_board_schema.py",
465
468
  "tests/test_board_service.py",
466
469
  "tests/test_board_state.py",
467
470
  "tests/test_board_wire.py",
@@ -542,6 +545,7 @@
542
545
  "tests/test_cli_tui_update.py",
543
546
  "tests/test_cli_wait.py",
544
547
  "tests/test_client_base_install.py",
548
+ "tests/test_commands_common.py",
545
549
  "tests/test_comments.py",
546
550
  "tests/test_completion_summary.py",
547
551
  "tests/test_config.py",
@@ -732,6 +736,7 @@
732
736
  "tests/test_release_window.py",
733
737
  "tests/test_remote_auto_prune.py",
734
738
  "tests/test_remote_interactive_reaper.py",
739
+ "tests/test_repo_add.py",
735
740
  "tests/test_repo_edit_2220.py",
736
741
  "tests/test_repo_graph_fleet_2237.py",
737
742
  "tests/test_repo_onboard_2220.py",
@@ -764,12 +769,14 @@
764
769
  "tests/test_spend_ceiling_coordinator.py",
765
770
  "tests/test_split.py",
766
771
  "tests/test_split_work.py",
772
+ "tests/test_sql_dialect.py",
767
773
  "tests/test_stage_projection.py",
768
774
  "tests/test_stalled_pipeline.py",
769
775
  "tests/test_state.py",
770
776
  "tests/test_state_review_findings_daemon.py",
771
777
  "tests/test_status_fleet_footer.py",
772
778
  "tests/test_stop_1567.py",
779
+ "tests/test_store_contract.py",
773
780
  "tests/test_stuck.py",
774
781
  "tests/test_terminal_command.py",
775
782
  "tests/test_test_author.py",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.5.245",
3
+ "distance": 0,
4
+ "node": "g8f3ba2ceb3a5edd25c795a8fe295601edef37db5",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-08-26"
8
+ }
@@ -40,10 +40,28 @@ def _editable_source_root(dist_name: str) -> Path | None:
40
40
  substring match on ``__file__`` (a non-editable install into a venv
41
41
  satisfies that too, and its metadata IS trustworthy since it's a
42
42
  frozen snapshot rather than a claim about live source).
43
+
44
+ #2728: the URL's path component must go through
45
+ ``urllib.request.url2pathname`` (platform-dispatched), not a bare
46
+ ``urllib.parse.unquote``. pip writes this URL via
47
+ ``pathname2url``/``path_to_url``, which on Windows produces
48
+ ``file:///C:/Users/...`` — ``urlparse`` yields a path of
49
+ ``/C:/Users/...``, and handing that straight to ``pathlib.Path`` does
50
+ NOT recover ``C:\\Users\\...``: Windows path parsing only recognises a
51
+ drive letter at the very start of the string, so a leading slash before
52
+ ``C:`` makes the whole thing parse as a driveless, rooted path (a
53
+ literal top-level folder named ``C:``) that can never exist. ``root
54
+ .is_dir()`` then reads False on every Windows editable install, no
55
+ exception raised, and ``_resolve_version`` silently falls through to
56
+ the frozen ``.dist-info`` snapshot — the exact pre-#2010 symptom,
57
+ reintroduced Windows-only. ``url2pathname`` is ``unquote`` verbatim on
58
+ POSIX (no behaviour change there) and is ``nturl2path.url2pathname`` on
59
+ Windows, which strips that leading slash before the drive letter.
43
60
  """
44
61
  import json # noqa: PLC0415
45
62
  from pathlib import Path # noqa: PLC0415
46
- from urllib.parse import unquote, urlparse # noqa: PLC0415
63
+ from urllib.parse import urlparse # noqa: PLC0415
64
+ from urllib.request import url2pathname # noqa: PLC0415
47
65
 
48
66
  try:
49
67
  raw = Distribution.from_name(dist_name).read_text("direct_url.json")
@@ -55,7 +73,7 @@ def _editable_source_root(dist_name: str) -> Path | None:
55
73
  parsed = urlparse(info.get("url", ""))
56
74
  if parsed.scheme != "file" or not parsed.path:
57
75
  return None
58
- root = Path(unquote(parsed.path))
76
+ root = Path(url2pathname(parsed.path))
59
77
  return root if root.is_dir() else None
60
78
 
61
79
 
@@ -49,6 +49,20 @@ from pathlib import Path
49
49
  # adapter landing, but running it must fail loudly rather than silently no-op.
50
50
  SUPPORTED_KINDS = ("tui-tuidriver", "cli-pytest", "web-playwright")
51
51
 
52
+ # #2748 (IL-2): driver kinds whose `run` produces a real pass/fail verdict
53
+ # but NOT yet a deterministic one, because an input they depend on hasn't
54
+ # shipped. `web-playwright` is the one case today — the driver itself
55
+ # landed (#1539), but the seeded-board fixture server it needs to run
56
+ # against a fixed, known state (#1538) has not, so a run against a live
57
+ # fleet observes whatever that fleet happens to be doing rather than a
58
+ # pinned fixture (CLAUDE.md's web-playwright section: "a smoke net, not a
59
+ # deterministic oracle"). `coord.repo_onboard`'s oracle-readiness layer
60
+ # reads this to report the gap explicitly instead of a driver-present repo
61
+ # silently reading as fully oracle-ready. Kept here (not in coord.config)
62
+ # because it is exactly the kind of "which medium behaves how" fact this
63
+ # module already owns — see the module docstring.
64
+ FIXTURE_SERVER_DEPENDENT_KINDS = frozenset({"web-playwright"})
65
+
52
66
  # libtest's ``--format json`` per-line test-event stream (`cargo test -- -Z
53
67
  # unstable-options --format json`) event -> our normalized status.
54
68
  _LIBTEST_EVENT_STATUS = {"ok": "pass", "failed": "fail", "ignored": "skip"}
@@ -3945,25 +3945,44 @@ MILESTONE_CHAT_DENY_COMMANDS: list[str] = [
3945
3945
 
3946
3946
  DECOMPOSITION_CHAT_SYSTEM_PROMPT = """\
3947
3947
  You are a decomposition steward for a customer's APPROVED portal submission \
3948
- that an operator just pulled into this session from the TUI's "Approved \
3949
- work items" panel (#2533, ms-67 contract §4). Unlike `milestone-chat` above \
3950
- (which proposes and waits for confirmation before writing anything), this \
3951
- session's WHOLE JOB is to actually decompose the submission into real \
3952
- coordinator work — there is no separate confirm-then-write step here \
3953
- because pulling the row into this session already IS the operator's \
3954
- confirmation.
3955
-
3956
- The first user message carries: the submission's OUTCOME, AUDIENCE, DONE \
3957
- DEFINITION, and CONSTRAINTS (the four fields the customer described); its \
3958
- mapped repo(s); and `coordinator.yml` topology context for those repo(s) \
3959
- (depends_on, which machines claim each repo).
3960
-
3961
- Your job, in order:
3948
+ that an operator just pulled into this session (#2533, ms-67 contract §4; \
3949
+ #2750, IL-4 — "the intake session"). This is ONE ITERATION of a possibly \
3950
+ multi-day, multi-session intake — a client round-trip takes days, so no \
3951
+ single session can sit and wait for one. Every iteration is disposable; the \
3952
+ `coord portal` ledger (Q&A, decisions, narrative) is what's durable, and it \
3953
+ is what makes it safe for a LATER iteration on a DIFFERENT machine to pick \
3954
+ up exactly where this one left off with no memory of this conversation.
3955
+
3956
+ The first user message carries, in order: a MODE line (`MODE: FILE` or \
3957
+ `MODE: DISCUSS`) naming which posture this iteration runs in and WHY it was \
3958
+ picked — say so yourself, verbatim, as the first line of your own final \
3959
+ response (a session that silently chose to file instead of asking is \
3960
+ exactly the failure this design exists to prevent); the submission's \
3961
+ OUTCOME, AUDIENCE, DONE DEFINITION, and CONSTRAINTS; its mapped repo(s); \
3962
+ `coordinator.yml` topology context for those repo(s) (depends_on, which \
3963
+ machines claim each repo); and a RUNNING CONTEXT section rendering the \
3964
+ submission's full ledger so far — every question asked and (if answered) \
3965
+ its answer, every decision on record (current and archived, archived ones \
3966
+ carrying WHY they were ruled out), and the current narrative. Read \
3967
+ RUNNING CONTEXT before doing anything else: never re-ask a question already \
3968
+ answered there, and never re-propose a decision already archived there \
3969
+ without new information that changes the calculus — cite the existing \
3970
+ entry's seq/reason if the operator or a re-briefed fact brings it up again.
3971
+
3972
+ You can always re-fetch the live ledger mid-session with:
3973
+
3974
+ coord portal ledger <submission_id>
3975
+
3976
+ (add `--json` for the raw structured form) — useful in a long-running \
3977
+ `--interactive` conversation where the operator may answer something out of \
3978
+ band while you're mid-thought.
3979
+
3980
+ ── Filing a decomposition (MODE: FILE, or MODE: DISCUSS's "Decompose" exit) ──
3981
+
3962
3982
  1. Decide whether this is ORACLE-LOOP-SHAPED work (docs/ORACLE_LOOP.md) — \
3963
3983
  big or cross-cutting enough to warrant a Gate-A contract + independent \
3964
- test-author, or small enough to skip straight to normal dispatch. Discuss \
3965
- this with the operator if it's not obvious; you don't need to wait for \
3966
- explicit confirmation before filing, but flag your reasoning.
3984
+ test-author, or small enough to skip straight to normal dispatch. Flag your \
3985
+ reasoning even when it's obvious.
3967
3986
  2. Produce one or more GitHub issues describing the work, using:
3968
3987
 
3969
3988
  coord issue create <repo> --title '<title>' --body '<body>'
@@ -3997,31 +4016,116 @@ silently. Say so explicitly in your final summary to the operator (e.g. \
3997
4016
  "this submission has no recorded portal link — coord portal link only \
3998
4017
  covers milestones, and #2533's own dispatcher found no equivalent for a \
3999
4018
  one-off issue"), so the gap is visible rather than silently lost.
4019
+ 5. Archive the decision trail onto the epic (#2750 — "every iteration must \
4020
+ record its rejections with reasons", surfaced where the next human to read \
4021
+ the epic will actually see it, not just in `coord portal ledger`). When a \
4022
+ milestone/epic was filed in step 2: run `coord portal ledger <submission_id>` \
4023
+ (read-only), take its "## Decisions" and "## Archive (superseded / \
4024
+ rejected)" sections verbatim, and splice them onto the epic's body under a \
4025
+ `## Decisions` heading — read the epic's current body (e.g. `gh issue view \
4026
+ <epic> --json body -q .body`), append the section (or replace a pre-existing \
4027
+ `## Decisions` heading in place — do not duplicate it), and write it back \
4028
+ with `coord issue edit <repo> <epic> --body-file <tmpfile>` (never raw `gh \
4029
+ issue edit`). Skip this step only when the ledger has no decisions at all \
4030
+ (a submission that never went through a MODE: DISCUSS iteration) — say so \
4031
+ rather than writing an empty section.
4032
+
4033
+ ── MODE: DISCUSS — ask / propose / decompose ──
4034
+
4035
+ Your first user message said `MODE: DISCUSS` because the submission is \
4036
+ under-specified or the mapped repo is greenfield (#2750's own mechanical \
4037
+ triggers — missing done-definition/audience, or no commits/no CLAUDE.md on \
4038
+ the mapped repo yet). Filing straight through here means inventing an \
4039
+ architecture or a done-definition on the client's behalf and queuing real \
4040
+ work against the guess. Instead, THIS iteration ends in EXACTLY ONE of \
4041
+ three terminal moves — never zero, never more than one:
4042
+
4043
+ 1. ASK — when what's missing can only come from the CLIENT (not from the \
4044
+ operator, not from repo history, not from a reasonable judgment call you \
4045
+ could make yourself). Prefer ONE well-formed question: the portal's \
4046
+ composer on the client's side pauses on the most recent question only, so \
4047
+ a scattershot list gets a partial answer at best. Then:
4048
+
4049
+ coord portal enqueue-question <submission_id> "<question>"
4050
+ coord portal enqueue-status <submission_id> needs-input
4051
+
4052
+ and STOP — end your final turn summarizing the question and why, and run \
4053
+ nothing else this iteration (no filing, no decisions). IL-3's consumer \
4054
+ wakes the next iteration once the client answers.
4055
+
4056
+ 2. PROPOSE — when you CAN make a reasonable judgment call on the client's \
4057
+ behalf (an architecture/stack/framework choice, a scope cut, anything a \
4058
+ competent operator could just decide) but it deserves OPERATOR sign-off \
4059
+ before it becomes load-bearing — this is OPERATOR-facing, never portal-\
4060
+ facing; the client is never asked to adjudicate a framework choice. Record \
4061
+ your recommendation:
4062
+
4063
+ coord portal decision propose <submission_id> "<decision text>"
4064
+
4065
+ Then, in the SAME iteration, record every alternative you seriously \
4066
+ considered and ruled OUT — with a reason — so a later iteration doesn't \
4067
+ re-litigate it (#2750: "without recorded rejections you re-litigate"):
4068
+
4069
+ coord portal decision propose <submission_id> "<alternative text>"
4070
+ coord portal decision reject <submission_id> <alt_seq> "<why ruled out>"
4071
+
4072
+ If you're REVISING a decision an earlier iteration already proposed or \
4073
+ confirmed (not a same-iteration alternative), use supersede instead of \
4074
+ reject so the earlier text stays on record rather than reading as an \
4075
+ outright mistake:
4076
+
4077
+ coord portal decision supersede <submission_id> <old_seq> <new_seq>
4078
+
4079
+ Then STOP — summarize every proposal and rejection for the operator and \
4080
+ run nothing else. Do NOT confirm your own proposal (`coord portal decision \
4081
+ confirm` is the operator's move, taken outside this session) and do NOT \
4082
+ file or queue anything until a later iteration is briefed with a confirmed \
4083
+ decision. Confirmation is what starts that next iteration.
4084
+
4085
+ 3. DECOMPOSE — when done_definition/audience are captured (directly, or \
4086
+ settled via decisions now CONFIRMED in RUNNING CONTEXT) and every mapped \
4087
+ repo has something to decompose against. Follow "Filing a decomposition" \
4088
+ above in full, including step 5's decision archive.
4089
+
4090
+ If genuinely nothing has changed since the last iteration (re-briefed with \
4091
+ no new answer and no new information), say so explicitly and re-Ask or \
4092
+ re-Propose rather than inventing new work to look productive.
4000
4093
 
4001
4094
  Rules:
4002
4095
  - Do NOT run raw `gh issue create`/`gh issue edit`/`gh pr *`/`gh api -X \
4003
4096
  POST|PATCH|DELETE` or any other mutating `gh` command — the write paths \
4004
- above (`coord issue create`, `coord milestone create/add-child`, `coord \
4005
- drive-queue add`, `coord portal link`) are the only ones you may use.
4097
+ above (`coord issue create`, `coord issue edit --body-file`, `coord \
4098
+ milestone create/add-child`, `coord drive-queue add`, `coord portal link`, \
4099
+ `coord portal enqueue-question`, `coord portal enqueue-status`, `coord \
4100
+ portal decision propose/reject/supersede`) are the only ones you may use. \
4101
+ `gh issue view` and other read-only `gh`/`coord` lookups are fine.
4006
4102
  - Do NOT run `coord assign <machine> <repo> <issue>` or `coord drive \
4007
4103
  --tmux` — always `coord drive-queue add`.
4008
4104
  - Do NOT run `coord approve` or `coord merge` — outside this session's job.
4105
+ - Do NOT run `coord portal decision confirm` — that is the OPERATOR's move, \
4106
+ never this session's own.
4009
4107
  - Do NOT run `git push`, `git commit`, or any command that writes to a repo \
4010
4108
  checkout — this session files issues and queues work, it does not touch code.
4011
- - Keep the operator informed: summarize your decomposition plan before \
4012
- filing, and report back what you filed/queued/linked (and any link gap) \
4109
+ - If an `enqueue-question`/`enqueue-status`/`decision` command refuses with \
4110
+ a thin-client error (this machine isn't the daemon host and isn't routed \
4111
+ yet — #2751), say so explicitly to the operator rather than silently \
4112
+ dropping the Ask/Propose; do not retry it as some other command.
4113
+ - Keep the operator informed: summarize your plan before writing anything, \
4114
+ and report back what you asked/proposed/filed/queued/linked (and any gap) \
4013
4115
  when done.\
4014
4116
  """
4015
4117
 
4016
- # Deny list applied to decomposition-chat workers (#2533). Unlike
4017
- # milestone-chat, this type's WHOLE job is to write (issue create /
4018
- # milestone create+add-child / drive-queue add / portal link), so this list
4019
- # is deliberately narrow — it blocks raw `gh` mutations, repo-write git
4020
- # commands, destructive git ops, and the three unrelated `coord` write
4021
- # commands (approve/merge/assign) explicitly out of scope, while every write
4022
- # path this session actually needs (`coord issue create`, `coord milestone
4023
- # create`/`add-child`, `coord drive-queue add`, `coord portal link`) is
4024
- # allowed by omission.
4118
+ # Deny list applied to decomposition-chat workers (#2533; extended #2750
4119
+ # IL-4 for the ask/propose/decompose intake loop). Unlike milestone-chat,
4120
+ # this type's WHOLE job is to write (issue create / issue edit / milestone
4121
+ # create+add-child / drive-queue add / portal link / enqueue-question /
4122
+ # enqueue-status / decision propose|reject|supersede), so this list is
4123
+ # deliberately narrow — it blocks raw `gh` mutations, repo-write git
4124
+ # commands, destructive git ops, the three unrelated `coord` write commands
4125
+ # (approve/merge/assign) explicitly out of scope, and `coord portal decision
4126
+ # confirm` (the OPERATOR's move, never this session's own — #2750's "Propose"
4127
+ # terminal move must not self-confirm), while every write path this session
4128
+ # actually needs is allowed by omission.
4025
4129
  DECOMPOSITION_CHAT_DENY_COMMANDS: list[str] = [
4026
4130
  "Bash(gh issue edit *)",
4027
4131
  "Bash(gh issue create *)",
@@ -4047,6 +4151,7 @@ DECOMPOSITION_CHAT_DENY_COMMANDS: list[str] = [
4047
4151
  "Bash(coord approve *)",
4048
4152
  "Bash(coord merge *)",
4049
4153
  "Bash(coord assign *)",
4154
+ "Bash(coord portal decision confirm *)",
4050
4155
  ]
4051
4156
 
4052
4157
  MOCK_AUTHOR_SYSTEM_PROMPT = """\
@@ -31,6 +31,7 @@ import threading
31
31
  import time
32
32
  from typing import Any
33
33
 
34
+ from coord import sql
34
35
  from coord.db import get_connection, is_lock_contention_error, retry_on_locked
35
36
 
36
37
  _log = logging.getLogger(__name__)
@@ -138,7 +139,8 @@ def _record_audit_unsafe(
138
139
  conn = get_connection()
139
140
 
140
141
  def _write() -> None:
141
- conn.execute(
142
+ sql.execute(
143
+ conn,
142
144
  """INSERT INTO audit_log (
143
145
  ts, tier, category, event_type, actor,
144
146
  repo, issue, assignment_id, machine, summary, details_json
@@ -282,7 +284,8 @@ def _maybe_trim(conn) -> None:
282
284
  max_rows = _resolve_max_rows()
283
285
  if max_rows <= 0:
284
286
  return
285
- conn.execute(
287
+ sql.execute(
288
+ conn,
286
289
  "DELETE FROM audit_log WHERE id NOT IN "
287
290
  "(SELECT id FROM audit_log ORDER BY id DESC LIMIT ?)",
288
291
  (max_rows,),
@@ -465,7 +468,8 @@ def query_audit_log(
465
468
  where = f"WHERE {' AND '.join(clauses)}" if clauses else ""
466
469
  conn = get_connection()
467
470
  # Fetch one extra row to detect has_more without a second COUNT query.
468
- rows = conn.execute(
471
+ rows = sql.execute(
472
+ conn,
469
473
  f"SELECT {', '.join(_AUDIT_COLUMNS)} FROM audit_log {where} "
470
474
  "ORDER BY ts DESC, id DESC LIMIT ?",
471
475
  (*params, limit + 1),
@@ -15,6 +15,15 @@ custom deserializer, and cross-references them against the live SQLite
15
15
  schema. ``tests/test_board_fixture.py`` wires this up against the real
16
16
  ``tui/src/app/types.rs`` + a freshly-migrated DB so CI goes red the moment
17
17
  someone adds an unguarded INTEGER-backed bool field.
18
+
19
+ #1849 added the *other* half of this guard, one level up: the ``/board`` wire
20
+ contract is now the explicit DTOs in ``coord/board_schema.py``, and
21
+ ``tests/test_board_schema.py`` asserts every column in
22
+ ``board_schema.INTEGER_BACKED_BOOLEANS`` is declared ``int`` — so the JSON
23
+ type is pinned by the contract rather than by SQLite's (missing) boolean type,
24
+ and a Postgres backend cannot silently start sending ``true``/``false``. This
25
+ text-scraping check stays because it is the only one that reads the *actual
26
+ Rust consumer*; the DTO assertion cannot see ``types.rs``.
18
27
  """
19
28
 
20
29
  from __future__ import annotations