@khoavu882/doflow 2.0.0-beta.5 → 2.0.0

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 (471) hide show
  1. package/README.md +12 -11
  2. package/bin/doflow.js +21 -11
  3. package/core/.antigravity-plugin/plugin.json +1 -2
  4. package/core/.claude-plugin/plugin.json +1 -1
  5. package/core/.codex-plugin/plugin.json +1 -1
  6. package/core/.plugin/plugin.json +1 -1
  7. package/core/harnesses/claude/hooks/lib.sh +43 -24
  8. package/core/harnesses/claude/hooks/permission-audit.sh +3 -0
  9. package/core/harnesses/claude/hooks/post-compact.sh +35 -32
  10. package/core/harnesses/claude/hooks/post-edit-lint.sh +2 -0
  11. package/core/harnesses/claude/hooks/post-shell-observe.sh +48 -0
  12. package/core/harnesses/claude/hooks/post-tool-failure.sh +3 -0
  13. package/core/harnesses/claude/hooks/pre-compact.sh +23 -27
  14. package/core/harnesses/claude/hooks/session-end.sh +23 -10
  15. package/core/harnesses/claude/hooks/skill-config-audit.sh +3 -0
  16. package/core/harnesses/claude/settings/settings.json +18 -0
  17. package/core/harnesses/claude/statusline/doflow-statusline.sh +1 -0
  18. package/core/harnesses/codex/agents/core-implementer.toml +1 -0
  19. package/core/harnesses/codex/agents/delivery-lead.toml +10 -0
  20. package/core/harnesses/codex/agents/quality-guardian.toml +1 -1
  21. package/core/harnesses/codex/agents/research-writer.toml +1 -1
  22. package/core/harnesses/codex/agents/reviewer.toml +10 -0
  23. package/core/harnesses/codex/agents/spec-analyst.toml +1 -1
  24. package/core/harnesses/codex/agents/system-architect.toml +1 -1
  25. package/core/harnesses/codex/hooks/lib.sh +44 -25
  26. package/core/harnesses/codex/hooks/post-edit-lint.impl.sh +3 -1
  27. package/core/harnesses/codex/hooks/pre-compact.impl.sh +29 -26
  28. package/core/harnesses/codex/hooks/session-end.impl.sh +23 -10
  29. package/core/harnesses/codex/hooks/subagent-audit.sh +1 -0
  30. package/core/harnesses/copilot/hooks/doflow-lib.sh +93 -0
  31. package/core/harnesses/copilot/hooks/doflow-mcp-tool-guard.sh +9 -0
  32. package/core/harnesses/copilot/hooks/doflow-pre-bash-guard.sh +9 -0
  33. package/core/harnesses/copilot/hooks/doflow-pre-implement-gate.sh +9 -0
  34. package/core/harnesses/copilot/hooks/doflow-session-start.sh +9 -0
  35. package/core/harnesses/copilot/hooks/doflow-stop-check.sh +9 -0
  36. package/core/harnesses/copilot/hooks/doflow-subagent-start.sh +9 -0
  37. package/core/harnesses/copilot/hooks/doflow-subagent-stop.sh +9 -0
  38. package/core/harnesses/copilot/hooks/doflow.json +57 -0
  39. package/core/harnesses/kiro/agents/doflow.json +1 -1
  40. package/core/harnesses/kiro/hooks/lib.sh +26 -6
  41. package/core/harnesses/kiro/hooks/mcp-tool-guard.sh +1 -0
  42. package/core/harnesses/kiro/hooks/pre-bash-guard.sh +1 -0
  43. package/core/harnesses/kiro/hooks/pre-implement-gate.sh +1 -0
  44. package/core/harnesses/kiro/hooks/session-start.sh +1 -0
  45. package/core/harnesses/kiro/hooks/stop-check.sh +1 -0
  46. package/core/harnesses/pi/extensions/doflow-guard.js +8 -0
  47. package/core/harnesses/shared/hooks/ENVELOPE_MIGRATION.md +0 -1
  48. package/core/harnesses/shared/hooks/bridge/bridge.sh +102 -9
  49. package/core/harnesses/shared/hooks/bridge/envelope.jq +87 -18
  50. package/core/harnesses/shared/hooks/bridge/observe-model.sh +75 -0
  51. package/core/harnesses/shared/hooks/bridge/respond.sh +10 -2
  52. package/core/harnesses/shared/hooks/policies/blocked-patterns.conf +28 -14
  53. package/core/harnesses/shared/hooks/policies/capture-failure.sh +48 -15
  54. package/core/harnesses/shared/hooks/policies/compact-text.sh +46 -0
  55. package/core/harnesses/shared/hooks/policies/contract.sh +3 -0
  56. package/core/harnesses/shared/hooks/policies/deny-json.sh +2 -11
  57. package/core/harnesses/shared/hooks/policies/emission-rules.sh +37 -0
  58. package/core/harnesses/shared/hooks/policies/emission.jq +209 -0
  59. package/core/harnesses/shared/hooks/policies/emission.sh +383 -0
  60. package/core/harnesses/shared/hooks/policies/identity.sh +177 -0
  61. package/core/harnesses/shared/hooks/policies/lib.sh +63 -40
  62. package/core/harnesses/shared/hooks/policies/mcp-tool-guard.sh +3 -2
  63. package/core/harnesses/shared/hooks/policies/pre-bash-guard.sh +213 -12
  64. package/core/harnesses/shared/hooks/policies/pre-implementation-gate.sh +114 -38
  65. package/core/harnesses/shared/hooks/policies/session-context.sh +30 -1
  66. package/core/harnesses/shared/hooks/policies/stop-check.sh +20 -9
  67. package/core/harnesses/shared/hooks/policies/subagent-audit.sh +5 -2
  68. package/core/harnesses/shared/hooks/policies/summary-store.sh +347 -0
  69. package/core/harnesses/shared/hooks/policies/user-prompt-submit.sh +60 -155
  70. package/core/harnesses/shared/hooks/stream-hook-runner.js +47 -8
  71. package/core/harnesses/shared/locator/doflow-run +2 -3
  72. package/core/registry/advice.json +3 -3
  73. package/core/registry/assets.json +55 -82
  74. package/core/registry/capabilities.json +12 -0
  75. package/core/registry/contracts.json +58 -31
  76. package/core/registry/contribution-points.json +32 -0
  77. package/core/registry/gates.json +32 -0
  78. package/core/registry/guidance-caps.json +40 -0
  79. package/core/registry/harnesses.json +1442 -363
  80. package/core/registry/lifecycle.json +485 -304
  81. package/core/registry/mcp.json +5 -1
  82. package/core/registry/models.json +7 -1
  83. package/core/registry/package-templates/README.md +19 -0
  84. package/core/registry/package-templates/agent/files/agent.md +9 -0
  85. package/core/registry/package-templates/agent/template.json +4 -0
  86. package/core/registry/package-templates/capability-provider/files/provider.json +9 -0
  87. package/core/registry/package-templates/capability-provider/template.json +11 -0
  88. package/core/registry/package-templates/debate-preset/files/preset.json +26 -0
  89. package/core/registry/package-templates/debate-preset/template.json +4 -0
  90. package/core/registry/package-templates/review-preset/files/preset.json +30 -0
  91. package/core/registry/package-templates/review-preset/template.json +4 -0
  92. package/core/registry/package-templates/skill/files/SKILL.md +8 -0
  93. package/core/registry/package-templates/skill/template.json +4 -0
  94. package/core/registry/package-templates/worker/files/worker.json +92 -0
  95. package/core/registry/package-templates/worker/template.json +11 -0
  96. package/core/registry/packages/doflow/doflow-package.json +15 -0
  97. package/core/registry/packages/doflow/presets/debate-3.json +26 -0
  98. package/core/registry/protocols.json +61 -0
  99. package/core/registry/routes.json +17 -0
  100. package/core/registry/rules.json +431 -0
  101. package/core/registry/settings.json +276 -0
  102. package/core/registry/storage.json +679 -31
  103. package/core/registry/telemetry.json +236 -0
  104. package/core/registry/transcripts.json +142 -0
  105. package/core/registry/verification.json +76 -1
  106. package/core/registry/workflows.json +55 -0
  107. package/core/shared/agent-specs/core-implementer.md +3 -0
  108. package/core/shared/agent-specs/delivery-lead.md +68 -0
  109. package/core/shared/agent-specs/quality-guardian.md +5 -1
  110. package/core/shared/agent-specs/research-writer.md +10 -3
  111. package/core/shared/agent-specs/reviewer.md +53 -0
  112. package/core/shared/agent-specs/spec-analyst.md +5 -6
  113. package/core/shared/agent-specs/system-architect.md +5 -1
  114. package/core/shared/guidance/DOFLOW_CORE.md +1 -5
  115. package/core/shared/guidance/modes/MODE_DeepResearch.md +1 -1
  116. package/core/shared/guidance/modes/MODE_Orchestration.md +4 -3
  117. package/core/shared/guidance/modes/MODE_Task_Management.md +14 -14
  118. package/core/shared/guidance/pointers/codex.md +1 -4
  119. package/core/shared/guidance/references/ARTIFACT_FORMAT.md +30 -16
  120. package/core/shared/guidance/references/ARTIFACT_VOICE.md +3 -2
  121. package/core/shared/guidance/references/CONSTITUTION_BASE.md +17 -15
  122. package/core/shared/guidance/references/DIAGRAM_GUIDE.md +1 -1
  123. package/core/shared/guidance/references/DOFLOW_CHAIN.md +17 -19
  124. package/core/shared/guidance/references/EVIDENCE_LEDGER.md +7 -8
  125. package/core/shared/guidance/references/MODEL_SELECTION.md +5 -3
  126. package/core/shared/guidance/references/ORCHESTRATION.md +1 -2
  127. package/core/shared/guidance/rules/RULES.md +45 -0
  128. package/core/shared/scripts/doflow/bash/do-args.sh +37 -0
  129. package/core/shared/scripts/doflow/bash/do-exec-paths.sh +4 -0
  130. package/core/shared/scripts/doflow/bash/do-git-state.sh +15 -4
  131. package/core/shared/scripts/doflow/bash/do-parallel-check.sh +4 -0
  132. package/core/shared/scripts/doflow/bash/do-paths.sh +40 -2
  133. package/core/shared/scripts/doflow/bash/do-prereqs.sh +2 -1
  134. package/core/shared/scripts/doflow/bash/do-review-package.sh +4 -0
  135. package/core/shared/scripts/doflow/bash/do-task-brief.sh +58 -16
  136. package/core/shared/scripts/doflow/bash/render-audit.sh +26 -2
  137. package/core/shared/scripts/doflow/bash/render-diagrams.sh +1 -0
  138. package/core/shared/scripts/doflow/bash/render-puml.sh +2 -1
  139. package/core/shared/scripts/doflow/bash/validate-artifacts.sh +48 -4
  140. package/core/shared/scripts/doflow/bin/doflow-run +149 -34
  141. package/core/shared/skills/do/SKILL.md +12 -10
  142. package/core/shared/skills/do/references/advice_calls.md +26 -0
  143. package/core/shared/skills/do/references/pm_routing.md +1 -2
  144. package/core/shared/skills/do/references/program_mode.md +31 -0
  145. package/core/shared/skills/do-brainstorm/SKILL.md +20 -74
  146. package/core/shared/skills/do-brainstorm/references/handoff_branches.md +35 -0
  147. package/core/shared/skills/do-brainstorm/references/intent_seed.md +21 -0
  148. package/core/shared/skills/do-brainstorm/references/round_log.md +17 -0
  149. package/core/shared/skills/do-code-review/SKILL.md +41 -144
  150. package/core/shared/skills/do-code-review/content-types/markdown.md +24 -2
  151. package/core/shared/skills/do-code-review/references/tools.md +90 -0
  152. package/core/shared/skills/do-code-review/scripts/doc_quality_checker.py +549 -7
  153. package/core/shared/skills/do-design/SKILL.md +18 -17
  154. package/core/shared/skills/do-diagnose/SKILL.md +14 -4
  155. package/core/shared/skills/do-document/SKILL.md +11 -1
  156. package/core/shared/skills/do-document/references/deep_research.md +1 -2
  157. package/core/shared/skills/do-document/references/embedded-research.md +18 -6
  158. package/core/shared/skills/do-document/references/implementation-flow.md +5 -6
  159. package/core/shared/skills/do-execute-plan/SKILL.md +15 -58
  160. package/core/shared/skills/do-execute-plan/references/handoff_record.md +7 -2
  161. package/core/shared/skills/do-execute-plan/references/parallel_dispatch.md +13 -0
  162. package/core/shared/skills/do-execute-plan/references/readiness_gate.md +26 -1
  163. package/core/shared/skills/do-execute-plan/references/run_position.md +13 -1
  164. package/core/shared/skills/do-execute-plan/references/scaffold.md +17 -9
  165. package/core/shared/skills/do-execute-plan/references/state_checkpoint.md +11 -0
  166. package/core/shared/skills/do-execute-plan/references/task_attempts.md +78 -24
  167. package/core/shared/skills/do-flow/SKILL.md +8 -9
  168. package/core/shared/skills/do-flow/references/task_classes.md +2 -2
  169. package/core/shared/skills/do-git/SKILL.md +4 -0
  170. package/core/shared/skills/do-implement/SKILL.md +4 -7
  171. package/core/shared/skills/do-plan/SKILL.md +26 -15
  172. package/core/shared/skills/do-test/SKILL.md +7 -4
  173. package/core/shared/templates/doflow/constitution-template.md +9 -3
  174. package/core/shared/templates/doflow/data-model-template.md +1 -1
  175. package/core/shared/templates/doflow/design-template.md +113 -16
  176. package/core/shared/templates/doflow/plan-template.md +11 -10
  177. package/core/shared/templates/doflow/question-log-template.md +14 -2
  178. package/core/shared/templates/doflow/requirement-template.md +1 -1
  179. package/core/worker-evidence/antigravity/checks.json +14 -0
  180. package/core/worker-evidence/codex/2026-10-18-cli-check.json +107 -0
  181. package/core/worker-evidence/codex/2026-10-18-live-run-edit.json +73 -0
  182. package/core/worker-evidence/codex/2026-10-18-live-run-read-only.json +62 -0
  183. package/core/worker-evidence/codex/2026-10-24-cli-check.json +126 -0
  184. package/core/worker-evidence/codex/checks.json +38 -0
  185. package/package.json +10 -6
  186. package/src/adapters/antigravity/index.js +143 -66
  187. package/src/adapters/claude/index.js +24 -4
  188. package/src/adapters/codex/agents.js +25 -15
  189. package/src/adapters/codex/index.js +48 -13
  190. package/src/adapters/codex/native-projection.js +6 -2
  191. package/src/adapters/copilot/index.js +58 -23
  192. package/src/adapters/copy-tree.js +290 -44
  193. package/src/adapters/guidance-manifest.js +71 -0
  194. package/src/adapters/guidance-pointer.js +19 -0
  195. package/src/adapters/hook-commands.js +6 -10
  196. package/src/adapters/index.js +1 -0
  197. package/src/adapters/kiro/index.js +23 -12
  198. package/src/adapters/opencode/index.js +8 -8
  199. package/src/adapters/pi/hooks.js +2 -1
  200. package/src/adapters/pi/index.js +14 -7
  201. package/src/adapters/resolve-source.js +26 -2
  202. package/src/cli/commands/install.js +2 -1
  203. package/src/cli/commands/reconcile.js +53 -9
  204. package/src/cli/commands/remove.js +2 -2
  205. package/src/cli/commands/rollback.js +6 -3
  206. package/src/cli/commands/self-update.js +18 -9
  207. package/src/cli/commands/status.js +21 -2
  208. package/src/cli/commands/ui.js +99 -0
  209. package/src/cli/commands/update.js +2 -1
  210. package/src/cli/index.js +322 -29
  211. package/src/cli/runtime-commands.js +209 -57
  212. package/src/cli/shared.js +0 -2
  213. package/src/helper/git.js +1 -1
  214. package/src/helper/guardrails.js +1 -1
  215. package/src/helper/marker-merge.js +31 -13
  216. package/src/helper/package-ids.js +37 -0
  217. package/src/helper/semver.js +94 -0
  218. package/src/install/backup.js +105 -15
  219. package/src/install/context.js +1 -1
  220. package/src/install/targets.js +31 -16
  221. package/src/lifecycle/coverage.js +20 -3
  222. package/src/lifecycle/hook-tier.js +160 -0
  223. package/src/lifecycle/index.js +412 -78
  224. package/src/lifecycle/retired-harnesses.js +318 -0
  225. package/src/lifecycle/view.js +35 -15
  226. package/src/registry/index.js +551 -26
  227. package/src/registry/worker-ids.js +45 -0
  228. package/src/release/build-package.js +0 -3
  229. package/src/release/docs-blocks.js +492 -0
  230. package/src/release/preflight.js +425 -0
  231. package/src/release/rehearse.js +401 -0
  232. package/src/release/release-workflow.js +733 -0
  233. package/src/release/sync-plugin-versions.js +43 -7
  234. package/src/runtime/advice/bench-gate.js +25 -0
  235. package/src/runtime/advice/cli.js +59 -16
  236. package/src/runtime/advice/client.js +32 -9
  237. package/src/runtime/advice/config.js +98 -133
  238. package/src/runtime/advice/doctor.js +1 -1
  239. package/src/runtime/advice/elevation.js +97 -0
  240. package/src/runtime/advice/endpoint-guard.js +9 -3
  241. package/src/runtime/advice/mode.js +37 -0
  242. package/src/runtime/advice/record.js +18 -5
  243. package/src/runtime/advice/registry.js +4 -1
  244. package/src/runtime/advice/shadow-config.js +229 -0
  245. package/src/runtime/advice/shadow-dispatcher.js +276 -0
  246. package/src/runtime/brief-rules.js +81 -0
  247. package/src/runtime/brief-tools.js +111 -34
  248. package/src/runtime/candidate.js +20 -11
  249. package/src/runtime/capabilities/executor.js +450 -0
  250. package/src/runtime/capabilities/loopback.js +41 -0
  251. package/src/runtime/capabilities/sanitizer.js +88 -0
  252. package/src/runtime/capability-router.js +135 -3
  253. package/src/runtime/checkouts.js +73 -11
  254. package/src/runtime/claims.js +13 -7
  255. package/src/runtime/cli.js +196 -19
  256. package/src/runtime/config-home.js +42 -0
  257. package/src/runtime/context/arbitrate.js +767 -0
  258. package/src/runtime/context/delivery-store.js +4 -6
  259. package/src/runtime/context/emission-rules.js +118 -0
  260. package/src/runtime/context/identity.js +227 -0
  261. package/src/runtime/context/primary-command.js +117 -0
  262. package/src/runtime/context/primary.js +344 -0
  263. package/src/runtime/context/summary-store.js +655 -0
  264. package/src/runtime/context-pack.js +154 -78
  265. package/src/runtime/decision-register.js +13 -4
  266. package/src/runtime/dispatch/admission.js +392 -0
  267. package/src/runtime/dispatch/attempt-end.js +274 -0
  268. package/src/runtime/dispatch/command.js +628 -0
  269. package/src/runtime/dispatch/controls.js +904 -0
  270. package/src/runtime/dispatch/envelope.js +276 -0
  271. package/src/runtime/dispatch/grants.js +310 -0
  272. package/src/runtime/dispatch/integrate.js +617 -0
  273. package/src/runtime/dispatch/loop.js +1835 -0
  274. package/src/runtime/dispatch/store.js +352 -0
  275. package/src/runtime/dispatch/verify-run.js +201 -0
  276. package/src/runtime/evidence-ledger.js +34 -7
  277. package/src/runtime/failure/capture.js +3 -1
  278. package/src/runtime/failure/cli.js +25 -9
  279. package/src/runtime/failure/home.js +57 -30
  280. package/src/runtime/failure/store.js +7 -2
  281. package/src/runtime/feature-pointer.js +174 -0
  282. package/src/runtime/feature-resolve.js +13 -2
  283. package/src/runtime/fleet/command.js +77 -0
  284. package/src/runtime/fleet/projects.js +178 -0
  285. package/src/runtime/fleet/tree.js +383 -0
  286. package/src/runtime/freshness.js +33 -3
  287. package/src/runtime/git-memo.js +46 -0
  288. package/src/runtime/guidance/ablation.js +427 -0
  289. package/src/runtime/health.js +565 -17
  290. package/src/runtime/history-compactor.js +13 -3
  291. package/src/runtime/implementation-gate.js +277 -22
  292. package/src/runtime/inventory/coverage.js +1 -1
  293. package/src/runtime/inventory/index.js +1 -1
  294. package/src/runtime/inventory/precedence.js +2 -2
  295. package/src/runtime/inventory/siblings.js +6 -4
  296. package/src/runtime/knowledge/code-corpus.js +277 -0
  297. package/src/runtime/knowledge/code-lexical.js +130 -0
  298. package/src/runtime/knowledge/code-retrieval.js +307 -0
  299. package/src/runtime/knowledge/code-validation.js +106 -0
  300. package/src/runtime/knowledge/gp3-gate.js +74 -0
  301. package/src/runtime/knowledge/graph-adapter.js +288 -0
  302. package/src/runtime/knowledge/graph-fallback.js +394 -0
  303. package/src/runtime/knowledge/hybrid.js +136 -8
  304. package/src/runtime/knowledge/retrieval.js +34 -1
  305. package/src/runtime/knowledge/rtk-compress.js +77 -0
  306. package/src/runtime/knowledge/semble-bridge.py +106 -0
  307. package/src/runtime/knowledge/semble-lifecycle.js +114 -0
  308. package/src/runtime/knowledge/semble-provider.js +365 -0
  309. package/src/runtime/lifecycle/cli.js +16 -6
  310. package/src/runtime/lifecycle/event-store.js +8 -6
  311. package/src/runtime/lifecycle/followup.js +6 -1
  312. package/src/runtime/lifecycle/overview.js +24 -1
  313. package/src/runtime/lifecycle/report-store.js +8 -10
  314. package/src/runtime/lifecycle/retention.js +95 -31
  315. package/src/runtime/lifecycle/root.js +9 -1
  316. package/src/runtime/lifecycle/status.js +34 -17
  317. package/src/runtime/lifecycle/store-upkeep.js +56 -7
  318. package/src/runtime/mask.js +134 -7
  319. package/src/runtime/mcp-consultations.js +40 -6
  320. package/src/runtime/model-router.js +79 -7
  321. package/src/runtime/models/catalogue.js +191 -0
  322. package/src/runtime/models/command.js +153 -0
  323. package/src/runtime/off-words.js +12 -0
  324. package/src/runtime/outcome.js +2 -2
  325. package/src/runtime/packages/command.js +1009 -0
  326. package/src/runtime/packages/contributions.js +116 -0
  327. package/src/runtime/packages/digest.js +132 -0
  328. package/src/runtime/packages/fetch.js +182 -0
  329. package/src/runtime/packages/grants.js +192 -0
  330. package/src/runtime/packages/index-file.js +134 -0
  331. package/src/runtime/packages/instruction.js +90 -0
  332. package/src/runtime/packages/manifest.js +331 -0
  333. package/src/runtime/packages/points.js +477 -0
  334. package/src/runtime/packages/programs.js +216 -0
  335. package/src/runtime/packages/scaffold.js +277 -0
  336. package/src/runtime/packages/source.js +90 -0
  337. package/src/runtime/packages/state.js +164 -0
  338. package/src/runtime/packages/store.js +449 -0
  339. package/src/runtime/packages/tar.js +106 -0
  340. package/src/runtime/packages/view.js +406 -0
  341. package/src/runtime/plan-check.js +59 -0
  342. package/src/runtime/plan-content.js +324 -0
  343. package/src/runtime/policy-init.js +118 -0
  344. package/src/runtime/profiles/doctor.js +96 -0
  345. package/src/runtime/profiles/resolve.js +244 -0
  346. package/src/runtime/profiles/rollback.js +254 -0
  347. package/src/runtime/profiles/sampler.js +41 -0
  348. package/src/runtime/readiness-record.js +16 -11
  349. package/src/runtime/readiness.js +46 -5
  350. package/src/runtime/research-request.js +50 -25
  351. package/src/runtime/retrieval-plan.js +10 -30
  352. package/src/runtime/retrieval-record.js +75 -5
  353. package/src/runtime/review/command.js +246 -0
  354. package/src/runtime/review/dominance.js +68 -0
  355. package/src/runtime/review/findings.js +434 -0
  356. package/src/runtime/review/identity.js +255 -0
  357. package/src/runtime/review/protocol-command.js +109 -0
  358. package/src/runtime/review/protocols.js +405 -0
  359. package/src/runtime/review/resolve-protocol.js +302 -0
  360. package/src/runtime/review/start.js +530 -0
  361. package/src/runtime/roadmap/facts.js +479 -0
  362. package/src/runtime/roadmap/gates.js +270 -0
  363. package/src/runtime/roadmap/loop.js +1636 -0
  364. package/src/runtime/roadmap/merge.js +381 -0
  365. package/src/runtime/roadmap/rows.js +1113 -0
  366. package/src/runtime/roadmap/seed.js +951 -0
  367. package/src/runtime/rules-report.js +336 -0
  368. package/src/runtime/scaffold/artifacts.js +60 -9
  369. package/src/runtime/scaffold/generate.js +21 -9
  370. package/src/runtime/settings/autopilot.js +106 -0
  371. package/src/runtime/settings/cli.js +280 -0
  372. package/src/runtime/settings/config-write.js +314 -0
  373. package/src/runtime/settings/files.js +271 -0
  374. package/src/runtime/settings/legacy.js +154 -0
  375. package/src/runtime/settings/lexical.js +56 -0
  376. package/src/runtime/settings/prepared-run.js +269 -0
  377. package/src/runtime/settings/project-layers.js +118 -0
  378. package/src/runtime/settings/refs.js +288 -0
  379. package/src/runtime/settings/registry.js +553 -0
  380. package/src/runtime/settings/resolve.js +713 -0
  381. package/src/runtime/settings/shared.js +37 -0
  382. package/src/runtime/settings/worker-billing.js +107 -0
  383. package/src/runtime/settings/write.js +269 -0
  384. package/src/runtime/slot-command.js +78 -0
  385. package/src/runtime/slots.js +671 -0
  386. package/src/runtime/source-version.js +1 -0
  387. package/src/runtime/state-root.js +217 -0
  388. package/src/runtime/storage/cli.js +12 -5
  389. package/src/runtime/storage/engine.js +9 -2
  390. package/src/runtime/storage/registry.js +14 -1
  391. package/src/runtime/storage/roots.js +66 -16
  392. package/src/runtime/storage/rules.js +82 -10
  393. package/src/runtime/storage/upkeep.js +10 -2
  394. package/src/runtime/storage/work-status.js +245 -26
  395. package/src/runtime/task-attempts.js +589 -69
  396. package/src/runtime/task-classifier.js +47 -11
  397. package/src/runtime/task-graph.js +373 -0
  398. package/src/runtime/task-run.js +778 -0
  399. package/src/runtime/task-scope.js +176 -55
  400. package/src/runtime/task-sources.js +147 -0
  401. package/src/runtime/task-state.js +374 -64
  402. package/src/runtime/team/admission.js +301 -0
  403. package/src/runtime/team/envelope.js +324 -0
  404. package/src/runtime/team/review-guard.js +156 -0
  405. package/src/runtime/trace/analyze.js +427 -0
  406. package/src/runtime/trace/baseline.js +770 -0
  407. package/src/runtime/trace/ledger.js +63 -140
  408. package/src/runtime/trace/otlp-export.js +568 -0
  409. package/src/runtime/trace/otlp-map.js +481 -0
  410. package/src/runtime/trace/spans.js +745 -0
  411. package/src/runtime/trace/telemetry.js +225 -0
  412. package/src/runtime/trace/views.js +1 -0
  413. package/src/runtime/transcripts/command.js +98 -0
  414. package/src/runtime/transcripts/cursor.js +326 -0
  415. package/src/runtime/transcripts/read.js +126 -0
  416. package/src/runtime/transcripts/readers/claude-jsonl.js +74 -0
  417. package/src/runtime/transcripts/readers/codex-rollout.js +70 -0
  418. package/src/runtime/transcripts/readers/copilot-events.js +90 -0
  419. package/src/runtime/transcripts/readers/kiro-jsonl.js +77 -0
  420. package/src/runtime/transcripts/readers/pi-jsonl.js +59 -0
  421. package/src/runtime/transcripts/registry.js +161 -0
  422. package/src/runtime/transcripts/stats.js +161 -0
  423. package/src/runtime/verification/check-key.js +628 -0
  424. package/src/runtime/verification/contract-runner.js +546 -11
  425. package/src/runtime/verification/engine.js +499 -9
  426. package/src/runtime/verification/impact.js +617 -0
  427. package/src/runtime/verification/inflight.js +205 -0
  428. package/src/runtime/verification/registry.js +176 -0
  429. package/src/runtime/verification/reuse.js +184 -0
  430. package/src/runtime/verification/telemetry-emit.js +254 -0
  431. package/src/runtime/verification/test-selection.js +67 -7
  432. package/src/runtime/worker/active.js +90 -0
  433. package/src/runtime/worker/cancel.js +222 -0
  434. package/src/runtime/worker/catalogue.js +122 -0
  435. package/src/runtime/worker/command.js +677 -0
  436. package/src/runtime/worker/evidence.js +288 -0
  437. package/src/runtime/worker/launch.js +288 -0
  438. package/src/runtime/worker/models.js +137 -0
  439. package/src/runtime/worker/parsers.js +218 -0
  440. package/src/runtime/worker/probes/index.js +706 -0
  441. package/src/runtime/worker/process-tree.js +415 -0
  442. package/src/runtime/worker/quota.js +43 -0
  443. package/src/runtime/worker/readiness.js +713 -0
  444. package/src/runtime/worker/run-store.js +166 -0
  445. package/src/runtime/worker/supervisor.js +541 -0
  446. package/src/runtime/worker/worktree-check.js +252 -0
  447. package/src/runtime/workflow-engine.js +5 -1
  448. package/src/runtime/workflow-orchestrator.js +578 -63
  449. package/src/runtime/worktree.js +149 -22
  450. package/src/state/index.js +1 -1
  451. package/src/state/lockfile.js +64 -10
  452. package/src/state/run-lock.js +1 -1
  453. package/types/node-commonjs.d.ts +106 -7
  454. package/core/harnesses/gemini/hooks/hooks.json +0 -77
  455. package/core/harnesses/gemini/hooks/lib.sh +0 -302
  456. package/core/harnesses/gemini/hooks/mcp-tool-guard.sh +0 -10
  457. package/core/harnesses/gemini/hooks/post-edit-lint.sh +0 -39
  458. package/core/harnesses/gemini/hooks/pre-bash-guard.sh +0 -10
  459. package/core/harnesses/gemini/hooks/pre-compact.sh +0 -38
  460. package/core/harnesses/gemini/hooks/pre-implement-gate.sh +0 -10
  461. package/core/harnesses/gemini/hooks/session-end.impl.sh +0 -89
  462. package/core/harnesses/gemini/hooks/session-end.sh +0 -5
  463. package/core/harnesses/gemini/hooks/session-start.sh +0 -7
  464. package/core/harnesses/gemini/settings/adapter-defaults.json +0 -4
  465. package/core/shared/guidance/FLAGS.md +0 -25
  466. package/core/shared/guidance/rules/RULE_01_SAFETY.md +0 -25
  467. package/core/shared/guidance/rules/RULE_02_WORKFLOW.md +0 -23
  468. package/core/shared/guidance/rules/RULE_03_QUALITY.md +0 -14
  469. package/core/shared/guidance/rules/RULE_04_QUESTIONS.md +0 -46
  470. package/src/adapters/gemini/hooks.js +0 -251
  471. package/src/adapters/gemini/index.js +0 -429
@@ -20,10 +20,6 @@
20
20
  "hook-review"
21
21
  ]
22
22
  },
23
- "gemini": {
24
- "event": "BeforeTool",
25
- "status": "different"
26
- },
27
23
  "opencode": {
28
24
  "status": "unavailable",
29
25
  "fallback": "guidance"
@@ -33,8 +29,8 @@
33
29
  "status": "different"
34
30
  },
35
31
  "copilot": {
36
- "status": "unavailable",
37
- "fallback": "guidance"
32
+ "event": "PreToolUse",
33
+ "status": "supported"
38
34
  },
39
35
  "kiro": {
40
36
  "event": "PreToolUse",
@@ -65,10 +61,6 @@
65
61
  "hook-review"
66
62
  ]
67
63
  },
68
- "gemini": {
69
- "event": "BeforeTool",
70
- "status": "different"
71
- },
72
64
  "opencode": {
73
65
  "status": "unavailable",
74
66
  "fallback": "guidance"
@@ -78,8 +70,8 @@
78
70
  "status": "different"
79
71
  },
80
72
  "copilot": {
81
- "status": "unavailable",
82
- "fallback": "guidance"
73
+ "event": "PreToolUse",
74
+ "status": "supported"
83
75
  },
84
76
  "kiro": {
85
77
  "event": "PreToolUse",
@@ -110,10 +102,6 @@
110
102
  "hook-review"
111
103
  ]
112
104
  },
113
- "gemini": {
114
- "event": "SessionStart",
115
- "status": "supported"
116
- },
117
105
  "opencode": {
118
106
  "status": "unavailable",
119
107
  "fallback": "guidance"
@@ -123,8 +111,8 @@
123
111
  "fallback": "guidance"
124
112
  },
125
113
  "copilot": {
126
- "status": "unavailable",
127
- "fallback": "guidance"
114
+ "event": "SessionStart",
115
+ "status": "supported"
128
116
  },
129
117
  "kiro": {
130
118
  "event": "SessionStart",
@@ -156,10 +144,6 @@
156
144
  "hook-review"
157
145
  ]
158
146
  },
159
- "gemini": {
160
- "event": "BeforeTool",
161
- "status": "different"
162
- },
163
147
  "opencode": {
164
148
  "status": "unavailable",
165
149
  "fallback": "guidance"
@@ -169,8 +153,8 @@
169
153
  "status": "different"
170
154
  },
171
155
  "copilot": {
172
- "status": "unavailable",
173
- "fallback": "guidance"
156
+ "event": "PreToolUse",
157
+ "status": "supported"
174
158
  },
175
159
  "kiro": {
176
160
  "event": "PreToolUse",
@@ -201,10 +185,6 @@
201
185
  "hook-review"
202
186
  ]
203
187
  },
204
- "gemini": {
205
- "status": "unavailable",
206
- "fallback": "guidance"
207
- },
208
188
  "opencode": {
209
189
  "status": "unavailable",
210
190
  "fallback": "guidance"
@@ -214,8 +194,8 @@
214
194
  "fallback": "guidance"
215
195
  },
216
196
  "copilot": {
217
- "status": "unavailable",
218
- "fallback": "guidance"
197
+ "event": "Stop",
198
+ "status": "supported"
219
199
  },
220
200
  "kiro": {
221
201
  "event": "Stop",
@@ -230,7 +210,7 @@
230
210
  ],
231
211
  "coverage": {
232
212
  "schemaVersion": 1,
233
- "revision": 2,
213
+ "revision": 3,
234
214
  "refresh": {
235
215
  "trigger": "a harness bridge, template or installed harness version changes",
236
216
  "owner": "the feature that changes it"
@@ -315,38 +295,6 @@
315
295
  }
316
296
  ]
317
297
  },
318
- {
319
- "policy": "pre-implementation-gate",
320
- "harness": "gemini",
321
- "event": "BeforeTool",
322
- "timing": "pre-tool",
323
- "profile": "any",
324
- "wired": true,
325
- "configSource": "core/harnesses/gemini/hooks/hooks.json:25",
326
- "harnessVersion": {
327
- "tested": "0.55.1"
328
- },
329
- "class": "blocking",
330
- "verification": "verified",
331
- "prerequisites": [],
332
- "covers": [],
333
- "doesNotCover": [
334
- "writes via shell commands"
335
- ],
336
- "caveats": [],
337
- "provenance": [
338
- {
339
- "kind": "doc",
340
- "locator": "https://geminicli.com/docs/hooks/",
341
- "date": "2026-10-12"
342
- },
343
- {
344
- "kind": "fixture",
345
- "locator": "test/fixtures/hooks/gemini/pre-implement-gate/deny.json",
346
- "date": "2026-10-14"
347
- }
348
- ]
349
- },
350
298
  {
351
299
  "policy": "pre-implementation-gate",
352
300
  "harness": "opencode",
@@ -995,56 +943,42 @@
995
943
  "event": "PreToolUse",
996
944
  "timing": "pre-tool",
997
945
  "profile": "any",
998
- "wired": false,
999
- "configSource": null,
946
+ "wired": true,
947
+ "configSource": "core/harnesses/copilot/hooks/doflow.json:12",
1000
948
  "harnessVersion": {
1001
- "tested": "GitHub Copilot CLI 1.0.78"
949
+ "tested": "GitHub Copilot CLI 1.0.103"
1002
950
  },
1003
- "class": "unknown",
1004
- "verification": "unverified",
951
+ "class": "blocking",
952
+ "verification": "verified",
1005
953
  "prerequisites": [],
1006
954
  "covers": [],
1007
955
  "doesNotCover": [
1008
956
  "writes via shell commands"
1009
957
  ],
1010
958
  "caveats": [
1011
- "fixture-pending",
1012
- "version-drift:GitHub Copilot CLI 1.0.78."
959
+ "live-verified: the preToolUse deny shape (a shell command was blocked) and the apply_patch payload; the edit and create tool arguments are not captured, so their path field is assumed to be `path` or `file_path`",
960
+ "version-drift:GitHub Copilot CLI 1.0.104."
1013
961
  ],
1014
962
  "provenance": [
1015
963
  {
1016
964
  "kind": "doc",
1017
- "locator": "core/registry/contracts.json: Copilot documented event inventory",
1018
- "date": "2026-10-14"
1019
- }
1020
- ]
1021
- },
1022
- {
1023
- "policy": "pre-implementation-gate",
1024
- "harness": "copilot",
1025
- "event": "*",
1026
- "timing": "pre-tool",
1027
- "profile": "any",
1028
- "wired": false,
1029
- "configSource": null,
1030
- "harnessVersion": {
1031
- "tested": "GitHub Copilot CLI 1.0.78"
1032
- },
1033
- "class": "unsupported",
1034
- "verification": "unverified",
1035
- "prerequisites": [],
1036
- "covers": [],
1037
- "doesNotCover": [
1038
- "writes via shell commands"
1039
- ],
1040
- "caveats": [
1041
- "version-drift:GitHub Copilot CLI 1.0.78."
1042
- ],
1043
- "provenance": [
965
+ "locator": "https://docs.github.com/en/copilot/reference/hooks-reference",
966
+ "date": "2026-10-27"
967
+ },
1044
968
  {
1045
- "kind": "doc",
1046
- "locator": "core/registry/harnesses.json: copilot harness; core/registry/contracts.json: unavailable hook mapping",
1047
- "date": "2026-10-12"
969
+ "kind": "fixture",
970
+ "locator": "test/fixtures/hooks/copilot/pre-implement-gate/apply_patch-deny.json",
971
+ "date": "2026-10-27"
972
+ },
973
+ {
974
+ "kind": "live",
975
+ "locator": "test/fixtures/hooks/copilot/live/deny-proof-2026-10-27.json",
976
+ "date": "2026-10-27"
977
+ },
978
+ {
979
+ "kind": "live",
980
+ "locator": "test/fixtures/hooks/copilot/live/capture-2026-10-27.jsonl",
981
+ "date": "2026-10-27"
1048
982
  }
1049
983
  ]
1050
984
  },
@@ -1270,36 +1204,6 @@
1270
1204
  }
1271
1205
  ]
1272
1206
  },
1273
- {
1274
- "policy": "pre-bash-guard",
1275
- "harness": "gemini",
1276
- "event": "BeforeTool",
1277
- "timing": "pre-tool",
1278
- "profile": "any",
1279
- "wired": true,
1280
- "configSource": "core/harnesses/gemini/hooks/hooks.json:25",
1281
- "harnessVersion": {
1282
- "tested": "0.55.1"
1283
- },
1284
- "class": "blocking",
1285
- "verification": "verified",
1286
- "prerequisites": [],
1287
- "covers": [],
1288
- "doesNotCover": [],
1289
- "caveats": [],
1290
- "provenance": [
1291
- {
1292
- "kind": "doc",
1293
- "locator": "https://geminicli.com/docs/hooks/",
1294
- "date": "2026-10-12"
1295
- },
1296
- {
1297
- "kind": "fixture",
1298
- "locator": "test/fixtures/hooks/gemini/pre-bash-guard/deny.json",
1299
- "date": "2026-10-14"
1300
- }
1301
- ]
1302
- },
1303
1207
  {
1304
1208
  "policy": "pre-bash-guard",
1305
1209
  "harness": "opencode",
@@ -1325,33 +1229,6 @@
1325
1229
  }
1326
1230
  ]
1327
1231
  },
1328
- {
1329
- "policy": "pre-bash-guard",
1330
- "harness": "copilot",
1331
- "event": "*",
1332
- "timing": "pre-tool",
1333
- "profile": "any",
1334
- "wired": false,
1335
- "configSource": null,
1336
- "harnessVersion": {
1337
- "tested": "GitHub Copilot CLI 1.0.78"
1338
- },
1339
- "class": "unsupported",
1340
- "verification": "unverified",
1341
- "prerequisites": [],
1342
- "covers": [],
1343
- "doesNotCover": [],
1344
- "caveats": [
1345
- "version-drift:GitHub Copilot CLI 1.0.78."
1346
- ],
1347
- "provenance": [
1348
- {
1349
- "kind": "doc",
1350
- "locator": "core/registry/harnesses.json: copilot harness; core/registry/contracts.json: unavailable hook mapping",
1351
- "date": "2026-10-12"
1352
- }
1353
- ]
1354
- },
1355
1232
  {
1356
1233
  "policy": "pre-bash-guard",
1357
1234
  "harness": "kiro",
@@ -1555,33 +1432,6 @@
1555
1432
  }
1556
1433
  ]
1557
1434
  },
1558
- {
1559
- "policy": "session-context",
1560
- "harness": "gemini",
1561
- "event": "SessionStart",
1562
- "timing": "session",
1563
- "profile": "any",
1564
- "wired": true,
1565
- "configSource": "core/harnesses/gemini/hooks/hooks.json:4",
1566
- "harnessVersion": {
1567
- "tested": "0.55.1"
1568
- },
1569
- "class": "unknown",
1570
- "verification": "unverified",
1571
- "prerequisites": [],
1572
- "covers": [],
1573
- "doesNotCover": [],
1574
- "caveats": [
1575
- "native event enforcement is not yet verified"
1576
- ],
1577
- "provenance": [
1578
- {
1579
- "kind": "doc",
1580
- "locator": "https://geminicli.com/docs/hooks/",
1581
- "date": "2026-10-12"
1582
- }
1583
- ]
1584
- },
1585
1435
  {
1586
1436
  "policy": "session-context",
1587
1437
  "harness": "opencode",
@@ -1669,10 +1519,10 @@
1669
1519
  "event": "SessionStart",
1670
1520
  "timing": "session",
1671
1521
  "profile": "any",
1672
- "wired": false,
1673
- "configSource": null,
1522
+ "wired": true,
1523
+ "configSource": "core/harnesses/copilot/hooks/doflow.json:4",
1674
1524
  "harnessVersion": {
1675
- "tested": "GitHub Copilot CLI 1.0.78"
1525
+ "tested": "GitHub Copilot CLI 1.0.103"
1676
1526
  },
1677
1527
  "class": "unknown",
1678
1528
  "verification": "unverified",
@@ -1680,14 +1530,24 @@
1680
1530
  "covers": [],
1681
1531
  "doesNotCover": [],
1682
1532
  "caveats": [
1683
- "fixture-pending",
1684
- "version-drift:GitHub Copilot CLI 1.0.78."
1533
+ "native event enforcement is not yet verified; the policy writes session state and prints nothing",
1534
+ "version-drift:GitHub Copilot CLI 1.0.104."
1685
1535
  ],
1686
1536
  "provenance": [
1687
1537
  {
1688
1538
  "kind": "doc",
1689
- "locator": "core/registry/contracts.json: Copilot documented event inventory",
1690
- "date": "2026-10-14"
1539
+ "locator": "https://docs.github.com/en/copilot/reference/hooks-reference",
1540
+ "date": "2026-10-27"
1541
+ },
1542
+ {
1543
+ "kind": "fixture",
1544
+ "locator": "test/fixtures/hooks/copilot/session-start/start.json",
1545
+ "date": "2026-10-27"
1546
+ },
1547
+ {
1548
+ "kind": "live",
1549
+ "locator": "test/fixtures/hooks/copilot/live/capture-2026-10-27.jsonl",
1550
+ "date": "2026-10-27"
1691
1551
  }
1692
1552
  ]
1693
1553
  },
@@ -1747,33 +1607,6 @@
1747
1607
  }
1748
1608
  ]
1749
1609
  },
1750
- {
1751
- "policy": "session-context",
1752
- "harness": "copilot",
1753
- "event": "*",
1754
- "timing": "session",
1755
- "profile": "any",
1756
- "wired": false,
1757
- "configSource": null,
1758
- "harnessVersion": {
1759
- "tested": "GitHub Copilot CLI 1.0.78"
1760
- },
1761
- "class": "unsupported",
1762
- "verification": "unverified",
1763
- "prerequisites": [],
1764
- "covers": [],
1765
- "doesNotCover": [],
1766
- "caveats": [
1767
- "version-drift:GitHub Copilot CLI 1.0.78."
1768
- ],
1769
- "provenance": [
1770
- {
1771
- "kind": "doc",
1772
- "locator": "core/registry/harnesses.json: copilot harness; core/registry/contracts.json: unavailable hook mapping",
1773
- "date": "2026-10-12"
1774
- }
1775
- ]
1776
- },
1777
1610
  {
1778
1611
  "policy": "session-context",
1779
1612
  "harness": "copilot",
@@ -1918,36 +1751,6 @@
1918
1751
  }
1919
1752
  ]
1920
1753
  },
1921
- {
1922
- "policy": "mcp-tool-guard",
1923
- "harness": "gemini",
1924
- "event": "BeforeTool",
1925
- "timing": "pre-tool",
1926
- "profile": "any",
1927
- "wired": true,
1928
- "configSource": "core/harnesses/gemini/hooks/hooks.json:25",
1929
- "harnessVersion": {
1930
- "tested": "0.55.1"
1931
- },
1932
- "class": "blocking",
1933
- "verification": "verified",
1934
- "prerequisites": [],
1935
- "covers": [],
1936
- "doesNotCover": [],
1937
- "caveats": [],
1938
- "provenance": [
1939
- {
1940
- "kind": "doc",
1941
- "locator": "https://geminicli.com/docs/hooks/",
1942
- "date": "2026-10-12"
1943
- },
1944
- {
1945
- "kind": "fixture",
1946
- "locator": "test/fixtures/hooks/gemini/mcp-tool-guard/deny.json",
1947
- "date": "2026-10-14"
1948
- }
1949
- ]
1950
- },
1951
1754
  {
1952
1755
  "policy": "mcp-tool-guard",
1953
1756
  "harness": "opencode",
@@ -2060,27 +1863,33 @@
2060
1863
  {
2061
1864
  "policy": "mcp-tool-guard",
2062
1865
  "harness": "copilot",
2063
- "event": "*",
1866
+ "event": "PreToolUse",
2064
1867
  "timing": "pre-tool",
2065
1868
  "profile": "any",
2066
- "wired": false,
2067
- "configSource": null,
1869
+ "wired": true,
1870
+ "configSource": "core/harnesses/copilot/hooks/doflow.json:12",
2068
1871
  "harnessVersion": {
2069
- "tested": "GitHub Copilot CLI 1.0.78"
1872
+ "tested": "GitHub Copilot CLI 1.0.103"
2070
1873
  },
2071
- "class": "unsupported",
1874
+ "class": "unknown",
2072
1875
  "verification": "unverified",
2073
1876
  "prerequisites": [],
2074
1877
  "covers": [],
2075
1878
  "doesNotCover": [],
2076
1879
  "caveats": [
2077
- "version-drift:GitHub Copilot CLI 1.0.78."
1880
+ "the MCP tool-name form on preToolUse was not captured: the guard matches the mcp__<server>__<tool> and mcp_ prefixes, so an MCP call under another name is allowed",
1881
+ "version-drift:GitHub Copilot CLI 1.0.104."
2078
1882
  ],
2079
1883
  "provenance": [
2080
1884
  {
2081
1885
  "kind": "doc",
2082
- "locator": "core/registry/harnesses.json: copilot harness; core/registry/contracts.json: unavailable hook mapping",
2083
- "date": "2026-10-12"
1886
+ "locator": "https://docs.github.com/en/copilot/reference/hooks-reference",
1887
+ "date": "2026-10-27"
1888
+ },
1889
+ {
1890
+ "kind": "fixture",
1891
+ "locator": "test/fixtures/hooks/copilot/mcp-tool-guard/deny.json",
1892
+ "date": "2026-10-27"
2084
1893
  }
2085
1894
  ]
2086
1895
  },
@@ -2238,7 +2047,7 @@
2238
2047
  "timing": "stop",
2239
2048
  "profile": "any",
2240
2049
  "wired": true,
2241
- "configSource": "core/harnesses/claude/settings/settings.json:138",
2050
+ "configSource": "core/harnesses/claude/settings/settings.json:147",
2242
2051
  "harnessVersion": {
2243
2052
  "tested": "2.1.287 (Claude Code)"
2244
2053
  },
@@ -2295,34 +2104,7 @@
2295
2104
  },
2296
2105
  {
2297
2106
  "policy": "stop-check",
2298
- "harness": "gemini",
2299
- "event": "*",
2300
- "timing": "stop",
2301
- "profile": "any",
2302
- "wired": false,
2303
- "configSource": null,
2304
- "harnessVersion": {
2305
- "tested": "0.55.1"
2306
- },
2307
- "class": "unsupported",
2308
- "verification": "unverified",
2309
- "prerequisites": [],
2310
- "covers": [],
2311
- "doesNotCover": [],
2312
- "caveats": [
2313
- "not wired for this harness mapping"
2314
- ],
2315
- "provenance": [
2316
- {
2317
- "kind": "doc",
2318
- "locator": "core/registry/lifecycle.json: policy stop-check mapping for gemini",
2319
- "date": "2026-10-14"
2320
- }
2321
- ]
2322
- },
2323
- {
2324
- "policy": "stop-check",
2325
- "harness": "opencode",
2107
+ "harness": "opencode",
2326
2108
  "event": "*",
2327
2109
  "timing": "stop",
2328
2110
  "profile": "any",
@@ -2351,10 +2133,10 @@
2351
2133
  "event": "Stop",
2352
2134
  "timing": "stop",
2353
2135
  "profile": "any",
2354
- "wired": false,
2355
- "configSource": null,
2136
+ "wired": true,
2137
+ "configSource": "core/harnesses/copilot/hooks/doflow.json:32",
2356
2138
  "harnessVersion": {
2357
- "tested": "GitHub Copilot CLI 1.0.78"
2139
+ "tested": "GitHub Copilot CLI 1.0.103"
2358
2140
  },
2359
2141
  "class": "unknown",
2360
2142
  "verification": "unverified",
@@ -2362,41 +2144,68 @@
2362
2144
  "covers": [],
2363
2145
  "doesNotCover": [],
2364
2146
  "caveats": [
2365
- "fixture-pending",
2366
- "version-drift:GitHub Copilot CLI 1.0.78."
2147
+ "the {decision:\"block\"} output is documented but not exercised live",
2148
+ "the last assistant message is read from the events.jsonl transcript, and whether agentStop fires after it is written is unverified; a subagent's own agentStop is skipped",
2149
+ "version-drift:GitHub Copilot CLI 1.0.104."
2367
2150
  ],
2368
2151
  "provenance": [
2369
2152
  {
2370
2153
  "kind": "doc",
2371
- "locator": "core/registry/contracts.json: Copilot documented event inventory",
2372
- "date": "2026-10-14"
2154
+ "locator": "https://docs.github.com/en/copilot/reference/hooks-reference",
2155
+ "date": "2026-10-27"
2156
+ },
2157
+ {
2158
+ "kind": "fixture",
2159
+ "locator": "test/fixtures/hooks/copilot/stop-check/deny.json",
2160
+ "date": "2026-10-27"
2161
+ },
2162
+ {
2163
+ "kind": "live",
2164
+ "locator": "test/fixtures/hooks/copilot/live/capture-2026-10-27.jsonl",
2165
+ "date": "2026-10-27"
2373
2166
  }
2374
2167
  ]
2375
2168
  },
2376
2169
  {
2377
- "policy": "stop-check",
2170
+ "policy": "pre-bash-guard",
2378
2171
  "harness": "copilot",
2379
- "event": "*",
2380
- "timing": "stop",
2172
+ "event": "PreToolUse",
2173
+ "timing": "pre-tool",
2381
2174
  "profile": "any",
2382
- "wired": false,
2383
- "configSource": null,
2175
+ "wired": true,
2176
+ "configSource": "core/harnesses/copilot/hooks/doflow.json:12",
2384
2177
  "harnessVersion": {
2385
- "tested": "GitHub Copilot CLI 1.0.78"
2178
+ "tested": "GitHub Copilot CLI 1.0.103"
2386
2179
  },
2387
- "class": "unsupported",
2388
- "verification": "unverified",
2180
+ "class": "blocking",
2181
+ "verification": "verified",
2389
2182
  "prerequisites": [],
2390
2183
  "covers": [],
2391
2184
  "doesNotCover": [],
2392
2185
  "caveats": [
2393
- "version-drift:GitHub Copilot CLI 1.0.78."
2186
+ "live-verified: the deny output blocked a shell command; Copilot command hooks are fail-closed on a non-zero exit and fail open on a timeout",
2187
+ "version-drift:GitHub Copilot CLI 1.0.104."
2394
2188
  ],
2395
2189
  "provenance": [
2396
2190
  {
2397
2191
  "kind": "doc",
2398
- "locator": "core/registry/harnesses.json: copilot harness; core/registry/contracts.json: unavailable hook mapping",
2399
- "date": "2026-10-12"
2192
+ "locator": "https://docs.github.com/en/copilot/reference/hooks-reference",
2193
+ "date": "2026-10-27"
2194
+ },
2195
+ {
2196
+ "kind": "fixture",
2197
+ "locator": "test/fixtures/hooks/copilot/pre-bash-guard/deny.json",
2198
+ "date": "2026-10-27"
2199
+ },
2200
+ {
2201
+ "kind": "live",
2202
+ "locator": "test/fixtures/hooks/copilot/live/deny-proof-2026-10-27.json",
2203
+ "date": "2026-10-27"
2204
+ },
2205
+ {
2206
+ "kind": "live",
2207
+ "locator": "test/fixtures/hooks/copilot/live/capture-2026-10-27.jsonl",
2208
+ "date": "2026-10-27"
2400
2209
  }
2401
2210
  ]
2402
2211
  },
@@ -2845,6 +2654,378 @@
2845
2654
  ]
2846
2655
  }
2847
2656
  ],
2848
- "rowsDigest": "sha256:199bb689b2034157ecb3ade2b47b70470a00e567fa27134fc0cf5ef467369768"
2657
+ "endOfTurn": [
2658
+ {
2659
+ "harness": "claude",
2660
+ "events": [
2661
+ "Stop"
2662
+ ],
2663
+ "provenance": [
2664
+ {
2665
+ "kind": "doc",
2666
+ "locator": "https://code.claude.com/docs/en/hooks",
2667
+ "date": "2026-10-12"
2668
+ }
2669
+ ]
2670
+ },
2671
+ {
2672
+ "harness": "codex",
2673
+ "events": [
2674
+ "Stop"
2675
+ ],
2676
+ "provenance": [
2677
+ {
2678
+ "kind": "doc",
2679
+ "locator": "https://learn.chatgpt.com/docs/hooks",
2680
+ "date": "2026-10-12"
2681
+ }
2682
+ ]
2683
+ },
2684
+ {
2685
+ "harness": "opencode",
2686
+ "events": [],
2687
+ "none": "no DoFlow hook bridge",
2688
+ "provenance": []
2689
+ },
2690
+ {
2691
+ "harness": "pi",
2692
+ "events": [],
2693
+ "none": "the extension handles tool_call only",
2694
+ "provenance": []
2695
+ },
2696
+ {
2697
+ "harness": "copilot",
2698
+ "events": [
2699
+ "Stop"
2700
+ ],
2701
+ "provenance": [
2702
+ {
2703
+ "kind": "doc",
2704
+ "locator": "core/registry/contracts.json: Copilot documented event inventory",
2705
+ "date": "2026-10-14"
2706
+ },
2707
+ {
2708
+ "kind": "doc",
2709
+ "locator": "https://docs.github.com/en/copilot/reference/copilot-cli-reference/cli-hooks-reference",
2710
+ "date": "2026-10-15"
2711
+ }
2712
+ ]
2713
+ },
2714
+ {
2715
+ "harness": "kiro",
2716
+ "events": [
2717
+ "Stop",
2718
+ "stop"
2719
+ ],
2720
+ "provenance": [
2721
+ {
2722
+ "kind": "doc",
2723
+ "locator": "https://kiro.dev/docs/hooks/types/",
2724
+ "date": "2026-10-12"
2725
+ },
2726
+ {
2727
+ "kind": "doc",
2728
+ "locator": "https://kiro.dev/docs/hooks/types/",
2729
+ "date": "2026-10-14"
2730
+ }
2731
+ ]
2732
+ },
2733
+ {
2734
+ "harness": "antigravity",
2735
+ "events": [
2736
+ "Stop"
2737
+ ],
2738
+ "provenance": [
2739
+ {
2740
+ "kind": "doc",
2741
+ "locator": "https://antigravity.google/docs/hooks/",
2742
+ "date": "2026-10-12"
2743
+ }
2744
+ ]
2745
+ }
2746
+ ],
2747
+ "behaviours": [
2748
+ {
2749
+ "behaviour": "context-authority",
2750
+ "harness": "claude",
2751
+ "status": "enforced",
2752
+ "tests": [
2753
+ "test/hooks/context-authority.test.ts"
2754
+ ]
2755
+ },
2756
+ {
2757
+ "behaviour": "context-authority",
2758
+ "harness": "codex",
2759
+ "status": "enforced",
2760
+ "tests": [
2761
+ "test/hooks/context-authority.test.ts"
2762
+ ]
2763
+ },
2764
+ {
2765
+ "behaviour": "context-authority",
2766
+ "harness": "opencode",
2767
+ "status": "limitation",
2768
+ "limitation": "no DoFlow hook bridge"
2769
+ },
2770
+ {
2771
+ "behaviour": "context-authority",
2772
+ "harness": "pi",
2773
+ "status": "limitation",
2774
+ "limitation": "extension handles tool_call only"
2775
+ },
2776
+ {
2777
+ "behaviour": "context-authority",
2778
+ "harness": "copilot",
2779
+ "status": "limitation",
2780
+ "limitation": "no prompt hook wired; SessionStart emits no context"
2781
+ },
2782
+ {
2783
+ "behaviour": "context-authority",
2784
+ "harness": "kiro",
2785
+ "status": "limitation",
2786
+ "limitation": "no prompt hook wired; SessionStart emits no context"
2787
+ },
2788
+ {
2789
+ "behaviour": "context-authority",
2790
+ "harness": "antigravity",
2791
+ "status": "limitation",
2792
+ "limitation": "only PreToolUse and Stop wired"
2793
+ },
2794
+ {
2795
+ "behaviour": "default-silence",
2796
+ "harness": "claude",
2797
+ "status": "enforced",
2798
+ "tests": [
2799
+ "test/hooks/context-authority.test.ts",
2800
+ "test/hooks/emission-adapter.test.ts"
2801
+ ]
2802
+ },
2803
+ {
2804
+ "behaviour": "default-silence",
2805
+ "harness": "codex",
2806
+ "status": "enforced",
2807
+ "tests": [
2808
+ "test/hooks/context-authority.test.ts",
2809
+ "test/hooks/emission-adapter.test.ts"
2810
+ ]
2811
+ },
2812
+ {
2813
+ "behaviour": "default-silence",
2814
+ "harness": "opencode",
2815
+ "status": "limitation",
2816
+ "limitation": "no DoFlow hook bridge"
2817
+ },
2818
+ {
2819
+ "behaviour": "default-silence",
2820
+ "harness": "pi",
2821
+ "status": "limitation",
2822
+ "limitation": "no prompt-time emission"
2823
+ },
2824
+ {
2825
+ "behaviour": "default-silence",
2826
+ "harness": "copilot",
2827
+ "status": "limitation",
2828
+ "limitation": "no prompt-time emission"
2829
+ },
2830
+ {
2831
+ "behaviour": "default-silence",
2832
+ "harness": "kiro",
2833
+ "status": "limitation",
2834
+ "limitation": "no prompt-time emission"
2835
+ },
2836
+ {
2837
+ "behaviour": "default-silence",
2838
+ "harness": "antigravity",
2839
+ "status": "limitation",
2840
+ "limitation": "no prompt-time emission"
2841
+ },
2842
+ {
2843
+ "behaviour": "summary-scope",
2844
+ "harness": "claude",
2845
+ "status": "enforced",
2846
+ "tests": [
2847
+ "test/hooks/summary-scope.test.ts",
2848
+ "test/hooks/cross-harness-parity.test.ts"
2849
+ ]
2850
+ },
2851
+ {
2852
+ "behaviour": "summary-scope",
2853
+ "harness": "codex",
2854
+ "status": "limitation",
2855
+ "limitation": "PreCompact carries no summary text"
2856
+ },
2857
+ {
2858
+ "behaviour": "summary-scope",
2859
+ "harness": "opencode",
2860
+ "status": "limitation",
2861
+ "limitation": "no DoFlow hook bridge"
2862
+ },
2863
+ {
2864
+ "behaviour": "summary-scope",
2865
+ "harness": "pi",
2866
+ "status": "limitation",
2867
+ "limitation": "no compaction hook wired"
2868
+ },
2869
+ {
2870
+ "behaviour": "summary-scope",
2871
+ "harness": "copilot",
2872
+ "status": "limitation",
2873
+ "limitation": "no compaction hook wired"
2874
+ },
2875
+ {
2876
+ "behaviour": "summary-scope",
2877
+ "harness": "kiro",
2878
+ "status": "limitation",
2879
+ "limitation": "no compaction hook wired"
2880
+ },
2881
+ {
2882
+ "behaviour": "summary-scope",
2883
+ "harness": "antigravity",
2884
+ "status": "limitation",
2885
+ "limitation": "no compaction hook wired"
2886
+ },
2887
+ {
2888
+ "behaviour": "summary-grant",
2889
+ "harness": "claude",
2890
+ "status": "enforced",
2891
+ "tests": [
2892
+ "test/hooks/summary-scope.test.ts",
2893
+ "test/hooks/cross-harness-parity.test.ts"
2894
+ ]
2895
+ },
2896
+ {
2897
+ "behaviour": "summary-grant",
2898
+ "harness": "codex",
2899
+ "status": "enforced",
2900
+ "tests": [
2901
+ "test/hooks/cross-harness-parity.test.ts"
2902
+ ]
2903
+ },
2904
+ {
2905
+ "behaviour": "summary-grant",
2906
+ "harness": "opencode",
2907
+ "status": "limitation",
2908
+ "limitation": "no DoFlow hook bridge"
2909
+ },
2910
+ {
2911
+ "behaviour": "summary-grant",
2912
+ "harness": "pi",
2913
+ "status": "limitation",
2914
+ "limitation": "no prompt hook to deliver"
2915
+ },
2916
+ {
2917
+ "behaviour": "summary-grant",
2918
+ "harness": "copilot",
2919
+ "status": "limitation",
2920
+ "limitation": "no prompt hook to deliver"
2921
+ },
2922
+ {
2923
+ "behaviour": "summary-grant",
2924
+ "harness": "kiro",
2925
+ "status": "limitation",
2926
+ "limitation": "no prompt hook to deliver"
2927
+ },
2928
+ {
2929
+ "behaviour": "summary-grant",
2930
+ "harness": "antigravity",
2931
+ "status": "limitation",
2932
+ "limitation": "no prompt hook to deliver"
2933
+ },
2934
+ {
2935
+ "behaviour": "identity",
2936
+ "harness": "claude",
2937
+ "status": "limitation",
2938
+ "limitation": "launcher environment forwarding into hook processes is unverified until 081 (DEC-004)"
2939
+ },
2940
+ {
2941
+ "behaviour": "identity",
2942
+ "harness": "codex",
2943
+ "status": "limitation",
2944
+ "limitation": "launcher environment forwarding into hook processes is unverified until 081 (DEC-004)"
2945
+ },
2946
+ {
2947
+ "behaviour": "identity",
2948
+ "harness": "opencode",
2949
+ "status": "limitation",
2950
+ "limitation": "no DoFlow hook bridge"
2951
+ },
2952
+ {
2953
+ "behaviour": "identity",
2954
+ "harness": "pi",
2955
+ "status": "limitation",
2956
+ "limitation": "launcher environment forwarding into hook processes is unverified until 081 (DEC-004)"
2957
+ },
2958
+ {
2959
+ "behaviour": "identity",
2960
+ "harness": "copilot",
2961
+ "status": "limitation",
2962
+ "limitation": "launcher environment forwarding into hook processes is unverified until 081 (DEC-004)"
2963
+ },
2964
+ {
2965
+ "behaviour": "identity",
2966
+ "harness": "kiro",
2967
+ "status": "limitation",
2968
+ "limitation": "launcher environment forwarding into hook processes is unverified until 081 (DEC-004)"
2969
+ },
2970
+ {
2971
+ "behaviour": "identity",
2972
+ "harness": "antigravity",
2973
+ "status": "limitation",
2974
+ "limitation": "launcher environment forwarding into hook processes is unverified until 081 (DEC-004)"
2975
+ },
2976
+ {
2977
+ "behaviour": "check-freshness",
2978
+ "harness": "claude",
2979
+ "status": "enforced",
2980
+ "tests": [
2981
+ "test/hooks/check-freshness.test.ts"
2982
+ ]
2983
+ },
2984
+ {
2985
+ "behaviour": "check-freshness",
2986
+ "harness": "codex",
2987
+ "status": "enforced",
2988
+ "tests": [
2989
+ "test/hooks/check-freshness.test.ts"
2990
+ ]
2991
+ },
2992
+ {
2993
+ "behaviour": "check-freshness",
2994
+ "harness": "opencode",
2995
+ "status": "limitation",
2996
+ "limitation": "no pre-edit or pre-command gate"
2997
+ },
2998
+ {
2999
+ "behaviour": "check-freshness",
3000
+ "harness": "pi",
3001
+ "status": "enforced",
3002
+ "tests": [
3003
+ "test/hooks/check-freshness.test.ts"
3004
+ ]
3005
+ },
3006
+ {
3007
+ "behaviour": "check-freshness",
3008
+ "harness": "copilot",
3009
+ "status": "limitation",
3010
+ "limitation": "pre-tool gate and shell guard are wired; check-freshness is not exercised against Copilot payloads"
3011
+ },
3012
+ {
3013
+ "behaviour": "check-freshness",
3014
+ "harness": "kiro",
3015
+ "status": "enforced",
3016
+ "tests": [
3017
+ "test/hooks/check-freshness.test.ts"
3018
+ ]
3019
+ },
3020
+ {
3021
+ "behaviour": "check-freshness",
3022
+ "harness": "antigravity",
3023
+ "status": "enforced",
3024
+ "tests": [
3025
+ "test/hooks/check-freshness.test.ts"
3026
+ ]
3027
+ }
3028
+ ],
3029
+ "rowsDigest": "sha256:d8fdf93bb4a556f0ba91d5a8eb74e5857c29fe7ea87e2731a39afb955d50bb59"
2849
3030
  }
2850
3031
  }