code-coordinator 0.5.242__tar.gz → 0.5.244__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 (856) hide show
  1. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/CLAUDE.md +5 -0
  2. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/PKG-INFO +1 -1
  3. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/code_coordinator.egg-info/PKG-INFO +1 -1
  4. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/code_coordinator.egg-info/SOURCES.txt +11 -0
  5. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/code_coordinator.egg-info/scm_file_list.json +11 -0
  6. code_coordinator-0.5.244/code_coordinator.egg-info/scm_version.json +8 -0
  7. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/__init__.py +20 -2
  8. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/_board_mapping.py +4 -0
  9. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/agent.py +30 -26
  10. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/agent_app.py +22 -8
  11. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/agent_update.py +6 -4
  12. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/approved_work.py +147 -9
  13. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/audit.py +56 -11
  14. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/board_bool_guard.py +9 -0
  15. code_coordinator-0.5.244/coord/board_schema.py +393 -0
  16. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/cli.py +2 -0
  17. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/issues.py +54 -0
  18. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/portal.py +222 -53
  19. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/release.py +131 -0
  20. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/test_gate.py +89 -0
  21. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/config.py +88 -0
  22. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/dao.py +72 -92
  23. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/dashboard/server.py +12 -30
  24. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/db.py +394 -351
  25. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/decomposition_chat.py +31 -5
  26. {code_coordinator-0.5.242 → code_coordinator-0.5.244/coord}/deploy/coord-release-propagate.service +16 -0
  27. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-release-window.service +17 -0
  28. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/drive.py +57 -2
  29. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/drive_queue.py +34 -5
  30. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/drive_state.py +66 -35
  31. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/forge_availability.py +268 -9
  32. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/gates.py +32 -21
  33. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/github_ops.py +35 -2
  34. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/agent_install.py +5 -1
  35. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/cargo_targets.py +129 -1
  36. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/graph.py +94 -1
  37. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/index_lock.py +96 -2
  38. code_coordinator-0.5.244/coord/health/checks/stalled_pipeline.py +139 -0
  39. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/unit_drift.py +12 -1
  40. code_coordinator-0.5.244/coord/health/checks/worktrees.py +233 -0
  41. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/cli.py +45 -2
  42. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/models.py +50 -0
  43. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/pypi.py +22 -0
  44. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/registry.py +195 -0
  45. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/machine_pause.py +17 -4
  46. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/merge_queue.py +601 -49
  47. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/models.py +88 -0
  48. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/notifier/collect.py +35 -3
  49. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/notifier/predicate.py +41 -18
  50. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/notify.py +15 -3
  51. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/openapi.py +7 -80
  52. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/platform_paths.py +37 -0
  53. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/portal_store.py +194 -30
  54. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/portal_sync.py +162 -41
  55. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/release_propagate.py +30 -2
  56. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/release_window.py +23 -1
  57. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/serve_app.py +182 -35
  58. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/state.py +443 -102
  59. {code_coordinator-0.5.242/coord → code_coordinator-0.5.244}/deploy/coord-release-propagate.service +16 -0
  60. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-release-window.service +17 -0
  61. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/AGENT_OPERATIONS.md +153 -0
  62. code_coordinator-0.5.244/docs/CUSTOMER_FACING_APPS.md +258 -0
  63. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/NOTIFIER.md +38 -16
  64. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/gen_board_fixture.py +12 -10
  65. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/conftest.py +38 -0
  66. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent.py +28 -0
  67. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_app.py +38 -0
  68. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_push_failure.py +15 -0
  69. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_update_bluegreen.py +57 -36
  70. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_approved_work_2532.py +234 -0
  71. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_board_fixture.py +10 -5
  72. code_coordinator-0.5.244/tests/test_board_schema.py +404 -0
  73. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_ci_store.py +3 -0
  74. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_diagnose_forge_availability.py +7 -0
  75. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_drive_queue.py +6 -0
  76. code_coordinator-0.5.244/tests/test_cli_issue_comment.py +404 -0
  77. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_portal.py +257 -8
  78. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_config.py +115 -0
  79. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_coord_test_runner_baseline.py +37 -10
  80. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_coord_test_runner_populated_home.py +4 -2
  81. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_coord_test_runner_routing.py +3 -1
  82. code_coordinator-0.5.244/tests/test_coord_uat.py +162 -0
  83. code_coordinator-0.5.244/tests/test_dao.py +114 -0
  84. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_db.py +366 -0
  85. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_decomposition_chat.py +13 -0
  86. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_drive.py +94 -0
  87. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_drive_queue.py +76 -0
  88. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_drive_state.py +104 -0
  89. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_epic_up_down_symlinked_config_1887.py +3 -1
  90. code_coordinator-0.5.244/tests/test_forge_availability.py +495 -0
  91. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_gates.py +27 -0
  92. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_github_ops.py +69 -1
  93. code_coordinator-0.5.244/tests/test_health_fix.py +792 -0
  94. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_machine_pause.py +27 -0
  95. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_merge_queue.py +723 -0
  96. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_node_shim.py +8 -1
  97. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_notifier_collect.py +74 -1
  98. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_notifier_predicate.py +40 -3
  99. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_openapi.py +3 -3
  100. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_platform_paths.py +25 -1
  101. code_coordinator-0.5.244/tests/test_portal_store.py +465 -0
  102. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_portal_sync.py +160 -0
  103. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_providers_pty.py +23 -2
  104. code_coordinator-0.5.244/tests/test_release_propagate_threshold.py +489 -0
  105. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_release_window.py +4 -0
  106. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_serve.py +134 -6
  107. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_spend_ceiling.py +30 -19
  108. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_stalled_pipeline.py +236 -1
  109. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_state.py +489 -0
  110. code_coordinator-0.5.244/tests/test_store_contract.py +1021 -0
  111. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_test_author.py +5 -1
  112. code_coordinator-0.5.244/tests/test_text_io_encoding_audit.py +105 -0
  113. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_thin_client_board_audit.py +1 -1
  114. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_version_single_source.py +58 -0
  115. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_worker_env_venv_isolation.py +29 -10
  116. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_worker_image_pin_sync.py +6 -4
  117. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_worktree_rmtree_chokepoint.py +12 -12
  118. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/audit.rs +24 -3
  119. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/data.rs +22 -6
  120. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/dialogs.rs +29 -1
  121. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/doc_tabs.rs +205 -13
  122. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/drive.rs +47 -0
  123. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/drive_queue.rs +369 -0
  124. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/events.rs +132 -6
  125. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/fixtures.rs +10 -2
  126. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/milestone_dag.rs +19 -3
  127. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/mod.rs +204 -4
  128. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/render.rs +5 -0
  129. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/settings_ui.rs +5 -1
  130. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/sidebar.rs +3 -0
  131. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/tests.rs +471 -4
  132. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/types.rs +99 -0
  133. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/tests/fixtures/board_sample.json +6 -0
  134. code_coordinator-0.5.242/code_coordinator.egg-info/scm_version.json +0 -8
  135. code_coordinator-0.5.242/coord/health/checks/worktrees.py +0 -96
  136. code_coordinator-0.5.242/tests/test_forge_availability.py +0 -258
  137. code_coordinator-0.5.242/tests/test_portal_store.py +0 -206
  138. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/.claude/commands/board.md +0 -0
  139. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/.claude/commands/complete-session.md +0 -0
  140. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/.claude/commands/coordinator.md +0 -0
  141. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/.githooks/_lib.sh +0 -0
  142. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/.githooks/post-checkout +0 -0
  143. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/.githooks/post-commit +0 -0
  144. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/.githooks/post-merge +0 -0
  145. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  146. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/.github/coord-ci-acceptance.yml +0 -0
  147. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/.github/workflows/auto-release.yml +0 -0
  148. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/.github/workflows/cargo-test.yml +0 -0
  149. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/.github/workflows/publish.yml +0 -0
  150. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/.github/workflows/release-tui.yml +0 -0
  151. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/.github/workflows/test.yml +0 -0
  152. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/.gitignore +0 -0
  153. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/GOAL.md +0 -0
  154. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/LICENSE +0 -0
  155. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/MANIFEST.in +0 -0
  156. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/README.md +0 -0
  157. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/code_coordinator.egg-info/dependency_links.txt +0 -0
  158. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/code_coordinator.egg-info/entry_points.txt +0 -0
  159. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/code_coordinator.egg-info/requires.txt +0 -0
  160. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/code_coordinator.egg-info/top_level.txt +0 -0
  161. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/acceptance.py +0 -0
  162. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/acceptance_drivers.py +0 -0
  163. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/agents/opencode/.gitignore +0 -0
  164. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/agents/opencode/agents/work.md +0 -0
  165. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/agents/opencode/routing.jsonc +0 -0
  166. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/auto_loop.py +0 -0
  167. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/block_log.py +0 -0
  168. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/board_service.py +0 -0
  169. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/board_wire.py +0 -0
  170. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/brain.py +0 -0
  171. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/branch_model.py +0 -0
  172. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/bug_intake.py +0 -0
  173. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/cargo_cache.py +0 -0
  174. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/ci_fix.py +0 -0
  175. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/ci_github.py +0 -0
  176. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/ci_gitlab.py +0 -0
  177. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/ci_store.py +0 -0
  178. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/claim.py +0 -0
  179. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/client.py +0 -0
  180. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/__init__.py +0 -0
  181. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/_common.py +0 -0
  182. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/acceptance.py +0 -0
  183. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/agent_ops.py +0 -0
  184. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/audit.py +0 -0
  185. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/chat.py +0 -0
  186. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/dispatch.py +0 -0
  187. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/dispatch_workers.py +0 -0
  188. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/drive.py +0 -0
  189. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/drive_queue.py +0 -0
  190. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/gate_a.py +0 -0
  191. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/gates.py +0 -0
  192. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/lifecycle.py +0 -0
  193. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/merge.py +0 -0
  194. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/milestone.py +0 -0
  195. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/plan_followup.py +0 -0
  196. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/plans.py +0 -0
  197. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/repo.py +0 -0
  198. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/report.py +0 -0
  199. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/review.py +0 -0
  200. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/scorecard.py +0 -0
  201. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/sessions.py +0 -0
  202. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/setup.py +0 -0
  203. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/status.py +0 -0
  204. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/terminal.py +0 -0
  205. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/commands/tui.py +0 -0
  206. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/comments.py +0 -0
  207. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/config_reload.py +0 -0
  208. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/confirm_test.py +0 -0
  209. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/conflict_fix.py +0 -0
  210. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/dashboard/__init__.py +0 -0
  211. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/dashboard/fixture.py +0 -0
  212. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/dashboard/index.html +0 -0
  213. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/dashboard/terminal.py +0 -0
  214. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/dead_end.py +0 -0
  215. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/README.md +0 -0
  216. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-agent.service +0 -0
  217. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-db-backup.service +0 -0
  218. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-db-backup.sh +0 -0
  219. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-db-backup.timer +0 -0
  220. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-drive-queue.service +0 -0
  221. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-drive-queue.timer +0 -0
  222. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-failure-notify.service +0 -0
  223. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-fleet-watchdog.service +0 -0
  224. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-fleet-watchdog.timer +0 -0
  225. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-notify.service +0 -0
  226. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-notify.timer +0 -0
  227. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-release-propagate.timer +0 -0
  228. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-release-window.timer +0 -0
  229. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-serve.service +0 -0
  230. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-web-dist-build.service +0 -0
  231. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-web-dist-build.timer +0 -0
  232. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy/coord-web.service +0 -0
  233. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy_manifest.py +0 -0
  234. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deploy_units.py +0 -0
  235. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/deps.py +0 -0
  236. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/diagnose.py +0 -0
  237. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/dispatch.py +0 -0
  238. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/dist_name.py +0 -0
  239. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/events.py +0 -0
  240. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/failure_class.py +0 -0
  241. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/filelock.py +0 -0
  242. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/fleet_config_health.py +0 -0
  243. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/freshness.py +0 -0
  244. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/gate_a.py +0 -0
  245. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/gate_b.py +0 -0
  246. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/gate_snapshot.py +0 -0
  247. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/goal.py +0 -0
  248. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/graph_health.py +0 -0
  249. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/__init__.py +0 -0
  250. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/aggregate.py +0 -0
  251. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/__init__.py +0 -0
  252. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/claude_binary.py +0 -0
  253. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/coord_web_ci_pin.py +0 -0
  254. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/deploy_lane_facts.py +0 -0
  255. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/disk.py +0 -0
  256. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/fleet_board.py +0 -0
  257. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  258. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/fleet_phantom.py +0 -0
  259. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/fleet_unit_drift.py +0 -0
  260. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/graphify_cli.py +0 -0
  261. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/plan_usage.py +0 -0
  262. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/release_cordon.py +0 -0
  263. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/repo_state.py +0 -0
  264. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/spawned_coord.py +0 -0
  265. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/timer_active.py +0 -0
  266. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/toolchain.py +0 -0
  267. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/checks/unit_enablement.py +0 -0
  268. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/context.py +0 -0
  269. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/fleet_snapshot.py +0 -0
  270. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/render.py +0 -0
  271. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/health/units.py +0 -0
  272. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/hooks.py +0 -0
  273. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/housekeeping.py +0 -0
  274. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/interactive.py +0 -0
  275. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/issue_store.py +0 -0
  276. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/liveness_auditor.py +0 -0
  277. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/milestone_chat.py +0 -0
  278. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/milestone_dispatch.py +0 -0
  279. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/milestone_gate.py +0 -0
  280. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/milestone_order.py +0 -0
  281. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/mock_author.py +0 -0
  282. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/network.py +0 -0
  283. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/new_issue_chat.py +0 -0
  284. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/notifier/__init__.py +0 -0
  285. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/notifier/baseline.py +0 -0
  286. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/notifier/cli.py +0 -0
  287. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/notifier/digest.py +0 -0
  288. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/notifier/models.py +0 -0
  289. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/notifier/service.py +0 -0
  290. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/notifier/store.py +0 -0
  291. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/notifier/transport.py +0 -0
  292. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/overlap_fence.py +0 -0
  293. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/overlap_predict.py +0 -0
  294. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/parentage.py +0 -0
  295. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/parentage_github.py +0 -0
  296. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/pipeline.py +0 -0
  297. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/plan_parser.py +0 -0
  298. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/plans.py +0 -0
  299. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/portal_bridge.py +0 -0
  300. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/pr_body_lint.py +0 -0
  301. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/prereqs.py +0 -0
  302. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/progress.py +0 -0
  303. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/providers/__init__.py +0 -0
  304. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/providers/base.py +0 -0
  305. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/providers/claude.py +0 -0
  306. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/providers/claude_pty.py +0 -0
  307. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/providers/opencode.py +0 -0
  308. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/queue_diagnose.py +0 -0
  309. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/reconcile.py +0 -0
  310. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/reconcile_tick.py +0 -0
  311. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/refine_chat.py +0 -0
  312. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/release_cordon.py +0 -0
  313. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/release_verify.py +0 -0
  314. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/repo_edit.py +0 -0
  315. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/repo_onboard.py +0 -0
  316. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/reports.py +0 -0
  317. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/revalidate.py +0 -0
  318. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/review.py +0 -0
  319. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/scorecard.py +0 -0
  320. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/self_health.py +0 -0
  321. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  322. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  323. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  324. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  325. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  326. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/skills/portal-followup/SKILL.md +0 -0
  327. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  328. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  329. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/skills/update-issue/SKILL.md +0 -0
  330. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/smoke.py +0 -0
  331. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/spend_ceiling.py +0 -0
  332. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/split_work.py +0 -0
  333. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/stage_projection.py +0 -0
  334. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/test_author.py +0 -0
  335. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/test_chat.py +0 -0
  336. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/test_orchestrator.py +0 -0
  337. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/test_report.py +0 -0
  338. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/tui_release.py +0 -0
  339. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/usage.py +0 -0
  340. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/usage_limits.py +0 -0
  341. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/usage_rollup.py +0 -0
  342. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coord/worker_events.py +0 -0
  343. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/coordinator.example.yml +0 -0
  344. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-agent.service +0 -0
  345. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-db-backup.service +0 -0
  346. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-db-backup.sh +0 -0
  347. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-db-backup.timer +0 -0
  348. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-drive-queue.service +0 -0
  349. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-drive-queue.timer +0 -0
  350. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-failure-notify.service +0 -0
  351. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-failure-notify.sh +0 -0
  352. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-fleet-watchdog.service +0 -0
  353. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-fleet-watchdog.timer +0 -0
  354. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-notify.service +0 -0
  355. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-notify.timer +0 -0
  356. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-release-propagate.timer +0 -0
  357. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-release-window.timer +0 -0
  358. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-serve.service +0 -0
  359. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-web-dist-build.service +0 -0
  360. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-web-dist-build.sh +0 -0
  361. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-web-dist-build.timer +0 -0
  362. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-web-rollback.sh +0 -0
  363. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/coord-web.service +0 -0
  364. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/deploy/node-shim.sh +0 -0
  365. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  366. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/ADR_COORD_WEB_CI.md +0 -0
  367. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/ADR_COORD_WEB_DIST.md +0 -0
  368. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/ARCHITECTURE.md +0 -0
  369. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/ARCH_SECURITY_GATES.md +0 -0
  370. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/COCKPIT.md +0 -0
  371. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/CONTROL_CENTER.md +0 -0
  372. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/COST_DISCIPLINE.md +0 -0
  373. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/CROSS_PLATFORM.md +0 -0
  374. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/CUSTOMER_PORTAL.md +0 -0
  375. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/DRIVE_QUEUE.md +0 -0
  376. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/EPHEMERAL_WORKERS.md +0 -0
  377. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/FORGE_MIGRATION.md +0 -0
  378. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/GRAPHIFY_SETUP.md +0 -0
  379. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/ISSUE_GUIDANCE.md +0 -0
  380. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/MAC_MINI.md +0 -0
  381. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  382. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/OPENCODE_VERIFICATION.md +0 -0
  383. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/OPERATING_GOTCHAS.md +0 -0
  384. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/ORACLE_LOOP.md +0 -0
  385. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/PHONE_WEBAPP.md +0 -0
  386. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/PIPELINE_V2.md +0 -0
  387. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/PLATFORM_EVOLUTION.md +0 -0
  388. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/SECOND_BACKEND.md +0 -0
  389. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/STORE_SERVICE.md +0 -0
  390. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  391. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/WEB_CONTROL_CENTER.md +0 -0
  392. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/WSL_WINDOWS_WORKER.md +0 -0
  393. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/mocks/web/README.md +0 -0
  394. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/mocks/web/_tokens.css +0 -0
  395. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/mocks/web/issue-detail.html +0 -0
  396. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/mocks/web/pipeline-narrow.html +0 -0
  397. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/docs/mocks/web/pipeline-wide.html +0 -0
  398. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/graphify-out/.gitignore +0 -0
  399. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/install-agent.sh +0 -0
  400. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/pyproject.toml +0 -0
  401. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/audit_review_verdict_overrides.py +0 -0
  402. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  403. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/azure-workers/build-worker-image.sh +0 -0
  404. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/azure-workers/coordinator-machine.py +0 -0
  405. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/azure-workers/epic-down.sh +0 -0
  406. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/azure-workers/epic-up.sh +0 -0
  407. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/azure-workers/preflight.sh +0 -0
  408. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/azure-workers/provision-worker.sh +0 -0
  409. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  410. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  411. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/azure-workers/verify-github-token.sh +0 -0
  412. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/check_gh_argv_containment.py +0 -0
  413. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/codegen.py +0 -0
  414. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/coord-test-runner.sh +0 -0
  415. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/coord-venv-rollback.sh +0 -0
  416. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/drive-batch.sh +0 -0
  417. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/fleet_watchdog.py +0 -0
  418. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/gen_mock_index.py +0 -0
  419. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/next_release_tag.py +0 -0
  420. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/run_tests_in_populated_home.sh +0 -0
  421. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/run_tests_without_gh.sh +0 -0
  422. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/smoke_437_interactive.py +0 -0
  423. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/verify_878_review_capture.py +0 -0
  424. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/verify_release_published.py +0 -0
  425. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/scripts/verify_release_wheel.py +0 -0
  426. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/setup.cfg +0 -0
  427. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/SMOKE_SET.md +0 -0
  428. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/__init__.py +0 -0
  429. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  430. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-33/contract.md +0 -0
  431. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-33/manifest.yml +0 -0
  432. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  433. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  434. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  435. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  436. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-37/conftest.py +0 -0
  437. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-37/contract.md +0 -0
  438. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-37/manifest.yml +0 -0
  439. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  440. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  441. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-38/contract.md +0 -0
  442. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-38/manifest.yml +0 -0
  443. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  444. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  445. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  446. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  447. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  448. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  449. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  450. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  451. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  452. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  453. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-51/contract.md +0 -0
  454. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  455. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  456. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-51/manifest.yml +0 -0
  457. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  458. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-51/tsconfig.json +0 -0
  459. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  460. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  461. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  462. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/contract.md +0 -0
  463. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  464. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/manifest.yml +0 -0
  465. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  466. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  467. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  468. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  469. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  470. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  471. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  472. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  473. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  474. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  475. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  476. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
  477. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-67/contract.md +0 -0
  478. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-67/manifest.d/2533.yml +0 -0
  479. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-67/manifest.yml +0 -0
  480. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
  481. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
  482. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
  483. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
  484. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
  485. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-67/pull_decomposition_2533.rs +0 -0
  486. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  487. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/board-pipeline-basic.json +0 -0
  488. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  489. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  490. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  491. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  492. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/playwright/all_pass.json +0 -0
  493. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  494. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/playwright/mixed_fail.json +0 -0
  495. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  496. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  497. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/playwright/skip.json +0 -0
  498. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/playwright/truncated.json +0 -0
  499. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  500. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  501. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  502. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  503. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  504. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  505. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  506. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  507. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_acceptance.py +0 -0
  508. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_acceptance_drivers.py +0 -0
  509. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_api_error.py +0 -0
  510. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_branch_base.py +0 -0
  511. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_branch_capture.py +0 -0
  512. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_config_free_1712.py +0 -0
  513. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_deploy_units_endpoint.py +0 -0
  514. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_dirty_worktree.py +0 -0
  515. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  516. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_graph_self_heal.py +0 -0
  517. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_health_h3.py +0 -0
  518. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_idle_restart.py +0 -0
  519. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_reap.py +0 -0
  520. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_repos_and_pull.py +0 -0
  521. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_restart_services_endpoint.py +0 -0
  522. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_skills_self_heal.py +0 -0
  523. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_startup_diagnostics.py +0 -0
  524. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_update.py +0 -0
  525. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_usage_limit.py +0 -0
  526. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_agent_zero_commit.py +0 -0
  527. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_ambient_home_isolation.py +0 -0
  528. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_approve_reject_plan.py +0 -0
  529. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_approve_usage_gate.py +0 -0
  530. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_assignment_already_recorded_daemon.py +0 -0
  531. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_audit_log.py +0 -0
  532. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_audit_outcome.py +0 -0
  533. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_audit_query.py +0 -0
  534. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_auto_loop.py +0 -0
  535. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_auto_release_publish_2035.py +0 -0
  536. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_base_checkout_restore.py +0 -0
  537. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_block_log.py +0 -0
  538. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_board_cap_762.py +0 -0
  539. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_board_read_path.py +0 -0
  540. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_board_service.py +0 -0
  541. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_board_state.py +0 -0
  542. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_board_wire.py +0 -0
  543. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_brain.py +0 -0
  544. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_branch_model.py +0 -0
  545. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_bug_intake.py +0 -0
  546. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_build_worker_image_env_update.py +0 -0
  547. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cargo_cache.py +0 -0
  548. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_check_gh_argv_containment.py +0 -0
  549. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_ci_acceptance_gate_1950.py +0 -0
  550. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_ci_fix.py +0 -0
  551. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_ci_gitlab.py +0 -0
  552. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_ci_parity_2091.py +0 -0
  553. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_claim.py +0 -0
  554. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_acceptance.py +0 -0
  555. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_assign.py +0 -0
  556. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  557. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_assign_interactive_remote.py +0 -0
  558. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_assign_provider.py +0 -0
  559. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  560. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_audit.py +0 -0
  561. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_chat_continue.py +0 -0
  562. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_decide.py +0 -0
  563. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_diagnose_config_provenance.py +0 -0
  564. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_diagnose_graph.py +0 -0
  565. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_diagnose_self.py +0 -0
  566. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_doctor.py +0 -0
  567. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_doctor_config_free_1801.py +0 -0
  568. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  569. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_drive.py +0 -0
  570. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_escalate.py +0 -0
  571. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_fix_headless_review.py +0 -0
  572. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_gate_a.py +0 -0
  573. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_install_drift.py +0 -0
  574. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_install_skills.py +0 -0
  575. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_issue_create_label.py +0 -0
  576. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_issue_reopen.py +0 -0
  577. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_issue_view_list.py +0 -0
  578. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_merge.py +0 -0
  579. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_milestone_assign.py +0 -0
  580. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_milestone_capture.py +0 -0
  581. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_milestone_chat_add_child.py +0 -0
  582. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_milestone_dispatch.py +0 -0
  583. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_milestone_gate_b.py +0 -0
  584. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_milestone_gate_c.py +0 -0
  585. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_milestone_order.py +0 -0
  586. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  587. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_milestone_ship.py +0 -0
  588. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_network.py +0 -0
  589. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_new_issue_chat.py +0 -0
  590. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_plans.py +0 -0
  591. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_pull_artifact.py +0 -0
  592. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_queue.py +0 -0
  593. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_reattach_sessions.py +0 -0
  594. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_refine_board.py +0 -0
  595. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_release_preflight.py +0 -0
  596. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_release_propagate.py +0 -0
  597. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_release_window.py +0 -0
  598. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_repo_2220.py +0 -0
  599. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_review_test_author_tracking_epic_2639.py +0 -0
  600. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_scorecard.py +0 -0
  601. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_set_review_findings.py +0 -0
  602. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_status_advisory_terminal.py +0 -0
  603. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_status_contested_tag.py +0 -0
  604. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_status_merge_queue.py +0 -0
  605. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_status_provider.py +0 -0
  606. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_status_review_finalizing.py +0 -0
  607. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_status_test_failed_tag.py +0 -0
  608. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_status_usage_limit.py +0 -0
  609. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_sync_comments_873.py +0 -0
  610. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_test_plan.py +0 -0
  611. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_track.py +0 -0
  612. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_tui_update.py +0 -0
  613. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cli_wait.py +0 -0
  614. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_client_base_install.py +0 -0
  615. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_comments.py +0 -0
  616. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_completion_summary.py +0 -0
  617. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_config_acceptance.py +0 -0
  618. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_config_audit.py +0 -0
  619. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_config_pricing.py +0 -0
  620. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  621. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_config_usage_gate.py +0 -0
  622. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_confirm_test.py +0 -0
  623. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_conflict_fix.py +0 -0
  624. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_conflict_fix_semantic.py +0 -0
  625. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_coord_log_daemon_fallback_2547.py +0 -0
  626. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_coord_test.py +0 -0
  627. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_coord_test_runner_toolchain.py +0 -0
  628. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_coord_web_sse_restart_live.py +0 -0
  629. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_coordinator_machine.py +0 -0
  630. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_cross_platform_imports.py +0 -0
  631. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_dashboard.py +0 -0
  632. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_dashboard_fixture.py +0 -0
  633. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_dashboard_terminal.py +0 -0
  634. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_dashboard_terminal_live.py +0 -0
  635. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_dead_end.py +0 -0
  636. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_deploy_coord_db_backup.py +0 -0
  637. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_deploy_coord_web_dist.py +0 -0
  638. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_deploy_coord_web_rollback.py +0 -0
  639. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_deploy_drive_queue_unit.py +0 -0
  640. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_deploy_failure_notify_unit.py +0 -0
  641. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_deploy_manifest.py +0 -0
  642. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_deploy_notify_unit.py +0 -0
  643. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_deploy_units_lane.py +0 -0
  644. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_deploy_web_unit.py +0 -0
  645. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_deps.py +0 -0
  646. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_diagnose.py +0 -0
  647. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_dispatch.py +0 -0
  648. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_dispatch_target_validation.py +0 -0
  649. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_dist_name.py +0 -0
  650. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_done_housekeeping.py +0 -0
  651. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_drive_queue_blocked_rendering.py +0 -0
  652. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_drive_queue_launch_argv.py +0 -0
  653. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_drive_queue_max_parallel_per_repo_config.py +0 -0
  654. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_drive_queue_roll_pending.py +0 -0
  655. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_drive_queue_self_cordon_escalation.py +0 -0
  656. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_drive_tmux.py +0 -0
  657. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_epic_up_capability_detection.py +0 -0
  658. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_epic_up_image_provenance.py +0 -0
  659. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_errors.py +0 -0
  660. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_events.py +0 -0
  661. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_failure_class.py +0 -0
  662. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_filelock.py +0 -0
  663. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  664. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_fix_of_force_override.py +0 -0
  665. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_fleet_config_health.py +0 -0
  666. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_fleet_health_probes.py +0 -0
  667. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_fleet_health_snapshot.py +0 -0
  668. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_fleet_watchdog.py +0 -0
  669. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_freshness.py +0 -0
  670. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_gate_a.py +0 -0
  671. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_gate_b.py +0 -0
  672. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_gate_snapshot_staleness.py +0 -0
  673. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  674. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_gen_mock_index.py +0 -0
  675. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_generated_types_fixture.py +0 -0
  676. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_goal.py +0 -0
  677. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_graph_health.py +0 -0
  678. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_graph_selfheal_absent_2237.py +0 -0
  679. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_handoff.py +0 -0
  680. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_health_checks.py +0 -0
  681. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_health_cli.py +0 -0
  682. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_health_cli_graph.py +0 -0
  683. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_health_config.py +0 -0
  684. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_health_context.py +0 -0
  685. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_health_coord_web_ci_pin.py +0 -0
  686. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_health_deploy_lane_facts.py +0 -0
  687. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_health_incident_regression.py +0 -0
  688. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_health_pypi.py +0 -0
  689. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_health_registry.py +0 -0
  690. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_health_release_cordon_probe.py +0 -0
  691. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_health_timer_active.py +0 -0
  692. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_health_toolchain.py +0 -0
  693. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_health_unit_drift.py +0 -0
  694. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_health_unit_enablement.py +0 -0
  695. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_hooks.py +0 -0
  696. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_human_attended_437.py +0 -0
  697. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_init.py +0 -0
  698. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_integration.py +0 -0
  699. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_interactive_briefing_echo.py +0 -0
  700. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_interactive_pane_log_2541.py +0 -0
  701. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_interactive_prefill_state.py +0 -0
  702. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_interactive_session_relaunch.py +0 -0
  703. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_interactive_test_verdict_backstop.py +0 -0
  704. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_interactive_token_attribution.py +0 -0
  705. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_interactive_worktree.py +0 -0
  706. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_issue_store_seam.py +0 -0
  707. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_liveness_auditor.py +0 -0
  708. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_liveness_notify.py +0 -0
  709. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_merge_verify.py +0 -0
  710. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_milestone_chat.py +0 -0
  711. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_milestone_dispatch.py +0 -0
  712. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_milestone_gate.py +0 -0
  713. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_milestone_order.py +0 -0
  714. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_milestone_seam.py +0 -0
  715. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_mock_author.py +0 -0
  716. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_model_tiering.py +0 -0
  717. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_models.py +0 -0
  718. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_models_config_labels.py +0 -0
  719. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_needs_attention.py +0 -0
  720. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_network.py +0 -0
  721. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_new_issue_chat.py +0 -0
  722. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_next_release_tag.py +0 -0
  723. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_notifier_baseline.py +0 -0
  724. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_notifier_cli.py +0 -0
  725. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_notifier_config.py +0 -0
  726. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_notifier_drive_seam.py +0 -0
  727. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_notifier_isolation.py +0 -0
  728. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_notifier_quiet_hours.py +0 -0
  729. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_notifier_service.py +0 -0
  730. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_notify.py +0 -0
  731. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_notify_drain.py +0 -0
  732. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_operational_defaults.py +0 -0
  733. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_overlap_fence.py +0 -0
  734. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_overlap_predict.py +0 -0
  735. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_packaged_deploy_units.py +0 -0
  736. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_parentage.py +0 -0
  737. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_paste_landed.py +0 -0
  738. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_phantom_heal_venv_independence_2570.py +0 -0
  739. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_pipeline.py +0 -0
  740. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_plan_followup_approve_plan_command.py +0 -0
  741. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_plan_followup_pr_command.py +0 -0
  742. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_plan_followup_review_command.py +0 -0
  743. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_plan_only.py +0 -0
  744. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_plan_parser.py +0 -0
  745. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_portal_bridge.py +0 -0
  746. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_portal_config.py +0 -0
  747. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_pr_body_lint.py +0 -0
  748. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_prereqs.py +0 -0
  749. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_production_db_guard.py +0 -0
  750. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_progress.py +0 -0
  751. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_provider_seam.py +0 -0
  752. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_providers.py +0 -0
  753. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_providers_config_labels.py +0 -0
  754. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_quiet_hours.py +0 -0
  755. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_quiet_hours_store_2146.py +0 -0
  756. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_reap_merged_sessions.py +0 -0
  757. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_reap_stale_interactive_tick.py +0 -0
  758. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_reconcile.py +0 -0
  759. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_reconcile_branch.py +0 -0
  760. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_reconcile_completions.py +0 -0
  761. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_reconcile_late_agent_reports_2547.py +0 -0
  762. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_reconcile_merges.py +0 -0
  763. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_reconcile_no_agent_record.py +0 -0
  764. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_reconcile_tick.py +0 -0
  765. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_reconcile_usage_limit_done.py +0 -0
  766. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_refine_chat.py +0 -0
  767. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_release_cordon_2101.py +0 -0
  768. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  769. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_release_cordon_deadlock_2240.py +0 -0
  770. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_release_cordon_stuck_2490.py +0 -0
  771. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_release_propagate.py +0 -0
  772. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_release_roll_window_handoff.py +0 -0
  773. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_release_unified_1242.py +0 -0
  774. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_release_verify.py +0 -0
  775. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_remote_auto_prune.py +0 -0
  776. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_remote_interactive_reaper.py +0 -0
  777. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_repo_edit_2220.py +0 -0
  778. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_repo_graph_fleet_2237.py +0 -0
  779. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_repo_onboard_2220.py +0 -0
  780. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_report_result_push.py +0 -0
  781. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_reports.py +0 -0
  782. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_retry.py +0 -0
  783. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_retry_advisory_1606.py +0 -0
  784. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_retry_type_1636.py +0 -0
  785. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_revalidate.py +0 -0
  786. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_review.py +0 -0
  787. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_review_end_review_without_verdict.py +0 -0
  788. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_review_parse_failure_diagnostic.py +0 -0
  789. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_review_reaffirm.py +0 -0
  790. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_review_state.py +0 -0
  791. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_review_verdict_backstop.py +0 -0
  792. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_review_verdict_override_audit.py +0 -0
  793. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_review_verdict_relay.py +0 -0
  794. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_review_zero_commits.py +0 -0
  795. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_scoped_review_wiring.py +0 -0
  796. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_scorecard.py +0 -0
  797. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_self_health.py +0 -0
  798. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_serve_app_board_trim.py +0 -0
  799. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_session.py +0 -0
  800. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_slice_issue_attribution.py +0 -0
  801. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_smoke.py +0 -0
  802. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_smoke_live_checkout_restore.py +0 -0
  803. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_smoke_workflow.py +0 -0
  804. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_spend_ceiling_coordinator.py +0 -0
  805. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_split.py +0 -0
  806. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_split_work.py +0 -0
  807. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_stage_projection.py +0 -0
  808. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_state_review_findings_daemon.py +0 -0
  809. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_status_fleet_footer.py +0 -0
  810. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_stop_1567.py +0 -0
  811. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_stuck.py +0 -0
  812. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_terminal_command.py +0 -0
  813. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_test_chat.py +0 -0
  814. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_test_orchestrator.py +0 -0
  815. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_test_report.py +0 -0
  816. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_test_verdict_parsing.py +0 -0
  817. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_test_verdict_transcript_floor.py +0 -0
  818. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_thin_client_config_load_1080.py +0 -0
  819. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_thin_client_daemon_routing_906.py +0 -0
  820. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_tmux_host.py +0 -0
  821. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_tmux_session.py +0 -0
  822. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_transcript_floor.py +0 -0
  823. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_usage.py +0 -0
  824. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_usage_limits.py +0 -0
  825. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_usage_rollup.py +0 -0
  826. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_venv_live_install_2121.py +0 -0
  827. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_watch.py +0 -0
  828. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  829. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_worker_events.py +0 -0
  830. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_worker_safety.py +0 -0
  831. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_worker_test_scoping.py +0 -0
  832. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tests/test_worktree.py +0 -0
  833. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/Cargo.lock +0 -0
  834. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/Cargo.toml +0 -0
  835. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/cargo-config-local-quadraui.toml.example +0 -0
  836. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/approved.rs +0 -0
  837. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/chat.rs +0 -0
  838. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/escalation.rs +0 -0
  839. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/fleet_health.rs +0 -0
  840. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/fleet_sessions.rs +0 -0
  841. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/fleet_terminals.rs +0 -0
  842. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/format.rs +0 -0
  843. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/msv.rs +0 -0
  844. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/pipeline.rs +0 -0
  845. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/plans.rs +0 -0
  846. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/reports.rs +0 -0
  847. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/sessions.rs +0 -0
  848. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/terminal.rs +0 -0
  849. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/app/workspace.rs +0 -0
  850. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/bin/gtk.rs +0 -0
  851. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/commands.rs +0 -0
  852. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/lib.rs +0 -0
  853. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/main.rs +0 -0
  854. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/src/settings.rs +0 -0
  855. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/tests/acceptance.rs +0 -0
  856. {code_coordinator-0.5.242 → code_coordinator-0.5.244}/tui/tests/cli.rs +0 -0
@@ -286,6 +286,11 @@ reviewer can stop reading here.
286
286
  the one to read when a customer request needs turning into coordinator work** — repo
287
287
  creation, the project↔repo mapping, the decomposition session, Gate-A mocks, and how a mock
288
288
  gets back to the client for sign-off, in the order you actually do them.
289
+ - [`docs/CUSTOMER_FACING_APPS.md`](docs/CUSTOMER_FACING_APPS.md) — shipping a repo whose
290
+ **external** customer judges it by looking at it (natal-chart today). Why `Work → Test →
291
+ Review → Merge → auto-deploy` makes that customer the first human to see the change, the
292
+ per-PR preview / `uat` gate / visual-baseline pattern that fixes it, and the manual runbook
293
+ to use until the gate exists.
289
294
  - [`docs/ORACLE_LOOP.md`](docs/ORACLE_LOOP.md) — sealed acceptance suites, Gate-A contracts, the test-author agent.
290
295
  - [`docs/PHONE_WEBAPP.md`](docs/PHONE_WEBAPP.md) — Phone Control Center v1 runbook and the `/api/pipeline` surface.
291
296
  - [`docs/GRAPHIFY_SETUP.md`](docs/GRAPHIFY_SETUP.md) — installing the knowledge graph on a new machine (four layers, all of which fail *silently*).
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.242
3
+ Version: 0.5.244
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.242
3
+ Version: 0.5.244
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
@@ -232,6 +233,7 @@ coord/health/checks/plan_usage.py
232
233
  coord/health/checks/release_cordon.py
233
234
  coord/health/checks/repo_state.py
234
235
  coord/health/checks/spawned_coord.py
236
+ coord/health/checks/stalled_pipeline.py
235
237
  coord/health/checks/timer_active.py
236
238
  coord/health/checks/toolchain.py
237
239
  coord/health/checks/unit_drift.py
@@ -294,6 +296,7 @@ docs/COCKPIT.md
294
296
  docs/CONTROL_CENTER.md
295
297
  docs/COST_DISCIPLINE.md
296
298
  docs/CROSS_PLATFORM.md
299
+ docs/CUSTOMER_FACING_APPS.md
297
300
  docs/CUSTOMER_PORTAL.md
298
301
  docs/DRIVE_QUEUE.md
299
302
  docs/EPHEMERAL_WORKERS.md
@@ -388,6 +391,7 @@ tests/test_block_log.py
388
391
  tests/test_board_cap_762.py
389
392
  tests/test_board_fixture.py
390
393
  tests/test_board_read_path.py
394
+ tests/test_board_schema.py
391
395
  tests/test_board_service.py
392
396
  tests/test_board_state.py
393
397
  tests/test_board_wire.py
@@ -426,6 +430,7 @@ tests/test_cli_fix_headless_review.py
426
430
  tests/test_cli_gate_a.py
427
431
  tests/test_cli_install_drift.py
428
432
  tests/test_cli_install_skills.py
433
+ tests/test_cli_issue_comment.py
429
434
  tests/test_cli_issue_create_label.py
430
435
  tests/test_cli_issue_reopen.py
431
436
  tests/test_cli_issue_view_list.py
@@ -484,9 +489,11 @@ tests/test_coord_test_runner_baseline.py
484
489
  tests/test_coord_test_runner_populated_home.py
485
490
  tests/test_coord_test_runner_routing.py
486
491
  tests/test_coord_test_runner_toolchain.py
492
+ tests/test_coord_uat.py
487
493
  tests/test_coord_web_sse_restart_live.py
488
494
  tests/test_coordinator_machine.py
489
495
  tests/test_cross_platform_imports.py
496
+ tests/test_dao.py
490
497
  tests/test_dashboard.py
491
498
  tests/test_dashboard_fixture.py
492
499
  tests/test_dashboard_terminal.py
@@ -552,6 +559,7 @@ tests/test_health_config.py
552
559
  tests/test_health_context.py
553
560
  tests/test_health_coord_web_ci_pin.py
554
561
  tests/test_health_deploy_lane_facts.py
562
+ tests/test_health_fix.py
555
563
  tests/test_health_incident_regression.py
556
564
  tests/test_health_pypi.py
557
565
  tests/test_health_registry.py
@@ -647,6 +655,7 @@ tests/test_release_cordon_daemon_leads_2176.py
647
655
  tests/test_release_cordon_deadlock_2240.py
648
656
  tests/test_release_cordon_stuck_2490.py
649
657
  tests/test_release_propagate.py
658
+ tests/test_release_propagate_threshold.py
650
659
  tests/test_release_roll_window_handoff.py
651
660
  tests/test_release_unified_1242.py
652
661
  tests/test_release_verify.py
@@ -691,6 +700,7 @@ tests/test_state.py
691
700
  tests/test_state_review_findings_daemon.py
692
701
  tests/test_status_fleet_footer.py
693
702
  tests/test_stop_1567.py
703
+ tests/test_store_contract.py
694
704
  tests/test_stuck.py
695
705
  tests/test_terminal_command.py
696
706
  tests/test_test_author.py
@@ -699,6 +709,7 @@ tests/test_test_orchestrator.py
699
709
  tests/test_test_report.py
700
710
  tests/test_test_verdict_parsing.py
701
711
  tests/test_test_verdict_transcript_floor.py
712
+ tests/test_text_io_encoding_audit.py
702
713
  tests/test_thin_client_board_audit.py
703
714
  tests/test_thin_client_config_load_1080.py
704
715
  tests/test_thin_client_daemon_routing_906.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",
@@ -154,6 +155,7 @@
154
155
  "coord/health/checks/release_cordon.py",
155
156
  "coord/health/checks/repo_state.py",
156
157
  "coord/health/checks/spawned_coord.py",
158
+ "coord/health/checks/stalled_pipeline.py",
157
159
  "coord/health/checks/timer_active.py",
158
160
  "coord/health/checks/toolchain.py",
159
161
  "coord/health/checks/unit_drift.py",
@@ -286,6 +288,7 @@
286
288
  "docs/CONTROL_CENTER.md",
287
289
  "docs/COST_DISCIPLINE.md",
288
290
  "docs/CROSS_PLATFORM.md",
291
+ "docs/CUSTOMER_FACING_APPS.md",
289
292
  "docs/CUSTOMER_PORTAL.md",
290
293
  "docs/DRIVE_QUEUE.md",
291
294
  "docs/EPHEMERAL_WORKERS.md",
@@ -460,6 +463,7 @@
460
463
  "tests/test_board_cap_762.py",
461
464
  "tests/test_board_fixture.py",
462
465
  "tests/test_board_read_path.py",
466
+ "tests/test_board_schema.py",
463
467
  "tests/test_board_service.py",
464
468
  "tests/test_board_state.py",
465
469
  "tests/test_board_wire.py",
@@ -498,6 +502,7 @@
498
502
  "tests/test_cli_gate_a.py",
499
503
  "tests/test_cli_install_drift.py",
500
504
  "tests/test_cli_install_skills.py",
505
+ "tests/test_cli_issue_comment.py",
501
506
  "tests/test_cli_issue_create_label.py",
502
507
  "tests/test_cli_issue_reopen.py",
503
508
  "tests/test_cli_issue_view_list.py",
@@ -556,9 +561,11 @@
556
561
  "tests/test_coord_test_runner_populated_home.py",
557
562
  "tests/test_coord_test_runner_routing.py",
558
563
  "tests/test_coord_test_runner_toolchain.py",
564
+ "tests/test_coord_uat.py",
559
565
  "tests/test_coord_web_sse_restart_live.py",
560
566
  "tests/test_coordinator_machine.py",
561
567
  "tests/test_cross_platform_imports.py",
568
+ "tests/test_dao.py",
562
569
  "tests/test_dashboard.py",
563
570
  "tests/test_dashboard_fixture.py",
564
571
  "tests/test_dashboard_terminal.py",
@@ -624,6 +631,7 @@
624
631
  "tests/test_health_context.py",
625
632
  "tests/test_health_coord_web_ci_pin.py",
626
633
  "tests/test_health_deploy_lane_facts.py",
634
+ "tests/test_health_fix.py",
627
635
  "tests/test_health_incident_regression.py",
628
636
  "tests/test_health_pypi.py",
629
637
  "tests/test_health_registry.py",
@@ -719,6 +727,7 @@
719
727
  "tests/test_release_cordon_deadlock_2240.py",
720
728
  "tests/test_release_cordon_stuck_2490.py",
721
729
  "tests/test_release_propagate.py",
730
+ "tests/test_release_propagate_threshold.py",
722
731
  "tests/test_release_roll_window_handoff.py",
723
732
  "tests/test_release_unified_1242.py",
724
733
  "tests/test_release_verify.py",
@@ -763,6 +772,7 @@
763
772
  "tests/test_state_review_findings_daemon.py",
764
773
  "tests/test_status_fleet_footer.py",
765
774
  "tests/test_stop_1567.py",
775
+ "tests/test_store_contract.py",
766
776
  "tests/test_stuck.py",
767
777
  "tests/test_terminal_command.py",
768
778
  "tests/test_test_author.py",
@@ -771,6 +781,7 @@
771
781
  "tests/test_test_report.py",
772
782
  "tests/test_test_verdict_parsing.py",
773
783
  "tests/test_test_verdict_transcript_floor.py",
784
+ "tests/test_text_io_encoding_audit.py",
774
785
  "tests/test_thin_client_board_audit.py",
775
786
  "tests/test_thin_client_config_load_1080.py",
776
787
  "tests/test_thin_client_daemon_routing_906.py",
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.5.244",
3
+ "distance": 0,
4
+ "node": "ge4d9c7f1b82d7c7ee8f926388c85ad5ce89ee5aa",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-08-24"
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
 
@@ -98,6 +98,10 @@ def row_to_assignment(row: object) -> Assignment:
98
98
  review_posted_at=d.get("review_posted_at"),
99
99
  test_state=d.get("test_state"),
100
100
  test_reason=d.get("test_reason"),
101
+ # #2687: pre-merge UAT gate verdict; None for rows predating this
102
+ # column or a repo that hasn't opted in via Repo.uat_preview.
103
+ uat_state=d.get("uat_state"),
104
+ uat_reason=d.get("uat_reason"),
101
105
  # #1479: Test-gate staleness anchor; None for pre-1479 rows or where
102
106
  # it couldn't be captured — the merge-queue gate treats that as "SHA
103
107
  # tracking unavailable" and skips the staleness check (fail open).
@@ -451,7 +451,7 @@ def is_host_sleep_reason(reason: str | None) -> bool:
451
451
  def _append_log_line(log_path: str, line: str) -> None:
452
452
  """Best-effort append of a single line to the assignment log. Never raises."""
453
453
  try:
454
- with open(log_path, "a") as fh:
454
+ with open(log_path, "a", encoding="utf-8") as fh:
455
455
  fh.write(line)
456
456
  except OSError:
457
457
  pass
@@ -972,6 +972,7 @@ def _git(cwd: Path, *args: str, timeout: float = 15.0) -> str:
972
972
  cwd=str(cwd),
973
973
  capture_output=True,
974
974
  text=True,
975
+ encoding="utf-8",
975
976
  timeout=timeout,
976
977
  )
977
978
  if result.returncode != 0:
@@ -1229,6 +1230,7 @@ def _worktree_dirt(wt_path: Path) -> tuple[int, int] | None:
1229
1230
  cwd=str(wt_path),
1230
1231
  capture_output=True,
1231
1232
  text=True,
1233
+ encoding="utf-8",
1232
1234
  timeout=30.0,
1233
1235
  )
1234
1236
  except (subprocess.SubprocessError, OSError):
@@ -2163,7 +2165,7 @@ def stash_artifacts_for_branch(
2163
2165
  # not be recorded as a valid build artifact set.
2164
2166
  if assignment_id is not None and copied > 0:
2165
2167
  try:
2166
- (stash_dir / ".assignment_id").write_text(assignment_id)
2168
+ (stash_dir / ".assignment_id").write_text(assignment_id, encoding="utf-8")
2167
2169
  except OSError:
2168
2170
  pass
2169
2171
 
@@ -2301,6 +2303,8 @@ def _run_pre_stash_build(
2301
2303
  cwd=str(worktree),
2302
2304
  capture_output=True,
2303
2305
  text=True,
2306
+ encoding="utf-8",
2307
+ errors="replace",
2304
2308
  timeout=600,
2305
2309
  )
2306
2310
  ok = result.returncode == 0
@@ -4487,7 +4491,7 @@ def find_blocking_deny_rule(
4487
4491
  worktree_path = worktree_path.expanduser()
4488
4492
  for settings_path in settings_files:
4489
4493
  try:
4490
- raw = settings_path.read_text()
4494
+ raw = settings_path.read_text(encoding="utf-8")
4491
4495
  except OSError:
4492
4496
  continue
4493
4497
  try:
@@ -4530,7 +4534,7 @@ def check_worktree_writable(
4530
4534
  try:
4531
4535
  worktree_path.mkdir(parents=True, exist_ok=True)
4532
4536
  probe = worktree_path / f".coord-write-probe-{os.getpid()}"
4533
- probe.write_text("probe")
4537
+ probe.write_text("probe", encoding="utf-8")
4534
4538
  probe.unlink()
4535
4539
  except OSError as e:
4536
4540
  return f"cannot write to {worktree_path}: {e}"
@@ -6430,7 +6434,7 @@ class AgentServer:
6430
6434
  aid_path = stash_dir / ".assignment_id"
6431
6435
  built_by: str | None = None
6432
6436
  try:
6433
- built_by = aid_path.read_text().strip()
6437
+ built_by = aid_path.read_text(encoding="utf-8").strip()
6434
6438
  except OSError:
6435
6439
  pass
6436
6440
 
@@ -7326,7 +7330,7 @@ class AgentServer:
7326
7330
  # Trace the injection in the log so users can correlate later.
7327
7331
  if assignment.log_path:
7328
7332
  try:
7329
- with open(assignment.log_path, "a") as fh:
7333
+ with open(assignment.log_path, "a", encoding="utf-8") as fh:
7330
7334
  fh.write(f"# inject: {text}\n")
7331
7335
  except OSError:
7332
7336
  pass
@@ -7470,7 +7474,7 @@ class AgentServer:
7470
7474
  f"Push them when convenient so they aren't lost.\n"
7471
7475
  )
7472
7476
  try:
7473
- with open(assignment.log_path, "a") as fh:
7477
+ with open(assignment.log_path, "a", encoding="utf-8") as fh:
7474
7478
  fh.write(msg)
7475
7479
  except OSError:
7476
7480
  pass
@@ -7573,7 +7577,7 @@ class AgentServer:
7573
7577
  # won't fail and so the worker starts from origin/<default>.
7574
7578
  if local_has_branch and assignment.log_path:
7575
7579
  try:
7576
- with open(assignment.log_path, "a") as fh:
7580
+ with open(assignment.log_path, "a", encoding="utf-8") as fh:
7577
7581
  fh.write(
7578
7582
  f"# warning: discarding leftover local branch "
7579
7583
  f"{branch_name!r} (not on origin) and branching "
@@ -7602,7 +7606,7 @@ class AgentServer:
7602
7606
  def _log_line(self, assignment: AgentAssignment, text: str) -> None:
7603
7607
  """Append one line to the assignment log. Never raises (#1394)."""
7604
7608
  try:
7605
- with open(assignment.log_path, "a") as fh:
7609
+ with open(assignment.log_path, "a", encoding="utf-8") as fh:
7606
7610
  fh.write(text if text.endswith("\n") else text + "\n")
7607
7611
  except (OSError, AttributeError, TypeError):
7608
7612
  pass
@@ -8061,7 +8065,7 @@ class AgentServer:
8061
8065
  On any failure: mark the assignment FAILED and skip spawn. The HTTP
8062
8066
  client polls status to discover this.
8063
8067
  """
8064
- with open(assignment.log_path, "w") as log_fh:
8068
+ with open(assignment.log_path, "w", encoding="utf-8") as log_fh:
8065
8069
  log_fh.write(
8066
8070
  f"# pulling dependencies: {assignment.spec.pull_repos}\n"
8067
8071
  )
@@ -8161,7 +8165,7 @@ class AgentServer:
8161
8165
  argv = self.worker_command(assignment.spec)
8162
8166
  initial_input = _user_message_line(assignment.spec.briefing)
8163
8167
 
8164
- log_fh = open(assignment.log_path, "a") # noqa: SIM115 — handle closed in _reap
8168
+ log_fh = open(assignment.log_path, "a", encoding="utf-8") # noqa: SIM115 — handle closed in _reap
8165
8169
 
8166
8170
  argv_oneline = shlex.join(argv).replace("\n", "\\n")
8167
8171
  header = (
@@ -8333,7 +8337,7 @@ class AgentServer:
8333
8337
  spec, resolved_model=spec.model
8334
8338
  )
8335
8339
 
8336
- log_fh = open(assignment.log_path, "a") # noqa: SIM115 — closed in _reap
8340
+ log_fh = open(assignment.log_path, "a", encoding="utf-8") # noqa: SIM115 — closed in _reap
8337
8341
  argv_oneline = shlex.join(argv).replace("\n", "\\n")
8338
8342
  header = (
8339
8343
  f"# agent={self.machine_name} repo={spec.repo_name} "
@@ -8942,7 +8946,7 @@ class AgentServer:
8942
8946
  if _kill is not None:
8943
8947
  _usage_limit_reason = format_usage_limit_reason(_kill)
8944
8948
  try:
8945
- with open(log_path, "a") as reopen:
8949
+ with open(log_path, "a", encoding="utf-8") as reopen:
8946
8950
  reopen.write(
8947
8951
  "# reap: usage-limit kill detected — "
8948
8952
  f"{_usage_limit_reason} (#1461)\n"
@@ -8997,7 +9001,7 @@ class AgentServer:
8997
9001
  result_text=_worker_summary.result_text,
8998
9002
  )
8999
9003
  try:
9000
- with open(log_path, "a") as reopen:
9004
+ with open(log_path, "a", encoding="utf-8") as reopen:
9001
9005
  reopen.write(
9002
9006
  "# reap: terminal API error detected — "
9003
9007
  f"{_api_error_reason} (#1584)\n"
@@ -9046,11 +9050,11 @@ class AgentServer:
9046
9050
  wt_path = Path(assignment.worktree_path)
9047
9051
  if wt_path.exists() and exit_code == 0:
9048
9052
  try:
9049
- with open(assignment.log_path, "a") as reopen:
9053
+ with open(assignment.log_path, "a", encoding="utf-8") as reopen:
9050
9054
  reopen.write("\n# reap: push starting\n")
9051
9055
  _git(wt_path, "push", "-u", "origin", "HEAD", timeout=60.0)
9052
9056
  try:
9053
- with open(assignment.log_path, "a") as reopen:
9057
+ with open(assignment.log_path, "a", encoding="utf-8") as reopen:
9054
9058
  reopen.write("# reap: push completed\n")
9055
9059
  except OSError:
9056
9060
  pass
@@ -9097,7 +9101,7 @@ class AgentServer:
9097
9101
  else:
9098
9102
  _push_failure_reason = _reason
9099
9103
  try:
9100
- with open(assignment.log_path, "a") as reopen:
9104
+ with open(assignment.log_path, "a", encoding="utf-8") as reopen:
9101
9105
  if _suppressed_as_already_pushed:
9102
9106
  # Deliberately NOT the generic "push
9103
9107
  # failed" line below: that line reads as
@@ -9172,7 +9176,7 @@ class AgentServer:
9172
9176
  _worker_summary.stop_reason, assignment.spec.provider
9173
9177
  )
9174
9178
  try:
9175
- with open(assignment.log_path, "a") as reopen:
9179
+ with open(assignment.log_path, "a", encoding="utf-8") as reopen:
9176
9180
  reopen.write(
9177
9181
  "# reap: truncated — 0 commits ahead of "
9178
9182
  f"{_base}; stop_reason="
@@ -9184,7 +9188,7 @@ class AgentServer:
9184
9188
  elif DELIVERABLE_ANALYSIS_LABEL in (assignment.spec.issue_labels or []):
9185
9189
  _analysis_deliverable = True
9186
9190
  try:
9187
- with open(assignment.log_path, "a") as reopen:
9191
+ with open(assignment.log_path, "a", encoding="utf-8") as reopen:
9188
9192
  reopen.write(
9189
9193
  "# reap: analysis deliverable — 0 commits "
9190
9194
  f"ahead of {_base}; issue labelled "
@@ -9208,7 +9212,7 @@ class AgentServer:
9208
9212
  "worker cited a standing repo-rule prohibition"
9209
9213
  )
9210
9214
  try:
9211
- with open(assignment.log_path, "a") as reopen:
9215
+ with open(assignment.log_path, "a", encoding="utf-8") as reopen:
9212
9216
  reopen.write(
9213
9217
  "# reap: refused_policy — 0 commits ahead "
9214
9218
  f"of {_base}; worker's final message cites "
@@ -9222,7 +9226,7 @@ class AgentServer:
9222
9226
  "worker exited cleanly but pushed 0 commits"
9223
9227
  )
9224
9228
  try:
9225
- with open(assignment.log_path, "a") as reopen:
9229
+ with open(assignment.log_path, "a", encoding="utf-8") as reopen:
9226
9230
  reopen.write(
9227
9231
  "# reap: advisory — 0 commits ahead of "
9228
9232
  f"{_base}; status set to advisory\n"
@@ -9233,7 +9237,7 @@ class AgentServer:
9233
9237
  # This block MUST always run regardless of push outcome so that
9234
9238
  # the assignment transitions out of 'running'.
9235
9239
  try:
9236
- with open(assignment.log_path, "a") as reopen:
9240
+ with open(assignment.log_path, "a", encoding="utf-8") as reopen:
9237
9241
  reopen.write("# reap: updating status\n")
9238
9242
  except (OSError, AttributeError):
9239
9243
  pass
@@ -9412,7 +9416,7 @@ class AgentServer:
9412
9416
 
9413
9417
  self._persist()
9414
9418
  try:
9415
- with open(assignment.log_path, "a") as reopen:
9419
+ with open(assignment.log_path, "a", encoding="utf-8") as reopen:
9416
9420
  final_status = assignment.status if assignment else "unknown"
9417
9421
  # #2212: log a plain `graphify_invocations=N` counter alongside
9418
9422
  # the existing reap line — this is the measurable half of the
@@ -9494,7 +9498,7 @@ class AgentServer:
9494
9498
  _sa.stash_unmatched_globs = list(_stash_unmatched)
9495
9499
  self._persist()
9496
9500
  try:
9497
- with open(assignment.log_path, "a") as _lf:
9501
+ with open(assignment.log_path, "a", encoding="utf-8") as _lf:
9498
9502
  _lf.write(
9499
9503
  f"# reap: stash diagnostic — {_stash_diag_reason}; "
9500
9504
  "status left unchanged (see #1357)\n"
@@ -9781,7 +9785,7 @@ class AgentServer:
9781
9785
  dir=str(self.state_dir), prefix="agent_state.", suffix=".tmp"
9782
9786
  )
9783
9787
  tmp_path = Path(tmp_name)
9784
- with os.fdopen(fd, "w") as f:
9788
+ with os.fdopen(fd, "w", encoding="utf-8") as f:
9785
9789
  f.write(json.dumps(data, indent=2))
9786
9790
  os.replace(tmp_path, self.state_path)
9787
9791
  except (FileNotFoundError, OSError) as e:
@@ -9796,7 +9800,7 @@ class AgentServer:
9796
9800
  if not self.state_path.exists():
9797
9801
  return
9798
9802
  try:
9799
- data = json.loads(self.state_path.read_text())
9803
+ data = json.loads(self.state_path.read_text(encoding="utf-8"))
9800
9804
  except (OSError, json.JSONDecodeError) as e:
9801
9805
  # #1421: a corrupt/truncated state file used to be discarded
9802
9806
  # silently here, so an agent restart after the _persist() race
@@ -26,6 +26,7 @@ from coord.dist_name import DistributionNotFoundError, resolve_installed, resolv
26
26
  from coord.dist_name import pkg_spec as _dist_pkg_spec
27
27
  from coord.events import stream_assignment_log
28
28
  from coord.openapi import build_spec, dataclass_schema, openapi_and_docs_routes
29
+ from coord.platform_paths import venv_python as platform_venv_python
29
30
 
30
31
  _log = logging.getLogger(__name__)
31
32
 
@@ -132,6 +133,22 @@ def _running_under_systemd() -> bool:
132
133
  return bool(os.environ.get("INVOCATION_ID"))
133
134
 
134
135
 
136
+ def _systemctl_env() -> dict[str, str]:
137
+ """``os.environ`` overlaid with a best-effort ``XDG_RUNTIME_DIR`` default
138
+ for the ``systemctl --user`` calls below.
139
+
140
+ ``XDG_RUNTIME_DIR`` is an XDG/systemd concept with no Windows meaning --
141
+ and ``os.getuid()`` doesn't exist there either, so the unguarded default
142
+ raised ``AttributeError`` at call time on win32 (#2681). None of these
143
+ call sites are reachable on Windows anyway (there is no ``systemctl``),
144
+ so the default is simply skipped there rather than invented.
145
+ """
146
+ env = dict(os.environ)
147
+ if sys.platform != "win32":
148
+ env.setdefault("XDG_RUNTIME_DIR", f"/run/user/{os.getuid()}")
149
+ return env
150
+
151
+
135
152
  def _restart_via_systemctl(unit: str = "coord-agent") -> bool:
136
153
  """Best-effort ``systemctl --user restart <unit>``, run from *inside*
137
154
  the unit's own process.
@@ -150,11 +167,10 @@ def _restart_via_systemctl(unit: str = "coord-agent") -> bool:
150
167
  whether the restart actually completed; the caller's process is about
151
168
  to exit either way, so there is nothing left here to poll for.
152
169
  """
153
- env = dict(os.environ)
154
170
  # Should already be set for a process systemd itself started, but
155
171
  # setting it explicitly costs nothing and matches the SSH-driven
156
172
  # fallback in agent_ops.py, where it IS load-bearing.
157
- env.setdefault("XDG_RUNTIME_DIR", f"/run/user/{os.getuid()}")
173
+ env = _systemctl_env()
158
174
  try:
159
175
  subprocess.Popen(
160
176
  ["systemctl", "--user", "restart", unit],
@@ -214,8 +230,7 @@ def _unit_listen_port(unit: str) -> str | None:
214
230
  systemctl on PATH, no user bus, unit not installed, or an ExecStart with
215
231
  no ``--port`` on it.
216
232
  """
217
- env = dict(os.environ)
218
- env.setdefault("XDG_RUNTIME_DIR", f"/run/user/{os.getuid()}")
233
+ env = _systemctl_env()
219
234
  try:
220
235
  result = subprocess.run(
221
236
  ["systemctl", "--user", "show", unit, "--property=ExecStart"],
@@ -306,8 +321,7 @@ def _restart_sibling_unit(unit: str, *, timeout: float = 30.0) -> tuple[bool, st
306
321
  call, is what actually decides the outcome now, exactly as its own
307
322
  docstring paragraph above argues it should.
308
323
  """
309
- env = dict(os.environ)
310
- env.setdefault("XDG_RUNTIME_DIR", f"/run/user/{os.getuid()}")
324
+ env = _systemctl_env()
311
325
  try:
312
326
  result = subprocess.run(
313
327
  ["systemctl", "--user", "restart", "--no-block", unit],
@@ -401,8 +415,8 @@ def _default_exec_restart(argv: list[str]) -> None:
401
415
  """
402
416
  if _running_under_systemd() and _restart_via_systemctl():
403
417
  os._exit(0)
404
- venv_python = _venv_dir() / "bin" / "python"
405
- executable = str(venv_python) if venv_python.exists() else sys.executable
418
+ venv_python_path = platform_venv_python(_venv_dir())
419
+ executable = str(venv_python_path) if venv_python_path.exists() else sys.executable
406
420
  os.execv(executable, [executable] + argv)
407
421
 
408
422
 
@@ -85,6 +85,8 @@ import sys
85
85
  from dataclasses import dataclass
86
86
  from pathlib import Path
87
87
 
88
+ from coord.platform_paths import venv_exe, venv_pip, venv_python
89
+
88
90
  _log = logging.getLogger(__name__)
89
91
 
90
92
  #: Suffixes for the two blue/green slots, relative to the live venv dir
@@ -548,8 +550,8 @@ def _smoke_check(slot: Path, *, target_version: str | None) -> tuple[bool, str |
548
550
  caught) — that means the fresh install is genuinely broken, which is
549
551
  exactly what a failed smoke check should report.
550
552
  """
551
- python = slot / "bin" / "python"
552
- coord_bin = slot / "bin" / "coord"
553
+ python = venv_python(slot)
554
+ coord_bin = venv_exe(slot, "coord")
553
555
  lines: list[str] = []
554
556
 
555
557
  try:
@@ -730,7 +732,7 @@ def perform_update(
730
732
  # distinct blue/green slots), so the interpreter doing the building can
731
733
  # never be the thing this update is about to rmtree, regardless of
732
734
  # which slot the calling process itself happens to be running from.
733
- builder_python = active / "bin" / "python"
735
+ builder_python = venv_python(active)
734
736
  if not builder_python.exists():
735
737
  builder_python = Path(sys.executable)
736
738
  try:
@@ -746,7 +748,7 @@ def perform_update(
746
748
  if result.returncode != 0:
747
749
  return _fail(f"venv creation failed (exit {result.returncode})")
748
750
 
749
- pip = str(next_slot / "bin" / "pip")
751
+ pip = str(venv_pip(next_slot))
750
752
  install_spec = f"{pkg_spec}=={target_version}" if target_version else pkg_spec
751
753
  try:
752
754
  result = subprocess.run(