code-coordinator 0.5.228__tar.gz → 0.5.230__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 (811) hide show
  1. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/PKG-INFO +1 -1
  2. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/PKG-INFO +1 -1
  3. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/SOURCES.txt +1 -0
  4. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/scm_file_list.json +1 -0
  5. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/scm_version.json +2 -2
  6. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/agent.py +14 -8
  7. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/agent_app.py +36 -6
  8. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/block_log.py +192 -1
  9. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/dispatch_workers.py +9 -9
  10. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/drive_queue.py +136 -6
  11. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/sessions.py +7 -1
  12. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/status.py +7 -2
  13. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/diagnose.py +9 -2
  14. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/interactive.py +347 -28
  15. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/providers/claude_pty.py +55 -0
  16. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/AGENT_OPERATIONS.md +51 -0
  17. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent.py +22 -0
  18. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_block_log.py +113 -0
  19. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_assign.py +35 -0
  20. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_drive_queue.py +165 -1
  21. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_reattach_sessions.py +162 -0
  22. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_diagnose.py +88 -0
  23. code_coordinator-0.5.230/tests/test_interactive_pane_log_2541.py +333 -0
  24. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_paste_landed.py +60 -0
  25. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_remote_interactive_reaper.py +128 -17
  26. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_tmux_session.py +57 -1
  27. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.claude/commands/board.md +0 -0
  28. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.claude/commands/complete-session.md +0 -0
  29. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.claude/commands/coordinator.md +0 -0
  30. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.githooks/_lib.sh +0 -0
  31. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.githooks/post-checkout +0 -0
  32. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.githooks/post-commit +0 -0
  33. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.githooks/post-merge +0 -0
  34. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  35. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.github/coord-ci-acceptance.yml +0 -0
  36. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.github/workflows/auto-release.yml +0 -0
  37. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.github/workflows/cargo-test.yml +0 -0
  38. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.github/workflows/publish.yml +0 -0
  39. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.github/workflows/release-tui.yml +0 -0
  40. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.github/workflows/test.yml +0 -0
  41. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/.gitignore +0 -0
  42. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/CLAUDE.md +0 -0
  43. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/GOAL.md +0 -0
  44. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/LICENSE +0 -0
  45. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/MANIFEST.in +0 -0
  46. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/README.md +0 -0
  47. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/dependency_links.txt +0 -0
  48. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/entry_points.txt +0 -0
  49. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/requires.txt +0 -0
  50. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/code_coordinator.egg-info/top_level.txt +0 -0
  51. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/__init__.py +0 -0
  52. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/_board_mapping.py +0 -0
  53. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/acceptance.py +0 -0
  54. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/acceptance_drivers.py +0 -0
  55. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/agent_update.py +0 -0
  56. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/agents/opencode/.gitignore +0 -0
  57. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/agents/opencode/agents/work.md +0 -0
  58. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/agents/opencode/routing.jsonc +0 -0
  59. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/approved_work.py +0 -0
  60. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/audit.py +0 -0
  61. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/auto_loop.py +0 -0
  62. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/board_bool_guard.py +0 -0
  63. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/board_service.py +0 -0
  64. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/board_wire.py +0 -0
  65. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/brain.py +0 -0
  66. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/branch_model.py +0 -0
  67. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/bug_intake.py +0 -0
  68. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/cargo_cache.py +0 -0
  69. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/ci_fix.py +0 -0
  70. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/ci_github.py +0 -0
  71. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/ci_gitlab.py +0 -0
  72. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/ci_store.py +0 -0
  73. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/claim.py +0 -0
  74. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/cli.py +0 -0
  75. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/client.py +0 -0
  76. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/__init__.py +0 -0
  77. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/_common.py +0 -0
  78. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/acceptance.py +0 -0
  79. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/agent_ops.py +0 -0
  80. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/audit.py +0 -0
  81. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/chat.py +0 -0
  82. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/dispatch.py +0 -0
  83. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/drive.py +0 -0
  84. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/gate_a.py +0 -0
  85. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/gates.py +0 -0
  86. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/issues.py +0 -0
  87. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/lifecycle.py +0 -0
  88. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/merge.py +0 -0
  89. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/milestone.py +0 -0
  90. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/plan_followup.py +0 -0
  91. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/plans.py +0 -0
  92. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/portal.py +0 -0
  93. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/release.py +0 -0
  94. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/repo.py +0 -0
  95. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/report.py +0 -0
  96. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/review.py +0 -0
  97. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/scorecard.py +0 -0
  98. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/setup.py +0 -0
  99. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/terminal.py +0 -0
  100. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/test_gate.py +0 -0
  101. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/commands/tui.py +0 -0
  102. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/comments.py +0 -0
  103. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/config.py +0 -0
  104. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/config_reload.py +0 -0
  105. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/confirm_test.py +0 -0
  106. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/conflict_fix.py +0 -0
  107. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dao.py +0 -0
  108. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dashboard/__init__.py +0 -0
  109. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dashboard/fixture.py +0 -0
  110. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dashboard/index.html +0 -0
  111. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dashboard/server.py +0 -0
  112. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dashboard/terminal.py +0 -0
  113. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/db.py +0 -0
  114. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dead_end.py +0 -0
  115. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/README.md +0 -0
  116. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-agent.service +0 -0
  117. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-db-backup.service +0 -0
  118. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-db-backup.sh +0 -0
  119. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-db-backup.timer +0 -0
  120. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-drive-queue.service +0 -0
  121. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-drive-queue.timer +0 -0
  122. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-notify.service +0 -0
  123. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-notify.timer +0 -0
  124. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-release-propagate.service +0 -0
  125. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-release-propagate.timer +0 -0
  126. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-release-window.service +0 -0
  127. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-release-window.timer +0 -0
  128. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-serve.service +0 -0
  129. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-web-dist-build.service +0 -0
  130. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-web-dist-build.timer +0 -0
  131. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy/coord-web.service +0 -0
  132. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy_manifest.py +0 -0
  133. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deploy_units.py +0 -0
  134. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/deps.py +0 -0
  135. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dispatch.py +0 -0
  136. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/dist_name.py +0 -0
  137. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/drive.py +0 -0
  138. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/drive_queue.py +0 -0
  139. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/drive_state.py +0 -0
  140. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/events.py +0 -0
  141. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/failure_class.py +0 -0
  142. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/filelock.py +0 -0
  143. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/fleet_config_health.py +0 -0
  144. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/forge_availability.py +0 -0
  145. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/freshness.py +0 -0
  146. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/gate_a.py +0 -0
  147. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/gate_b.py +0 -0
  148. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/gate_snapshot.py +0 -0
  149. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/gates.py +0 -0
  150. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/github_ops.py +0 -0
  151. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/goal.py +0 -0
  152. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/graph_health.py +0 -0
  153. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/__init__.py +0 -0
  154. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/aggregate.py +0 -0
  155. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/__init__.py +0 -0
  156. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/agent_install.py +0 -0
  157. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/cargo_targets.py +0 -0
  158. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/claude_binary.py +0 -0
  159. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/coord_web_ci_pin.py +0 -0
  160. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/deploy_lane_facts.py +0 -0
  161. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/disk.py +0 -0
  162. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/fleet_board.py +0 -0
  163. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/fleet_deploy_lanes.py +0 -0
  164. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/fleet_phantom.py +0 -0
  165. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/fleet_unit_drift.py +0 -0
  166. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/graph.py +0 -0
  167. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/graphify_cli.py +0 -0
  168. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/index_lock.py +0 -0
  169. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/plan_usage.py +0 -0
  170. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/repo_state.py +0 -0
  171. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/spawned_coord.py +0 -0
  172. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/timer_active.py +0 -0
  173. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/toolchain.py +0 -0
  174. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/unit_drift.py +0 -0
  175. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/unit_enablement.py +0 -0
  176. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/checks/worktrees.py +0 -0
  177. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/cli.py +0 -0
  178. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/context.py +0 -0
  179. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/fleet_snapshot.py +0 -0
  180. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/models.py +0 -0
  181. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/pypi.py +0 -0
  182. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/registry.py +0 -0
  183. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/render.py +0 -0
  184. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/health/units.py +0 -0
  185. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/hooks.py +0 -0
  186. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/housekeeping.py +0 -0
  187. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/issue_store.py +0 -0
  188. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/liveness_auditor.py +0 -0
  189. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/machine_pause.py +0 -0
  190. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/merge_queue.py +0 -0
  191. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/milestone_chat.py +0 -0
  192. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/milestone_dispatch.py +0 -0
  193. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/milestone_gate.py +0 -0
  194. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/milestone_order.py +0 -0
  195. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/mock_author.py +0 -0
  196. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/models.py +0 -0
  197. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/network.py +0 -0
  198. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/new_issue_chat.py +0 -0
  199. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/__init__.py +0 -0
  200. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/baseline.py +0 -0
  201. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/cli.py +0 -0
  202. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/collect.py +0 -0
  203. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/digest.py +0 -0
  204. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/models.py +0 -0
  205. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/predicate.py +0 -0
  206. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/service.py +0 -0
  207. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/store.py +0 -0
  208. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notifier/transport.py +0 -0
  209. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/notify.py +0 -0
  210. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/openapi.py +0 -0
  211. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/overlap_fence.py +0 -0
  212. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/overlap_predict.py +0 -0
  213. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/parentage.py +0 -0
  214. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/parentage_github.py +0 -0
  215. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/pipeline.py +0 -0
  216. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/plan_parser.py +0 -0
  217. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/plans.py +0 -0
  218. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/platform_paths.py +0 -0
  219. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/portal_bridge.py +0 -0
  220. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/portal_store.py +0 -0
  221. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/portal_sync.py +0 -0
  222. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/pr_body_lint.py +0 -0
  223. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/prereqs.py +0 -0
  224. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/progress.py +0 -0
  225. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/providers/__init__.py +0 -0
  226. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/providers/base.py +0 -0
  227. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/providers/claude.py +0 -0
  228. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/providers/opencode.py +0 -0
  229. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/queue_diagnose.py +0 -0
  230. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/reconcile.py +0 -0
  231. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/reconcile_tick.py +0 -0
  232. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/refine_chat.py +0 -0
  233. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/release_cordon.py +0 -0
  234. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/release_propagate.py +0 -0
  235. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/release_verify.py +0 -0
  236. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/release_window.py +0 -0
  237. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/repo_edit.py +0 -0
  238. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/repo_onboard.py +0 -0
  239. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/reports.py +0 -0
  240. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/revalidate.py +0 -0
  241. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/review.py +0 -0
  242. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/scorecard.py +0 -0
  243. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/self_health.py +0 -0
  244. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/serve_app.py +0 -0
  245. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/coord-dispatch-verbs/SKILL.md +0 -0
  246. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/drive-queue-preflight/SKILL.md +0 -0
  247. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/fleet-restart-safety/SKILL.md +0 -0
  248. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/merge-stuck-triage/SKILL.md +0 -0
  249. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/pipeline-limbo-triage/SKILL.md +0 -0
  250. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/portal-followup/SKILL.md +0 -0
  251. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/review-verdict-recovery/SKILL.md +0 -0
  252. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/tui-quadraui-workflow/SKILL.md +0 -0
  253. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/skills/update-issue/SKILL.md +0 -0
  254. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/smoke.py +0 -0
  255. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/spend_ceiling.py +0 -0
  256. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/split_work.py +0 -0
  257. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/stage_projection.py +0 -0
  258. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/state.py +0 -0
  259. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/test_author.py +0 -0
  260. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/test_chat.py +0 -0
  261. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/test_orchestrator.py +0 -0
  262. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/test_report.py +0 -0
  263. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/tui_release.py +0 -0
  264. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/usage.py +0 -0
  265. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/usage_limits.py +0 -0
  266. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/usage_rollup.py +0 -0
  267. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coord/worker_events.py +0 -0
  268. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/coordinator.example.yml +0 -0
  269. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-agent.service +0 -0
  270. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-db-backup.service +0 -0
  271. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-db-backup.sh +0 -0
  272. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-db-backup.timer +0 -0
  273. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-drive-queue.service +0 -0
  274. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-drive-queue.timer +0 -0
  275. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-notify.service +0 -0
  276. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-notify.timer +0 -0
  277. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-release-propagate.service +0 -0
  278. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-release-propagate.timer +0 -0
  279. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-release-window.service +0 -0
  280. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-release-window.timer +0 -0
  281. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-serve.service +0 -0
  282. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-web-dist-build.service +0 -0
  283. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-web-dist-build.sh +0 -0
  284. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-web-dist-build.timer +0 -0
  285. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-web-rollback.sh +0 -0
  286. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/coord-web.service +0 -0
  287. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/deploy/node-shim.sh +0 -0
  288. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/ADR_COORD_WEB_ACCEPTANCE_SUITE.md +0 -0
  289. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/ADR_COORD_WEB_CI.md +0 -0
  290. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/ADR_COORD_WEB_DIST.md +0 -0
  291. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/ARCHITECTURE.md +0 -0
  292. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/ARCH_SECURITY_GATES.md +0 -0
  293. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/COCKPIT.md +0 -0
  294. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/CONTROL_CENTER.md +0 -0
  295. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/COST_DISCIPLINE.md +0 -0
  296. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/CROSS_PLATFORM.md +0 -0
  297. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/CUSTOMER_PORTAL.md +0 -0
  298. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/DRIVE_QUEUE.md +0 -0
  299. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/EPHEMERAL_WORKERS.md +0 -0
  300. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/FORGE_MIGRATION.md +0 -0
  301. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/GRAPHIFY_SETUP.md +0 -0
  302. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/ISSUE_GUIDANCE.md +0 -0
  303. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/MAC_MINI.md +0 -0
  304. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/MERGE_AUTO_DRAIN_TRUST_BAR.md +0 -0
  305. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/NOTIFIER.md +0 -0
  306. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/OPENCODE_VERIFICATION.md +0 -0
  307. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/OPERATING_GOTCHAS.md +0 -0
  308. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/ORACLE_LOOP.md +0 -0
  309. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/PHONE_WEBAPP.md +0 -0
  310. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/PIPELINE_V2.md +0 -0
  311. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/PLATFORM_EVOLUTION.md +0 -0
  312. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/SECOND_BACKEND.md +0 -0
  313. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/STORE_SERVICE.md +0 -0
  314. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/TEST_FIRST_BUG_LANE.md +0 -0
  315. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/WEB_CONTROL_CENTER.md +0 -0
  316. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/WSL_WINDOWS_WORKER.md +0 -0
  317. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/mocks/web/README.md +0 -0
  318. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/mocks/web/_tokens.css +0 -0
  319. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/mocks/web/issue-detail.html +0 -0
  320. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/mocks/web/pipeline-narrow.html +0 -0
  321. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/docs/mocks/web/pipeline-wide.html +0 -0
  322. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/graphify-out/.gitignore +0 -0
  323. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/install-agent.sh +0 -0
  324. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/pyproject.toml +0 -0
  325. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/audit_review_verdict_overrides.py +0 -0
  326. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/bootstrap-shared.sh +0 -0
  327. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/build-worker-image.sh +0 -0
  328. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/coordinator-machine.py +0 -0
  329. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/epic-down.sh +0 -0
  330. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/epic-up.sh +0 -0
  331. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/preflight.sh +0 -0
  332. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/provision-worker.sh +0 -0
  333. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/scrub-and-generalize.sh +0 -0
  334. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/tailnet-acl.hujson +0 -0
  335. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/azure-workers/verify-github-token.sh +0 -0
  336. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/check_gh_argv_containment.py +0 -0
  337. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/codegen.py +0 -0
  338. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/coord-test-runner.sh +0 -0
  339. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/drive-batch.sh +0 -0
  340. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/gen_board_fixture.py +0 -0
  341. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/gen_mock_index.py +0 -0
  342. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/next_release_tag.py +0 -0
  343. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/run_tests_in_populated_home.sh +0 -0
  344. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/run_tests_without_gh.sh +0 -0
  345. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/smoke_437_interactive.py +0 -0
  346. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/verify_878_review_capture.py +0 -0
  347. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/verify_release_published.py +0 -0
  348. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/scripts/verify_release_wheel.py +0 -0
  349. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/setup.cfg +0 -0
  350. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/SMOKE_SET.md +0 -0
  351. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/__init__.py +0 -0
  352. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-33/audit_1039.rs +0 -0
  353. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-33/contract.md +0 -0
  354. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-33/manifest.yml +0 -0
  355. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-33/mocks/audit-panel-detail.screen +0 -0
  356. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-33/mocks/audit-panel-empty.screen +0 -0
  357. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-33/mocks/audit-panel-filters.screen +0 -0
  358. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-33/mocks/audit-panel-populated.screen +0 -0
  359. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-37/conftest.py +0 -0
  360. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-37/contract.md +0 -0
  361. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-37/manifest.yml +0 -0
  362. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-37/test_usage_cli_1115.py +0 -0
  363. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-37/test_usage_core_1118.py +0 -0
  364. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/contract.md +0 -0
  365. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/manifest.yml +0 -0
  366. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/mocks/plans-base.screen +0 -0
  367. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/mocks/plans-detail-pane.screen +0 -0
  368. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/mocks/plans-help-overlay.screen +0 -0
  369. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/mocks/plans-palette.screen +0 -0
  370. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/mocks/plans-rightclick-epic.screen +0 -0
  371. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/mocks/plans-rightclick-header.screen +0 -0
  372. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/mocks/plans-rightclick-stub.screen +0 -0
  373. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/plans_detail_1122.rs +0 -0
  374. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/plans_help_1124.rs +0 -0
  375. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-38/plans_rightclick_1123.rs +0 -0
  376. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-51/contract.md +0 -0
  377. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-51/home-active-extended.spec.ts +0 -0
  378. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-51/home-active.spec.ts +0 -0
  379. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-51/manifest.yml +0 -0
  380. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-51/mocks/home-active.html +0 -0
  381. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-51/tsconfig.json +0 -0
  382. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/board_split_2288.rs +0 -0
  383. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/board_tabs_2282.rs +0 -0
  384. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/board_tabs_close_2283.rs +0 -0
  385. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/contract.md +0 -0
  386. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/detail_substate_2285.rs +0 -0
  387. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/manifest.yml +0 -0
  388. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/board-baseline-no-tabs.screen +0 -0
  389. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/board-pinned-3-tabs.screen +0 -0
  390. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/board-preview-tab.screen +0 -0
  391. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/board-split-side-by-side.screen +0 -0
  392. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/board-tab-context-menu.screen +0 -0
  393. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/board-tabs-help-overlay.screen +0 -0
  394. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/board-tabs-overflow.screen +0 -0
  395. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/mocks/pipeline-tabs-independent.screen +0 -0
  396. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/pipeline_tabs_2284.rs +0 -0
  397. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/tabs_discoverability_2287.rs +0 -0
  398. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-65/tabs_persistence_2286.rs +0 -0
  399. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/approved_items_2532.rs +0 -0
  400. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/contract.md +0 -0
  401. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/manifest.yml +0 -0
  402. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/mocks/approved-items-chat-opened.screen +0 -0
  403. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/mocks/approved-items-context-menu.screen +0 -0
  404. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/mocks/approved-items-detail.screen +0 -0
  405. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/mocks/approved-items-empty.screen +0 -0
  406. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-67/mocks/approved-items-populated.screen +0 -0
  407. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/acceptance/ms-example/mocks/home-active.html +0 -0
  408. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/conftest.py +0 -0
  409. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/board-pipeline-basic.json +0 -0
  410. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/board-pipeline-terminal-gates.json +0 -0
  411. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/opencode_run_failure_sample.jsonl +0 -0
  412. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/opencode_run_length_sample.jsonl +0 -0
  413. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/opencode_run_sample.jsonl +0 -0
  414. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/playwright/all_pass.json +0 -0
  415. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/playwright/global_setup_crash.json +0 -0
  416. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/playwright/mixed_fail.json +0 -0
  417. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/playwright/retry_then_pass.json +0 -0
  418. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/playwright/retry_then_pass.junit.xml +0 -0
  419. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/playwright/skip.json +0 -0
  420. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/playwright/truncated.json +0 -0
  421. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/cargo_compile_error.txt +0 -0
  422. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/cargo_multi_target_failures.txt +0 -0
  423. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/cargo_no_parseable_failures.txt +0 -0
  424. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/pytest_collection_error.txt +0 -0
  425. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/pytest_error_string_in_body.txt +0 -0
  426. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/pytest_internal_error.txt +0 -0
  427. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/pytest_mixed_failures.txt +0 -0
  428. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/fixtures/test_report/pytest_no_parseable_failures.txt +0 -0
  429. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_acceptance.py +0 -0
  430. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_acceptance_drivers.py +0 -0
  431. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_api_error.py +0 -0
  432. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_app.py +0 -0
  433. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_branch_base.py +0 -0
  434. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_branch_capture.py +0 -0
  435. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_config_free_1712.py +0 -0
  436. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_deploy_units_endpoint.py +0 -0
  437. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_dirty_worktree.py +0 -0
  438. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_drive_queue_reconcile_2373.py +0 -0
  439. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_graph_self_heal.py +0 -0
  440. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_health_h3.py +0 -0
  441. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_idle_restart.py +0 -0
  442. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_push_failure.py +0 -0
  443. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_reap.py +0 -0
  444. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_repos_and_pull.py +0 -0
  445. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_restart_services_endpoint.py +0 -0
  446. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_skills_self_heal.py +0 -0
  447. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_startup_diagnostics.py +0 -0
  448. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_update.py +0 -0
  449. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_update_bluegreen.py +0 -0
  450. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_usage_limit.py +0 -0
  451. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_agent_zero_commit.py +0 -0
  452. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_ambient_home_isolation.py +0 -0
  453. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_approve_reject_plan.py +0 -0
  454. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_approve_usage_gate.py +0 -0
  455. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_approved_work_2532.py +0 -0
  456. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_assignment_already_recorded_daemon.py +0 -0
  457. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_audit_log.py +0 -0
  458. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_audit_outcome.py +0 -0
  459. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_audit_query.py +0 -0
  460. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_auto_loop.py +0 -0
  461. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_auto_release_publish_2035.py +0 -0
  462. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_base_checkout_restore.py +0 -0
  463. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_board_cap_762.py +0 -0
  464. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_board_fixture.py +0 -0
  465. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_board_read_path.py +0 -0
  466. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_board_service.py +0 -0
  467. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_board_state.py +0 -0
  468. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_board_wire.py +0 -0
  469. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_brain.py +0 -0
  470. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_branch_model.py +0 -0
  471. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_bug_intake.py +0 -0
  472. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_build_worker_image_env_update.py +0 -0
  473. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cargo_cache.py +0 -0
  474. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_check_gh_argv_containment.py +0 -0
  475. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_ci_acceptance_gate_1950.py +0 -0
  476. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_ci_fix.py +0 -0
  477. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_ci_gitlab.py +0 -0
  478. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_ci_parity_2091.py +0 -0
  479. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_ci_store.py +0 -0
  480. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_claim.py +0 -0
  481. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_acceptance.py +0 -0
  482. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_assign_interactive_oracle_gate.py +0 -0
  483. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_assign_interactive_remote.py +0 -0
  484. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_assign_provider.py +0 -0
  485. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_assign_repo_drift_2219.py +0 -0
  486. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_audit.py +0 -0
  487. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_chat_continue.py +0 -0
  488. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_decide.py +0 -0
  489. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_diagnose_config_provenance.py +0 -0
  490. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_diagnose_forge_availability.py +0 -0
  491. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_diagnose_graph.py +0 -0
  492. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_diagnose_self.py +0 -0
  493. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_doctor.py +0 -0
  494. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_doctor_config_free_1801.py +0 -0
  495. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_doctor_config_mismatch_1712.py +0 -0
  496. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_drive.py +0 -0
  497. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_escalate.py +0 -0
  498. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_fix_headless_review.py +0 -0
  499. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_gate_a.py +0 -0
  500. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_install_drift.py +0 -0
  501. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_install_skills.py +0 -0
  502. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_issue_create_label.py +0 -0
  503. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_issue_reopen.py +0 -0
  504. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_merge.py +0 -0
  505. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_assign.py +0 -0
  506. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_capture.py +0 -0
  507. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_chat_add_child.py +0 -0
  508. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_dispatch.py +0 -0
  509. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_gate_b.py +0 -0
  510. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_gate_c.py +0 -0
  511. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_order.py +0 -0
  512. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_remove_and_issue_close.py +0 -0
  513. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_milestone_ship.py +0 -0
  514. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_network.py +0 -0
  515. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_new_issue_chat.py +0 -0
  516. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_plans.py +0 -0
  517. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_portal.py +0 -0
  518. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_pull_artifact.py +0 -0
  519. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_queue.py +0 -0
  520. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_refine_board.py +0 -0
  521. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_release_preflight.py +0 -0
  522. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_release_propagate.py +0 -0
  523. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_release_window.py +0 -0
  524. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_repo_2220.py +0 -0
  525. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_scorecard.py +0 -0
  526. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_set_review_findings.py +0 -0
  527. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_status_advisory_terminal.py +0 -0
  528. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_status_merge_queue.py +0 -0
  529. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_status_provider.py +0 -0
  530. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_status_review_finalizing.py +0 -0
  531. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_status_test_failed_tag.py +0 -0
  532. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_status_usage_limit.py +0 -0
  533. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_sync_comments_873.py +0 -0
  534. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_test_plan.py +0 -0
  535. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_track.py +0 -0
  536. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_tui_update.py +0 -0
  537. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cli_wait.py +0 -0
  538. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_client_base_install.py +0 -0
  539. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_comments.py +0 -0
  540. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_completion_summary.py +0 -0
  541. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_config.py +0 -0
  542. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_config_acceptance.py +0 -0
  543. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_config_audit.py +0 -0
  544. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_config_pricing.py +0 -0
  545. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_config_snapshot_noncanonical_2208.py +0 -0
  546. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_config_usage_gate.py +0 -0
  547. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_confirm_test.py +0 -0
  548. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_conflict_fix.py +0 -0
  549. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_conflict_fix_semantic.py +0 -0
  550. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_coord_test.py +0 -0
  551. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_coord_test_runner_baseline.py +0 -0
  552. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_coord_test_runner_populated_home.py +0 -0
  553. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_coord_test_runner_routing.py +0 -0
  554. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_coord_test_runner_toolchain.py +0 -0
  555. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_coord_web_sse_restart_live.py +0 -0
  556. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_coordinator_machine.py +0 -0
  557. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_cross_platform_imports.py +0 -0
  558. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dashboard.py +0 -0
  559. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dashboard_fixture.py +0 -0
  560. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dashboard_terminal.py +0 -0
  561. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dashboard_terminal_live.py +0 -0
  562. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_db.py +0 -0
  563. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dead_end.py +0 -0
  564. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_coord_db_backup.py +0 -0
  565. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_coord_web_dist.py +0 -0
  566. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_coord_web_rollback.py +0 -0
  567. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_drive_queue_unit.py +0 -0
  568. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_manifest.py +0 -0
  569. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_notify_unit.py +0 -0
  570. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_units_lane.py +0 -0
  571. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deploy_web_unit.py +0 -0
  572. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_deps.py +0 -0
  573. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dispatch.py +0 -0
  574. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dispatch_target_validation.py +0 -0
  575. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_dist_name.py +0 -0
  576. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_done_housekeeping.py +0 -0
  577. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_drive.py +0 -0
  578. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_drive_queue.py +0 -0
  579. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_drive_state.py +0 -0
  580. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_drive_tmux.py +0 -0
  581. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_epic_up_capability_detection.py +0 -0
  582. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_epic_up_down_symlinked_config_1887.py +0 -0
  583. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_epic_up_image_provenance.py +0 -0
  584. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_errors.py +0 -0
  585. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_events.py +0 -0
  586. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_failure_class.py +0 -0
  587. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_filelock.py +0 -0
  588. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_finalize_interactive_exit_test_verdict.py +0 -0
  589. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_fix_of_force_override.py +0 -0
  590. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_fleet_config_health.py +0 -0
  591. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_fleet_health_probes.py +0 -0
  592. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_fleet_health_snapshot.py +0 -0
  593. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_forge_availability.py +0 -0
  594. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_freshness.py +0 -0
  595. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_gate_a.py +0 -0
  596. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_gate_b.py +0 -0
  597. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_gate_snapshot_staleness.py +0 -0
  598. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_gates.py +0 -0
  599. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_gather_fleet_tmux_sessions.py +0 -0
  600. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_gen_mock_index.py +0 -0
  601. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_generated_types_fixture.py +0 -0
  602. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_github_ops.py +0 -0
  603. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_goal.py +0 -0
  604. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_graph_health.py +0 -0
  605. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_graph_selfheal_absent_2237.py +0 -0
  606. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_handoff.py +0 -0
  607. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_checks.py +0 -0
  608. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_cli.py +0 -0
  609. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_cli_graph.py +0 -0
  610. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_config.py +0 -0
  611. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_context.py +0 -0
  612. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_coord_web_ci_pin.py +0 -0
  613. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_deploy_lane_facts.py +0 -0
  614. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_incident_regression.py +0 -0
  615. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_pypi.py +0 -0
  616. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_registry.py +0 -0
  617. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_timer_active.py +0 -0
  618. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_toolchain.py +0 -0
  619. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_unit_drift.py +0 -0
  620. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_health_unit_enablement.py +0 -0
  621. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_hooks.py +0 -0
  622. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_human_attended_437.py +0 -0
  623. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_init.py +0 -0
  624. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_integration.py +0 -0
  625. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_interactive_briefing_echo.py +0 -0
  626. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_interactive_prefill_state.py +0 -0
  627. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_interactive_session_relaunch.py +0 -0
  628. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_interactive_test_verdict_backstop.py +0 -0
  629. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_interactive_token_attribution.py +0 -0
  630. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_interactive_worktree.py +0 -0
  631. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_issue_store_seam.py +0 -0
  632. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_liveness_auditor.py +0 -0
  633. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_liveness_notify.py +0 -0
  634. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_machine_pause.py +0 -0
  635. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_merge_queue.py +0 -0
  636. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_merge_verify.py +0 -0
  637. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_milestone_chat.py +0 -0
  638. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_milestone_dispatch.py +0 -0
  639. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_milestone_gate.py +0 -0
  640. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_milestone_order.py +0 -0
  641. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_milestone_seam.py +0 -0
  642. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_mock_author.py +0 -0
  643. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_model_tiering.py +0 -0
  644. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_models.py +0 -0
  645. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_models_config_labels.py +0 -0
  646. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_needs_attention.py +0 -0
  647. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_network.py +0 -0
  648. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_new_issue_chat.py +0 -0
  649. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_next_release_tag.py +0 -0
  650. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_node_shim.py +0 -0
  651. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_baseline.py +0 -0
  652. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_cli.py +0 -0
  653. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_collect.py +0 -0
  654. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_config.py +0 -0
  655. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_drive_seam.py +0 -0
  656. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_isolation.py +0 -0
  657. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_predicate.py +0 -0
  658. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_quiet_hours.py +0 -0
  659. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notifier_service.py +0 -0
  660. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notify.py +0 -0
  661. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_notify_drain.py +0 -0
  662. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_openapi.py +0 -0
  663. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_operational_defaults.py +0 -0
  664. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_overlap_fence.py +0 -0
  665. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_overlap_predict.py +0 -0
  666. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_packaged_deploy_units.py +0 -0
  667. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_parentage.py +0 -0
  668. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_pipeline.py +0 -0
  669. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_plan_followup_approve_plan_command.py +0 -0
  670. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_plan_followup_pr_command.py +0 -0
  671. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_plan_followup_review_command.py +0 -0
  672. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_plan_only.py +0 -0
  673. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_plan_parser.py +0 -0
  674. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_platform_paths.py +0 -0
  675. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_portal_bridge.py +0 -0
  676. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_portal_config.py +0 -0
  677. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_portal_store.py +0 -0
  678. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_portal_sync.py +0 -0
  679. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_pr_body_lint.py +0 -0
  680. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_prereqs.py +0 -0
  681. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_production_db_guard.py +0 -0
  682. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_progress.py +0 -0
  683. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_provider_seam.py +0 -0
  684. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_providers.py +0 -0
  685. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_providers_config_labels.py +0 -0
  686. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_providers_pty.py +0 -0
  687. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_quiet_hours.py +0 -0
  688. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_quiet_hours_store_2146.py +0 -0
  689. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reap_merged_sessions.py +0 -0
  690. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reap_stale_interactive_tick.py +0 -0
  691. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reconcile.py +0 -0
  692. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reconcile_branch.py +0 -0
  693. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reconcile_completions.py +0 -0
  694. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reconcile_merges.py +0 -0
  695. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reconcile_no_agent_record.py +0 -0
  696. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reconcile_tick.py +0 -0
  697. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reconcile_usage_limit_done.py +0 -0
  698. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_refine_chat.py +0 -0
  699. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_cordon_2101.py +0 -0
  700. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_cordon_daemon_leads_2176.py +0 -0
  701. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_cordon_deadlock_2240.py +0 -0
  702. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_cordon_stuck_2490.py +0 -0
  703. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_propagate.py +0 -0
  704. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_unified_1242.py +0 -0
  705. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_verify.py +0 -0
  706. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_release_window.py +0 -0
  707. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_remote_auto_prune.py +0 -0
  708. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_repo_edit_2220.py +0 -0
  709. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_repo_graph_fleet_2237.py +0 -0
  710. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_repo_onboard_2220.py +0 -0
  711. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_report_result_push.py +0 -0
  712. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_reports.py +0 -0
  713. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_retry.py +0 -0
  714. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_retry_advisory_1606.py +0 -0
  715. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_retry_type_1636.py +0 -0
  716. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_revalidate.py +0 -0
  717. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review.py +0 -0
  718. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_end_review_without_verdict.py +0 -0
  719. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_parse_failure_diagnostic.py +0 -0
  720. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_reaffirm.py +0 -0
  721. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_state.py +0 -0
  722. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_verdict_backstop.py +0 -0
  723. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_verdict_override_audit.py +0 -0
  724. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_verdict_relay.py +0 -0
  725. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_review_zero_commits.py +0 -0
  726. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_scoped_review_wiring.py +0 -0
  727. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_scorecard.py +0 -0
  728. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_self_health.py +0 -0
  729. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_serve.py +0 -0
  730. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_serve_app_board_trim.py +0 -0
  731. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_session.py +0 -0
  732. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_slice_issue_attribution.py +0 -0
  733. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_smoke.py +0 -0
  734. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_smoke_live_checkout_restore.py +0 -0
  735. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_smoke_workflow.py +0 -0
  736. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_spend_ceiling.py +0 -0
  737. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_spend_ceiling_coordinator.py +0 -0
  738. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_split.py +0 -0
  739. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_split_work.py +0 -0
  740. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_stage_projection.py +0 -0
  741. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_stalled_pipeline.py +0 -0
  742. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_state.py +0 -0
  743. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_state_review_findings_daemon.py +0 -0
  744. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_status_fleet_footer.py +0 -0
  745. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_stop_1567.py +0 -0
  746. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_stuck.py +0 -0
  747. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_terminal_command.py +0 -0
  748. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_test_author.py +0 -0
  749. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_test_chat.py +0 -0
  750. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_test_orchestrator.py +0 -0
  751. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_test_report.py +0 -0
  752. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_test_verdict_parsing.py +0 -0
  753. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_test_verdict_transcript_floor.py +0 -0
  754. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_thin_client_board_audit.py +0 -0
  755. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_thin_client_config_load_1080.py +0 -0
  756. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_thin_client_daemon_routing_906.py +0 -0
  757. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_tmux_host.py +0 -0
  758. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_transcript_floor.py +0 -0
  759. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_usage.py +0 -0
  760. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_usage_limits.py +0 -0
  761. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_usage_rollup.py +0 -0
  762. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_venv_live_install_2121.py +0 -0
  763. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_version_single_source.py +0 -0
  764. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_watch.py +0 -0
  765. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_windows_job_is_a_real_gate_2000.py +0 -0
  766. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_worker_events.py +0 -0
  767. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_worker_image_pin_sync.py +0 -0
  768. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_worker_safety.py +0 -0
  769. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_worker_test_scoping.py +0 -0
  770. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_worktree.py +0 -0
  771. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tests/test_worktree_rmtree_chokepoint.py +0 -0
  772. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/Cargo.lock +0 -0
  773. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/Cargo.toml +0 -0
  774. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/cargo-config-local-quadraui.toml.example +0 -0
  775. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/approved.rs +0 -0
  776. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/audit.rs +0 -0
  777. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/chat.rs +0 -0
  778. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/data.rs +0 -0
  779. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/dialogs.rs +0 -0
  780. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/doc_tabs.rs +0 -0
  781. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/drive.rs +0 -0
  782. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/drive_queue.rs +0 -0
  783. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/escalation.rs +0 -0
  784. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/events.rs +0 -0
  785. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/fixtures.rs +0 -0
  786. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/fleet_health.rs +0 -0
  787. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/fleet_sessions.rs +0 -0
  788. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/fleet_terminals.rs +0 -0
  789. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/format.rs +0 -0
  790. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/milestone_dag.rs +0 -0
  791. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/mod.rs +0 -0
  792. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/msv.rs +0 -0
  793. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/pipeline.rs +0 -0
  794. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/plans.rs +0 -0
  795. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/render.rs +0 -0
  796. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/reports.rs +0 -0
  797. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/sessions.rs +0 -0
  798. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/settings_ui.rs +0 -0
  799. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/sidebar.rs +0 -0
  800. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/terminal.rs +0 -0
  801. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/tests.rs +0 -0
  802. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/types.rs +0 -0
  803. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/app/workspace.rs +0 -0
  804. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/bin/gtk.rs +0 -0
  805. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/commands.rs +0 -0
  806. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/lib.rs +0 -0
  807. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/main.rs +0 -0
  808. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/src/settings.rs +0 -0
  809. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/tests/acceptance.rs +0 -0
  810. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/tests/cli.rs +0 -0
  811. {code_coordinator-0.5.228 → code_coordinator-0.5.230}/tui/tests/fixtures/board_sample.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-coordinator
3
- Version: 0.5.228
3
+ Version: 0.5.230
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.228
3
+ Version: 0.5.230
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
@@ -541,6 +541,7 @@ tests/test_human_attended_437.py
541
541
  tests/test_init.py
542
542
  tests/test_integration.py
543
543
  tests/test_interactive_briefing_echo.py
544
+ tests/test_interactive_pane_log_2541.py
544
545
  tests/test_interactive_prefill_state.py
545
546
  tests/test_interactive_session_relaunch.py
546
547
  tests/test_interactive_test_verdict_backstop.py
@@ -611,6 +611,7 @@
611
611
  "tests/test_init.py",
612
612
  "tests/test_integration.py",
613
613
  "tests/test_interactive_briefing_echo.py",
614
+ "tests/test_interactive_pane_log_2541.py",
614
615
  "tests/test_interactive_prefill_state.py",
615
616
  "tests/test_interactive_session_relaunch.py",
616
617
  "tests/test_interactive_test_verdict_backstop.py",
@@ -1,7 +1,7 @@
1
1
  {
2
- "tag": "0.5.228",
2
+ "tag": "0.5.230",
3
3
  "distance": 0,
4
- "node": "g3b4de74e0e15d89b4795d8a24a95465d2ac0b416",
4
+ "node": "g2e59935577bb8bd17362609676a470181e55ba5b",
5
5
  "dirty": false,
6
6
  "branch": "HEAD",
7
7
  "node_date": "2026-08-22"
@@ -5762,7 +5762,8 @@ class AgentServer:
5762
5762
 
5763
5763
  @staticmethod
5764
5764
  def _tmux_session_alive(assignment_id: str) -> bool:
5765
- """Return True when a ``coord-<assignment_id>`` tmux session is up.
5765
+ """Return True when a ``coord-<assignment_id>`` tmux session is
5766
+ genuinely still in use — alive AND its pane is not dead.
5766
5767
 
5767
5768
  Load-bearing guard for :meth:`clean_worktrees` (#1295): an
5768
5769
  interactive Test/Review/Merge/Work pane keeps its tmux session
@@ -5772,11 +5773,16 @@ class AgentServer:
5772
5773
  is the only reliable "someone is still using this worktree"
5773
5774
  signal.
5774
5775
 
5775
- Uses ``tmux has-session -t coord-<assignment_id>``; exit 0 means
5776
- the session exists. Delegates to
5777
- :func:`coord.interactive.tmux_session_alive` so a single
5778
- implementation handles the subprocess and error-swallowing
5779
- semantics. When ``tmux`` is not installed / not running / the
5776
+ Delegates to :func:`coord.interactive.tmux_session_running` (a bare
5777
+ ``tmux has-session`` alone is NOT enough — #2541 set
5778
+ ``remain-on-exit on`` on every freshly-created coord tmux session so
5779
+ a crashed pane's screen stays inspectable, which means
5780
+ ``has-session`` now stays ``True`` after ANY pane exit, clean
5781
+ success or crash, until a reaper notices and kills it. Without the
5782
+ pane-dead check this guard would keep protecting — and thus never
5783
+ cleaning up — a worktree whose interactive session has already
5784
+ finished, for as long as the now-longer-lived dead session
5785
+ lingers). When ``tmux`` is not installed / not running / the
5780
5786
  subprocess errors, we return ``False`` — "no live session, keep
5781
5787
  sweeping" — rather than raising, so one broken tmux install
5782
5788
  never aborts a fleet sweep across the rest of an agent's
@@ -5788,15 +5794,15 @@ class AgentServer:
5788
5794
  try:
5789
5795
  from coord.interactive import ( # noqa: PLC0415
5790
5796
  tmux_available,
5791
- tmux_session_alive,
5792
5797
  tmux_session_name,
5798
+ tmux_session_running,
5793
5799
  )
5794
5800
  except Exception: # noqa: BLE001 — defensive; module missing → no guard
5795
5801
  return False
5796
5802
  try:
5797
5803
  if not tmux_available():
5798
5804
  return False
5799
- return tmux_session_alive(tmux_session_name(assignment_id))
5805
+ return tmux_session_running(tmux_session_name(assignment_id))
5800
5806
  except Exception: # noqa: BLE001 — never propagate out of the sweep
5801
5807
  return False
5802
5808
 
@@ -1231,11 +1231,41 @@ def build_app(
1231
1231
  async def logs(request: Request) -> Response:
1232
1232
  assignment_id = request.path_params["id"]
1233
1233
  assignment = server.get(assignment_id)
1234
- if assignment is None or assignment.log_path is None:
1235
- return JSONResponse(
1236
- {"error": f"unknown assignment {assignment_id}"}, status_code=404
1237
- )
1238
- log_path = Path(assignment.log_path)
1234
+ status = assignment.status if assignment is not None else "unknown"
1235
+ if assignment is not None and assignment.log_path is not None:
1236
+ log_path = Path(assignment.log_path)
1237
+ else:
1238
+ # #2541: the human-attended ssh+tmux interactive launcher
1239
+ # (`coord assign --interactive ...`) never goes through this
1240
+ # agent's `/assign` — it SSHes in directly from the
1241
+ # coordinator and drives `claude` inside a tmux session, so
1242
+ # `server.get()` has no record of it. Those sessions still
1243
+ # persist a best-effort pane-capture snapshot at the SAME
1244
+ # conventional per-assignment path
1245
+ # (`coord.interactive._persist_interactive_pane_log`) so a
1246
+ # launch failure is diagnosable via `coord log <id>` without a
1247
+ # manual SSH repro. Fall back to that path directly rather
1248
+ # than 404ing just because this agent never tracked the
1249
+ # assignment in memory.
1250
+ # assignment_id is attacker-controllable (raw path param) and,
1251
+ # unlike `assignment.log_path` above, is interpolated directly
1252
+ # into a filesystem path here — reject anything that isn't the
1253
+ # plain `[a-zA-Z0-9_-]+` shape every assignment_id generator in
1254
+ # this codebase actually produces, so a `../` can't escape
1255
+ # `logs/`.
1256
+ if not re.fullmatch(r"[A-Za-z0-9_-]+", assignment_id):
1257
+ return JSONResponse(
1258
+ {"error": f"invalid assignment id {assignment_id!r}"},
1259
+ status_code=400,
1260
+ )
1261
+
1262
+ # `server.log_dir` (not the module-level `DEFAULT_STATE_DIR`
1263
+ # default) so this honours a non-default `state_dir` exactly
1264
+ # like every other lookup in this handler would if the
1265
+ # assignment WERE tracked — production agents never override
1266
+ # it, but this keeps the fallback truthful to what this
1267
+ # specific server instance is actually configured with.
1268
+ log_path = server.log_dir / f"{assignment_id}.log"
1239
1269
  if not log_path.exists():
1240
1270
  return JSONResponse(
1241
1271
  {"error": f"no log file for assignment {assignment_id}"}, status_code=404
@@ -1255,7 +1285,7 @@ def build_app(
1255
1285
  total_size = log_path.stat().st_size
1256
1286
  headers = {
1257
1287
  "X-Coord-Log-Total": str(total_size),
1258
- "X-Coord-Log-Status": assignment.status,
1288
+ "X-Coord-Log-Status": status,
1259
1289
  }
1260
1290
  return PlainTextResponse(body.decode("utf-8", errors="replace"), headers=headers)
1261
1291
 
@@ -35,6 +35,28 @@ cause later agreed with how the episode actually resolved
35
35
  one that abstains, which is why ``unknown`` is counted separately from
36
36
  ``disagreed`` and never folded into it.
37
37
 
38
+ **#2540 fills the column that neither Phase counts: operator effort that never
39
+ touched the queue's own command surface.** ``human_acted`` was, until #2540,
40
+ true only for the narrow set of releases the queue itself can attribute to a
41
+ person — an operator's ``remove``, a Gate-A sign-off. Real recovery routinely
42
+ happens elsewhere entirely: a manual git rebase and force-with-lease push, a
43
+ direct ``coord test``/``coord merge --only``/``coord pr``/``coord fix``
44
+ against the assignment underneath an entry, a ``systemctl``/``coord agent
45
+ update``/``coord diagnose --reset`` on the machine running it. None of that
46
+ is visible to a tick, so none of it was ever counted — a night of real manual
47
+ recovery could read as ``0 needed a human``, which is the exact failure this
48
+ module exists to prevent, just relocated one layer down. This module cannot
49
+ detect that kind of intervention after the fact (recording must not probe live
50
+ state — see above), so :func:`intervention_event` gives an operator a place to
51
+ say so, in real time or shortly after: ``coord drive-queue log-intervention``
52
+ appends a record that :func:`episodes` folds onto whichever episode was open
53
+ for that key, or — if it had already resolved by the time the operator got to
54
+ logging it — the most recently closed one. It flips ``human_acted`` to
55
+ ``True`` the same as an ``operator_resolution_event`` does, and is kept
56
+ separately visible (``intervention_categories``) so the report can still say
57
+ *how* it knows, rather than asserting a single flat "a human acted" with no
58
+ paper trail behind it.
59
+
38
60
  **Recording must never change a decision.** Every public entry point here is
39
61
  best-effort and swallows its own exceptions (:func:`record`), for the same
40
62
  reason :mod:`coord.audit` does: the tick's merge/dispatch/attempt accounting
@@ -95,7 +117,9 @@ __all__ = [
95
117
  "BY_DESIGN_CAUSES",
96
118
  "EVENT_DIAGNOSIS",
97
119
  "EVENT_ENTER",
120
+ "EVENT_INTERVENTION",
98
121
  "EVENT_RESOLVE",
122
+ "INTERVENTION_CATEGORIES",
99
123
  "OUTCOME_BUCKETS",
100
124
  "RESCUE_SOURCES",
101
125
  "STALL_STATES",
@@ -107,6 +131,7 @@ __all__ = [
107
131
  "episode_bucket",
108
132
  "episode_category",
109
133
  "episodes",
134
+ "intervention_event",
110
135
  "is_by_design",
111
136
  "log_location",
112
137
  "merge_only_event",
@@ -133,6 +158,11 @@ EVENT_RESOLVE = "resolve"
133
158
  #: no read-modify-write race, and a later diagnosis that contradicts an earlier
134
159
  #: one stays visible instead of overwriting it.
135
160
  EVENT_DIAGNOSIS = "diagnosis"
161
+ #: #2540. An operator saying, out of band, "I acted on this key" — the
162
+ #: durable record for intervention that never touches the drive-queue command
163
+ #: surface (`remove`/`resume`) and so was invisible to `human_acted` before
164
+ #: this. See `intervention_event` and the module docstring's #2540 section.
165
+ EVENT_INTERVENTION = "intervention"
136
166
 
137
167
  # Rotate at 4 MiB — comfortably more than two weeks at this fleet's rate
138
168
  # (single-digit stalls a night, ~400 bytes a record), and small enough that
@@ -615,6 +645,71 @@ def operator_resolution_event(
615
645
  return record
616
646
 
617
647
 
648
+ #: Documented common buckets for `coord drive-queue log-intervention
649
+ #: --category`. Deliberately NOT a closed enum enforced anywhere — same
650
+ #: reasoning as `episode_category`'s open vocabulary: a kind of intervention
651
+ #: this build has never named must still be recordable as itself, not
652
+ #: coerced into "other" and lost. This tuple exists purely so the CLI help
653
+ #: text and this module agree on the suggested starting set from #2540's own
654
+ #: evidence (a manual git rebase/conflict-resolution/force-push, a direct
655
+ #: `coord test`/`coord merge --only`/`coord pr`/`coord fix` against the
656
+ #: assignment, and infra-level recovery like `systemctl`/`coord agent
657
+ #: update`/`coord diagnose --reset`).
658
+ INTERVENTION_CATEGORIES: tuple[str, ...] = (
659
+ "git-recovery",
660
+ "cli-recheck",
661
+ "infra",
662
+ "other",
663
+ )
664
+
665
+
666
+ def intervention_event(
667
+ *,
668
+ key: str,
669
+ category: str,
670
+ note: str = "",
671
+ host: str = "",
672
+ now: float | None = None,
673
+ ) -> dict[str, Any]:
674
+ """A #2540 record: a human acted on *key* outside the queue's own commands.
675
+
676
+ The other half of #2235's metric that :func:`operator_resolution_event`
677
+ cannot reach. That function fires only from inside a command
678
+ (``remove``) that IS the resolution — a board mutation this process just
679
+ performed. A manual git rebase, a direct ``coord test``/``coord merge
680
+ --only``/``coord pr``/``coord fix``, or a ``systemctl``/``coord agent
681
+ update`` on the host underneath an entry are real operator effort that
682
+ touches none of this process's own write paths, so nothing here can see
683
+ them happen. What it CAN do is give the operator a place to say so —
684
+ this is that place, called from ``coord drive-queue log-intervention``.
685
+
686
+ Deliberately not a ``resolve``: unlike an operator's ``remove``, logging
687
+ an intervention does not by itself mean the stall is over — the entry may
688
+ still be blocked, may have already resolved by the time the operator gets
689
+ around to typing the command, or may resolve later still by an ordinary
690
+ auto mechanism. :func:`episodes` folds this onto whichever episode was
691
+ open for *key* at the time, or, failing that, the most recently closed
692
+ one — never inventing an episode, and never guessing at *why* the entry
693
+ was stalled, the same restraint :func:`operator_resolution_event` already
694
+ keeps.
695
+
696
+ *category* is free text, not validated against
697
+ :data:`INTERVENTION_CATEGORIES` — the same "open vocabulary, never
698
+ coerced" contract :func:`episode_category` documents. An empty string
699
+ normalises to ``"other"`` so the report always has something to show
700
+ rather than a blank category column.
701
+ """
702
+ return {
703
+ "event": EVENT_INTERVENTION,
704
+ "ts": time.time() if now is None else now,
705
+ "key": key,
706
+ "category": str(category or "other"),
707
+ "note": note,
708
+ "host": host,
709
+ "source": "operator",
710
+ }
711
+
712
+
618
713
  # ── #2276 Phase 1: the diagnosis record, and scoring it ──────────────────────
619
714
 
620
715
 
@@ -806,6 +901,60 @@ def read_events(
806
901
  # ── reading (pairing + summary) ──────────────────────────────────────────────
807
902
 
808
903
 
904
+ def _fold_intervention(
905
+ open_by_key: dict[str, dict[str, Any]],
906
+ out: list[dict[str, Any]],
907
+ key: str,
908
+ event: Mapping[str, Any],
909
+ ) -> None:
910
+ """Attach one #2540 ``intervention`` record to the episode it happened
911
+ during — mutating the episode dict in place, exactly like the
912
+ ``EVENT_DIAGNOSIS`` branch of :func:`episodes` does for ``true_cause``.
913
+
914
+ Preferred target is the OPEN episode for *key* — the common case, an
915
+ operator logging what they are doing while the entry is still stalled.
916
+ Failing that, the most recently CLOSED episode for *key* in *out*:
917
+ ``coord drive-queue log-intervention`` very often runs minutes AFTER the
918
+ fix already landed (the operator ran ``coord merge --only``, it worked,
919
+ then they typed the log line), and by then :func:`episodes` has already
920
+ popped that episode out of ``open_by_key``. Searched from the end of
921
+ ``out`` because that list is built in the same time order *events* is
922
+ iterated in, so the last match for *key* is the most recent past episode
923
+ — never an older one a later re-block would make ambiguous.
924
+
925
+ A *key* with no episode at all yet (logged before this host ever recorded
926
+ a stall for it) is dropped, the same convention an orphan ``resolve`` or
927
+ ``diagnosis`` already follows: there is nothing here to attach evidence
928
+ to, and it is better to say so (`coord drive-queue log-intervention`
929
+ warns) than to silently fabricate one.
930
+ """
931
+ episode = open_by_key.get(key)
932
+ if episode is None:
933
+ for candidate in reversed(out):
934
+ if candidate.get("key") == key:
935
+ episode = candidate
936
+ break
937
+ if episode is None:
938
+ return
939
+ category = str(event.get("category") or "other")
940
+ episode.setdefault("interventions", []).append(
941
+ {
942
+ "ts": float(event.get("ts") or 0.0),
943
+ "category": category,
944
+ "note": str(event.get("note") or ""),
945
+ "host": str(event.get("host") or ""),
946
+ }
947
+ )
948
+ categories = episode.setdefault("intervention_categories", [])
949
+ if category not in categories:
950
+ categories.append(category)
951
+ # The whole point: this is the signal `human_acted` was blind to before
952
+ # #2540. Set unconditionally, whether the episode is still open (the
953
+ # eventual `resolve` branch above ORs it back in rather than clobbering
954
+ # it) or already closed (there is no later write to clobber it).
955
+ episode["human_acted"] = True
956
+
957
+
809
958
  def episodes(events: Sequence[Mapping[str, Any]]) -> list[dict[str, Any]]:
810
959
  """Pair ``enter`` records with the ``resolve`` that closed them.
811
960
 
@@ -828,6 +977,16 @@ def episodes(events: Sequence[Mapping[str, Any]]) -> list[dict[str, Any]]:
828
977
  resolution's own account of what happened and the derived one is kept
829
978
  beside it as ``diagnosed_cause``, so ``agreement`` scores two independent
830
979
  claims rather than one claim against itself.
980
+
981
+ An ``intervention`` (#2540) folds onto an episode the same way — see
982
+ :func:`_fold_intervention` — except it targets a CLOSED episode too, not
983
+ only an open one: unlike a diagnosis, an operator very often logs an
984
+ intervention after the fact, once the fix they made by hand has already
985
+ let the entry auto-resolve. It sets ``human_acted`` true and appends to
986
+ ``intervention_categories``/``interventions`` without touching
987
+ ``true_cause`` — what mechanically flipped the state is still whatever
988
+ the resolution said; #2540 only means the record also captures that a
989
+ human was in the loop, in a way the pre-#2540 log could not see at all.
831
990
  """
832
991
  open_by_key: dict[str, dict[str, Any]] = {}
833
992
  out: list[dict[str, Any]] = []
@@ -866,7 +1025,13 @@ def episodes(events: Sequence[Mapping[str, Any]]) -> list[dict[str, Any]]:
866
1025
  "diagnosis_evidence": [],
867
1026
  "diagnosis_contradicts_stated": False,
868
1027
  "agreement": "",
1028
+ # #2540. Populated only by `intervention_event` records
1029
+ # folded on below — a fresh episode has neither.
1030
+ "interventions": [],
1031
+ "intervention_categories": [],
869
1032
  }
1033
+ elif kind == EVENT_INTERVENTION:
1034
+ _fold_intervention(open_by_key, out, key, event)
870
1035
  elif kind == EVENT_DIAGNOSIS:
871
1036
  episode = open_by_key.get(key)
872
1037
  if episode is None:
@@ -897,7 +1062,14 @@ def episodes(events: Sequence[Mapping[str, Any]]) -> list[dict[str, Any]]:
897
1062
  "resolved": True,
898
1063
  "resolution": event.get("resolution", ""),
899
1064
  "true_cause": resolution_cause,
900
- "human_acted": bool(event.get("human_acted")),
1065
+ # #2540: OR in whatever an earlier `intervention_event`
1066
+ # already set. Without the `or`, an ordinary auto
1067
+ # resolution's own `human_acted=False` would blindly
1068
+ # overwrite the `True` a logged intervention just
1069
+ # earned — exactly the undercount this issue is about,
1070
+ # relocated one line down instead of fixed.
1071
+ "human_acted": bool(event.get("human_acted"))
1072
+ or bool(episode.get("human_acted")),
901
1073
  "resolved_at": resolved_at,
902
1074
  "stalled_seconds": max(0.0, resolved_at - episode["entered_at"]),
903
1075
  "source": event.get("source", ""),
@@ -937,11 +1109,27 @@ def summarize(items: Sequence[Mapping[str, Any]]) -> dict[str, Any]:
937
1109
  counts the episodes where the live evidence positively ruled the queue's
938
1110
  stated reason out — the five-of-seven number, finally measured instead of
939
1111
  reconstructed by hand.
1112
+
1113
+ ``human_acted_logged`` (#2540) is the subset of ``human_acted`` this build
1114
+ can actually SHOW ITS WORK for: episodes carrying at least one
1115
+ ``coord drive-queue log-intervention`` record. The rest of ``human_acted``
1116
+ still comes from the pre-#2540 queue-command surface (an operator's
1117
+ ``remove``, a Gate-A sign-off) — real, but with no evidence trail beyond
1118
+ "the resolve record said so". Neither of those two is a claim that
1119
+ *nothing else* happened: a night with ``human_acted_logged == 0`` means
1120
+ no intervention was LOGGED, not that none occurred — this module still
1121
+ cannot see a git rebase or a direct ``coord test`` call that nobody typed
1122
+ the one extra command for. That is the honest limit of what an
1123
+ append-only log fed only by this process's own choke points can claim,
1124
+ and it is why the CLI help for ``log-intervention`` asks operators to run
1125
+ it as a matter of habit rather than treating the count as automatically
1126
+ complete.
940
1127
  """
941
1128
  by_state: dict[str, int] = {}
942
1129
  by_cause: dict[str, int] = {}
943
1130
  seen_pairs: dict[tuple[str, str], int] = {}
944
1131
  human = 0
1132
+ human_logged = 0
945
1133
  auto = 0
946
1134
  still_open = 0
947
1135
  diagnosed = 0
@@ -961,6 +1149,8 @@ def summarize(items: Sequence[Mapping[str, Any]]) -> dict[str, Any]:
961
1149
  still_open += 1
962
1150
  elif item.get("human_acted"):
963
1151
  human += 1
1152
+ if item.get("intervention_categories"):
1153
+ human_logged += 1
964
1154
  else:
965
1155
  auto += 1
966
1156
  cause = episode_category(item)
@@ -986,6 +1176,7 @@ def summarize(items: Sequence[Mapping[str, Any]]) -> dict[str, Any]:
986
1176
  "by_state": by_state,
987
1177
  "by_cause": by_cause,
988
1178
  "human_acted": human,
1179
+ "human_acted_logged": human_logged,
989
1180
  "auto_released": auto,
990
1181
  "open": still_open,
991
1182
  "repeat_causes": repeats,
@@ -141,8 +141,8 @@ def _dispatch_review_of(
141
141
  finalize_interactive_exit,
142
142
  launch_human_attended_interactive,
143
143
  tmux_available as _tmux_avail,
144
- tmux_session_alive as _tmux_alive,
145
144
  tmux_session_name as _tmux_name,
145
+ tmux_session_running as _tmux_alive,
146
146
  )
147
147
 
148
148
  from coord.review import ( # noqa: PLC0415
@@ -648,8 +648,8 @@ def _dispatch_smoke_of(
648
648
  launch_human_attended_interactive,
649
649
  snapshot_live_checkout_for_smoke,
650
650
  tmux_available as _tmux_avail,
651
- tmux_session_alive as _tmux_alive,
652
651
  tmux_session_name as _tmux_name,
652
+ tmux_session_running as _tmux_alive,
653
653
  )
654
654
 
655
655
  from coord.models import Assignment as _AssignmentSm # noqa: PLC0415
@@ -1142,8 +1142,8 @@ def _dispatch_audit_of(
1142
1142
  finalize_interactive_exit,
1143
1143
  launch_human_attended_interactive,
1144
1144
  tmux_available as _tmux_avail,
1145
- tmux_session_alive as _tmux_alive,
1146
1145
  tmux_session_name as _tmux_name,
1146
+ tmux_session_running as _tmux_alive,
1147
1147
  )
1148
1148
  from coord.models import Assignment as _AssignmentAu # noqa: PLC0415
1149
1149
  from coord.state import record_dispatched_assignment as _record_au # noqa: PLC0415
@@ -1486,8 +1486,8 @@ def _dispatch_milestone_chat_of(
1486
1486
  finalize_interactive_exit,
1487
1487
  launch_human_attended_interactive,
1488
1488
  tmux_available as _tmux_avail,
1489
- tmux_session_alive as _tmux_alive,
1490
1489
  tmux_session_name as _tmux_name,
1490
+ tmux_session_running as _tmux_alive,
1491
1491
  )
1492
1492
  from coord.milestone_chat import resolve_milestone_chat_briefing # noqa: PLC0415
1493
1493
  from coord.board_service import read_board as _read_board_mc # noqa: PLC0415
@@ -1682,8 +1682,8 @@ def _run_troubleshoot_or_chat(
1682
1682
  finalize_interactive_exit,
1683
1683
  launch_human_attended_interactive,
1684
1684
  tmux_available as _tmux_avail,
1685
- tmux_session_alive as _tmux_alive,
1686
1685
  tmux_session_name as _tmux_name,
1686
+ tmux_session_running as _tmux_alive,
1687
1687
  )
1688
1688
 
1689
1689
  from coord.board_service import read_board as _read_board_ts # noqa: PLC0415
@@ -2044,8 +2044,8 @@ def _dispatch_fix_of(
2044
2044
  launch_human_attended_interactive,
2045
2045
  remote_worktree_exists as _remote_wt_exists,
2046
2046
  tmux_available as _tmux_avail,
2047
- tmux_session_alive as _tmux_alive,
2048
2047
  tmux_session_name as _tmux_name,
2048
+ tmux_session_running as _tmux_alive,
2049
2049
  )
2050
2050
 
2051
2051
  from coord.auto_loop import ( # noqa: PLC0415
@@ -2731,8 +2731,8 @@ def _dispatch_rework_of(
2731
2731
  launch_human_attended_interactive,
2732
2732
  remote_worktree_exists as _remote_wt_exists,
2733
2733
  tmux_available as _tmux_avail,
2734
- tmux_session_alive as _tmux_alive,
2735
2734
  tmux_session_name as _tmux_name,
2735
+ tmux_session_running as _tmux_alive,
2736
2736
  )
2737
2737
 
2738
2738
  from coord.agent import ( # noqa: PLC0415
@@ -3294,8 +3294,8 @@ def _dispatch_merge_of(
3294
3294
  launch_human_attended_interactive,
3295
3295
  remote_worktree_exists as _remote_wt_exists,
3296
3296
  tmux_available as _tmux_avail,
3297
- tmux_session_alive as _tmux_alive,
3298
3297
  tmux_session_name as _tmux_name,
3298
+ tmux_session_running as _tmux_alive,
3299
3299
  )
3300
3300
 
3301
3301
  from coord.agent import ( # noqa: PLC0415
@@ -3932,8 +3932,8 @@ def _dispatch_interactive_work(
3932
3932
  launch_human_attended_interactive,
3933
3933
  remote_worktree_exists as _remote_wt_exists,
3934
3934
  tmux_available as _tmux_avail,
3935
- tmux_session_alive as _tmux_alive,
3936
3935
  tmux_session_name as _tmux_name,
3936
+ tmux_session_running as _tmux_alive,
3937
3937
  )
3938
3938
 
3939
3939
  if _is_local: