@khoavu882/doflow 2.0.0 → 2.0.2

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 (176) hide show
  1. package/README.md +4 -5
  2. package/bin/doflow.js +1 -1
  3. package/core/.claude-plugin/plugin.json +1 -1
  4. package/core/.codex-plugin/plugin.json +1 -1
  5. package/core/.plugin/plugin.json +1 -1
  6. package/core/harnesses/claude/hooks/mcp-tool-guard.sh +4 -1
  7. package/core/harnesses/claude/hooks/pre-implement-gate.sh +4 -1
  8. package/core/harnesses/claude/hooks/session-end.sh +21 -1
  9. package/core/harnesses/claude/settings/settings.json +8 -9
  10. package/core/harnesses/codex/hooks/hooks.json +0 -10
  11. package/core/harnesses/codex/hooks/mcp-tool-guard.sh +4 -1
  12. package/core/harnesses/codex/hooks/pre-implement-gate.sh +4 -1
  13. package/core/harnesses/codex/hooks/session-end.impl.sh +21 -1
  14. package/core/harnesses/copilot/hooks/doflow-lib.sh +4 -3
  15. package/core/harnesses/copilot/hooks/doflow.json +0 -6
  16. package/core/harnesses/kiro/agents/doflow.json +0 -10
  17. package/core/harnesses/kiro/hooks/doflow.json +0 -10
  18. package/core/harnesses/kiro/hooks/mcp-tool-guard.sh +7 -3
  19. package/core/harnesses/kiro/hooks/pre-implement-gate.sh +7 -3
  20. package/core/harnesses/pi/extensions/doflow-guard.js +3 -2
  21. package/core/harnesses/shared/hooks/ENVELOPE_MIGRATION.md +1 -1
  22. package/core/harnesses/shared/hooks/adapters/antigravity.js +1 -1
  23. package/core/harnesses/shared/hooks/bridge/bridge.sh +35 -25
  24. package/core/harnesses/shared/hooks/bridge/envelope.jq +1 -1
  25. package/core/harnesses/shared/hooks/bridge/respond.sh +6 -0
  26. package/core/harnesses/shared/hooks/policies/capture-failure.sh +1 -1
  27. package/core/harnesses/shared/hooks/policies/compact-text.sh +8 -0
  28. package/core/harnesses/shared/hooks/policies/deny-json.sh +23 -1
  29. package/core/harnesses/shared/hooks/policies/mcp-policy.conf +1 -1
  30. package/core/harnesses/shared/hooks/policies/mcp-tool-guard.sh +4 -6
  31. package/core/harnesses/shared/hooks/policies/pre-implementation-gate.sh +20 -21
  32. package/core/harnesses/shared/hooks/policies/stop-check.sh +7 -6
  33. package/core/harnesses/shared/hooks/policies/subagent-audit.sh +26 -2
  34. package/core/harnesses/shared/hooks/stream-hook-runner.js +11 -12
  35. package/core/registry/contracts.json +1 -1
  36. package/core/registry/contribution-points.json +5 -2
  37. package/core/registry/gates.json +5 -5
  38. package/core/registry/harnesses.json +9 -9
  39. package/core/registry/intake.json +53 -0
  40. package/core/registry/lifecycle.json +176 -503
  41. package/core/registry/package-templates/intake-category/files/category.json +8 -0
  42. package/core/registry/package-templates/intake-category/template.json +4 -0
  43. package/core/registry/packages/doflow/doflow-package.json +2 -2
  44. package/core/registry/rules.json +8 -8
  45. package/core/registry/settings.json +12 -16
  46. package/core/registry/storage.json +9 -2
  47. package/core/registry/telemetry.json +1 -1
  48. package/core/registry/verification.json +0 -5
  49. package/core/shared/guidance/references/ARTIFACT_FORMAT.md +7 -0
  50. package/core/shared/guidance/references/DOFLOW_CHAIN.md +4 -4
  51. package/core/shared/guidance/references/ORCHESTRATION.md +2 -0
  52. package/core/shared/guidance/references/WORKFLOW_HANDOFF.md +19 -1
  53. package/core/shared/guidance/rules/RULES.md +2 -2
  54. package/core/shared/scripts/doflow/bash/do-git-state.sh +12 -4
  55. package/core/shared/scripts/doflow/bash/do-parallel-check.sh +86 -33
  56. package/core/shared/scripts/doflow/bash/do-review-package.sh +36 -2
  57. package/core/shared/scripts/doflow/bash/validate-artifacts.sh +1 -1
  58. package/core/shared/scripts/doflow/bin/doflow-run +23 -2
  59. package/core/shared/skills/do/SKILL.md +3 -3
  60. package/core/shared/skills/do-brainstorm/SKILL.md +26 -24
  61. package/core/shared/skills/do-brainstorm/references/handoff_branches.md +2 -1
  62. package/core/shared/skills/do-code-review/SKILL.md +7 -4
  63. package/core/shared/skills/do-design/SKILL.md +11 -5
  64. package/core/shared/skills/do-design/references/data_model_example.md +167 -0
  65. package/core/shared/skills/do-diagnose/SKILL.md +4 -2
  66. package/core/shared/skills/do-document/SKILL.md +1 -0
  67. package/core/shared/skills/do-document/references/embedded-research.md +1 -1
  68. package/core/shared/skills/do-execute-plan/SKILL.md +4 -2
  69. package/core/shared/skills/do-execute-plan/references/run_position.md +3 -1
  70. package/core/shared/skills/do-execute-plan/references/scaffold.md +1 -1
  71. package/core/shared/skills/do-flow/SKILL.md +4 -4
  72. package/core/shared/skills/do-flow/references/task_classes.md +5 -5
  73. package/core/shared/skills/do-implement/SKILL.md +9 -7
  74. package/core/shared/skills/do-plan/SKILL.md +9 -6
  75. package/core/shared/templates/doflow/data-model-template.md +136 -102
  76. package/core/shared/workflows/do-flow-chain.md +2 -0
  77. package/package.json +1 -1
  78. package/src/adapters/antigravity/index.js +54 -12
  79. package/src/adapters/claude/index.js +23 -2
  80. package/src/adapters/codex/agents.js +15 -1
  81. package/src/adapters/codex/config.js +5 -2
  82. package/src/adapters/codex/hooks.js +39 -3
  83. package/src/adapters/codex/index.js +13 -0
  84. package/src/adapters/copilot/index.js +11 -4
  85. package/src/adapters/copy-tree.js +8 -2
  86. package/src/adapters/created-file.js +41 -0
  87. package/src/adapters/mcp-entries.js +11 -1
  88. package/src/adapters/opencode/index.js +32 -5
  89. package/src/adapters/pi/index.js +15 -4
  90. package/src/adapters/pi/mcp.js +44 -18
  91. package/src/cli/commands/remove.js +3 -1
  92. package/src/cli/commands/status.js +1 -1
  93. package/src/cli/commands/update.js +7 -3
  94. package/src/cli/index.js +43 -19
  95. package/src/cli/runtime-commands.js +13 -5
  96. package/src/cli/shared.js +5 -3
  97. package/src/helper/marker-merge.js +11 -7
  98. package/src/install/backup-set.js +7 -3
  99. package/src/install/backup.js +13 -7
  100. package/src/install/context.js +2 -1
  101. package/src/install/manifest.js +35 -11
  102. package/src/install/paths.js +38 -0
  103. package/src/install/targets.js +11 -2
  104. package/src/lifecycle/coverage.js +1 -30
  105. package/src/lifecycle/hook-tier.js +2 -2
  106. package/src/lifecycle/index.js +80 -3
  107. package/src/lifecycle/retired-harnesses.js +16 -1
  108. package/src/lifecycle/view.js +3 -2
  109. package/src/registry/index.js +21 -4
  110. package/src/release/docs-blocks.js +37 -53
  111. package/src/runtime/advice/doctor.js +2 -2
  112. package/src/runtime/brief-tools.js +2 -1
  113. package/src/runtime/capability-router.js +26 -3
  114. package/src/runtime/context/pointer.js +84 -17
  115. package/src/runtime/context-pack.js +52 -9
  116. package/src/runtime/dispatch/integrate.js +27 -8
  117. package/src/runtime/dispatch/loop.js +7 -0
  118. package/src/runtime/dispatch/verify-run.js +9 -3
  119. package/src/runtime/evidence-ledger.js +18 -0
  120. package/src/runtime/feature-pointer.js +10 -1
  121. package/src/runtime/health.js +68 -5
  122. package/src/runtime/implementation-gate.js +14 -6
  123. package/src/runtime/intake/engine.js +679 -0
  124. package/src/runtime/intake/index.js +136 -0
  125. package/src/runtime/intake/manifest.js +140 -0
  126. package/src/runtime/intake/taxonomy.js +206 -0
  127. package/src/runtime/knowledge/code-retrieval.js +11 -5
  128. package/src/runtime/knowledge/semble-provider.js +12 -2
  129. package/src/runtime/lifecycle/cli.js +76 -6
  130. package/src/runtime/lifecycle/followup.js +32 -6
  131. package/src/runtime/lifecycle/overview.js +34 -3
  132. package/src/runtime/lifecycle/release.js +16 -3
  133. package/src/runtime/lifecycle/retention.js +12 -15
  134. package/src/runtime/lifecycle/store-upkeep.js +13 -3
  135. package/src/runtime/mask.js +3 -3
  136. package/src/runtime/mcp-consultations.js +11 -5
  137. package/src/runtime/packages/points.js +10 -0
  138. package/src/runtime/research-request.js +3 -1
  139. package/src/runtime/review/command.js +3 -7
  140. package/src/runtime/review/start.js +24 -10
  141. package/src/runtime/roadmap/attendance.js +137 -0
  142. package/src/runtime/roadmap/gates.js +6 -3
  143. package/src/runtime/roadmap/loop.js +127 -33
  144. package/src/runtime/roadmap/merge.js +17 -8
  145. package/src/runtime/roadmap/rows.js +15 -5
  146. package/src/runtime/roadmap/seed.js +153 -41
  147. package/src/runtime/roadmap/worktree-cleanup.js +147 -0
  148. package/src/runtime/settings/files.js +3 -1
  149. package/src/runtime/settings/prepared-run.js +12 -2
  150. package/src/runtime/settings/registry.js +1 -1
  151. package/src/runtime/settings/resolve.js +13 -1
  152. package/src/runtime/settings/write.js +73 -2
  153. package/src/runtime/slots.js +1 -1
  154. package/src/runtime/storage/registry.js +2 -2
  155. package/src/runtime/storage/roots.js +4 -18
  156. package/src/runtime/storage/rules.js +22 -46
  157. package/src/runtime/storage/work-status.js +14 -4
  158. package/src/runtime/task-classifier.js +39 -4
  159. package/src/runtime/task-scope.js +17 -2
  160. package/src/runtime/task-state.js +13 -7
  161. package/src/runtime/trace/analyze.js +4 -2
  162. package/src/runtime/trace/indicators.js +25 -20
  163. package/src/runtime/trace/spans.js +4 -5
  164. package/src/runtime/verb-view.js +268 -0
  165. package/src/runtime/verification/engine.js +0 -45
  166. package/src/runtime/worker/command.js +4 -2
  167. package/src/runtime/worker/launch.js +5 -37
  168. package/src/runtime/worker/readiness.js +10 -6
  169. package/src/runtime/worker/supervisor.js +18 -6
  170. package/src/runtime/workflow-orchestrator.js +39 -7
  171. package/core/harnesses/claude/hooks/pre-bash-guard.sh +0 -10
  172. package/core/harnesses/codex/hooks/pre-bash-guard.sh +0 -10
  173. package/core/harnesses/copilot/hooks/doflow-pre-bash-guard.sh +0 -9
  174. package/core/harnesses/kiro/hooks/pre-bash-guard.sh +0 -25
  175. package/core/harnesses/shared/hooks/policies/blocked-patterns.conf +0 -105
  176. package/core/harnesses/shared/hooks/policies/pre-bash-guard.sh +0 -579
@@ -43,20 +43,20 @@
43
43
  }
44
44
  },
45
45
  {
46
- "id": "pre-bash-guard",
47
- "intent": "block-destructive-commands",
46
+ "id": "session-context",
47
+ "intent": "capture-session-context",
48
48
  "tier": "enhanced",
49
49
  "requires": [
50
50
  "hooks"
51
51
  ],
52
52
  "mappings": {
53
53
  "claude": {
54
- "event": "PreToolUse",
54
+ "event": "SessionStart",
55
55
  "status": "supported"
56
56
  },
57
57
  "codex": {
58
- "event": "PreToolUse",
59
- "status": "different",
58
+ "event": "SessionStart",
59
+ "status": "supported",
60
60
  "prerequisites": [
61
61
  "hook-review"
62
62
  ]
@@ -66,15 +66,15 @@
66
66
  "fallback": "guidance"
67
67
  },
68
68
  "pi": {
69
- "event": "tool_call",
70
- "status": "different"
69
+ "status": "unavailable",
70
+ "fallback": "guidance"
71
71
  },
72
72
  "copilot": {
73
- "event": "PreToolUse",
73
+ "event": "SessionStart",
74
74
  "status": "supported"
75
75
  },
76
76
  "kiro": {
77
- "event": "PreToolUse",
77
+ "event": "SessionStart",
78
78
  "status": "supported"
79
79
  },
80
80
  "antigravity": {
@@ -84,19 +84,19 @@
84
84
  }
85
85
  },
86
86
  {
87
- "id": "session-context",
88
- "intent": "capture-session-context",
87
+ "id": "session-end",
88
+ "intent": "remove-session-model-observation",
89
89
  "tier": "enhanced",
90
90
  "requires": [
91
91
  "hooks"
92
92
  ],
93
93
  "mappings": {
94
94
  "claude": {
95
- "event": "SessionStart",
95
+ "event": "SessionEnd",
96
96
  "status": "supported"
97
97
  },
98
98
  "codex": {
99
- "event": "SessionStart",
99
+ "event": "SessionEnd",
100
100
  "status": "supported",
101
101
  "prerequisites": [
102
102
  "hook-review"
@@ -111,12 +111,12 @@
111
111
  "fallback": "guidance"
112
112
  },
113
113
  "copilot": {
114
- "event": "SessionStart",
115
- "status": "supported"
114
+ "status": "unavailable",
115
+ "fallback": "guidance"
116
116
  },
117
117
  "kiro": {
118
- "event": "SessionStart",
119
- "status": "supported"
118
+ "status": "unavailable",
119
+ "fallback": "guidance"
120
120
  },
121
121
  "antigravity": {
122
122
  "status": "unavailable",
@@ -210,7 +210,7 @@
210
210
  ],
211
211
  "coverage": {
212
212
  "schemaVersion": 1,
213
- "revision": 3,
213
+ "revision": 4,
214
214
  "refresh": {
215
215
  "trigger": "a harness bridge, template or installed harness version changes",
216
216
  "owner": "the feature that changes it"
@@ -236,11 +236,11 @@
236
236
  "timing": "pre-tool",
237
237
  "profile": "any",
238
238
  "wired": true,
239
- "configSource": "core/harnesses/claude/settings/settings.json:89",
239
+ "configSource": "core/harnesses/claude/settings/settings.json:97",
240
240
  "harnessVersion": {
241
241
  "tested": "2.1.287 (Claude Code)"
242
242
  },
243
- "class": "blocking",
243
+ "class": "advisory",
244
244
  "verification": "verified",
245
245
  "prerequisites": [],
246
246
  "covers": [],
@@ -272,7 +272,7 @@
272
272
  "harnessVersion": {
273
273
  "tested": "codex-cli 0.162.1"
274
274
  },
275
- "class": "blocking",
275
+ "class": "advisory",
276
276
  "verification": "verified",
277
277
  "prerequisites": [
278
278
  "hook-review"
@@ -329,12 +329,12 @@
329
329
  "timing": "pre-tool",
330
330
  "profile": "cli-extension",
331
331
  "wired": true,
332
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
332
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
333
333
  "harnessVersion": {
334
334
  "tested": "1.1.0"
335
335
  },
336
- "class": "blocking",
337
- "verification": "verified",
336
+ "class": "advisory",
337
+ "verification": "unverified",
338
338
  "prerequisites": [],
339
339
  "covers": [],
340
340
  "doesNotCover": [
@@ -362,7 +362,7 @@
362
362
  },
363
363
  {
364
364
  "kind": "live",
365
- "locator": "test/fixtures/hooks/pi/live/probe-2026-10-14.jsonl",
365
+ "locator": "historical blocking evidence: test/fixtures/hooks/pi/live/probe-2026-10-14.jsonl",
366
366
  "date": "2026-10-14"
367
367
  }
368
368
  ]
@@ -403,7 +403,7 @@
403
403
  "timing": "pre-tool",
404
404
  "profile": "user-headless",
405
405
  "wired": true,
406
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
406
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
407
407
  "harnessVersion": {
408
408
  "tested": "1.1.0"
409
409
  },
@@ -443,7 +443,7 @@
443
443
  "timing": "pre-tool",
444
444
  "profile": "project-headless",
445
445
  "wired": true,
446
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
446
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
447
447
  "harnessVersion": {
448
448
  "tested": "1.1.0"
449
449
  },
@@ -519,187 +519,6 @@
519
519
  }
520
520
  ]
521
521
  },
522
- {
523
- "policy": "pre-bash-guard",
524
- "harness": "pi",
525
- "event": "tool_call",
526
- "timing": "pre-tool",
527
- "profile": "cli-extension",
528
- "wired": true,
529
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
530
- "harnessVersion": {
531
- "tested": "1.1.0"
532
- },
533
- "class": "unknown",
534
- "verification": "unverified",
535
- "prerequisites": [],
536
- "covers": [],
537
- "doesNotCover": [],
538
- "caveats": [
539
- "Pi extension has not been exercised in a live session; a later tool_call handler may mutate input after DoFlow allows it"
540
- ],
541
- "provenance": [
542
- {
543
- "kind": "types",
544
- "locator": "@earendil-works/pi-coding-agent@1.1.0 dist/core/extensions/types.d.ts:907-958",
545
- "date": "2026-10-14"
546
- },
547
- {
548
- "kind": "doc",
549
- "locator": "@earendil-works/pi-coding-agent@1.1.0 docs/extensions.md:169",
550
- "date": "2026-10-14"
551
- },
552
- {
553
- "kind": "fixture",
554
- "locator": "test/fixtures/hooks/pi/tool_call/bash-deny.json",
555
- "date": "2026-10-14"
556
- }
557
- ]
558
- },
559
- {
560
- "policy": "pre-bash-guard",
561
- "harness": "pi",
562
- "event": "tool_execution_start",
563
- "timing": "post-tool",
564
- "profile": "cli-extension",
565
- "wired": false,
566
- "configSource": null,
567
- "harnessVersion": {
568
- "tested": "1.1.0"
569
- },
570
- "class": "observation",
571
- "verification": "unverified",
572
- "prerequisites": [],
573
- "covers": [],
574
- "doesNotCover": [],
575
- "caveats": [
576
- "Pi user- and project-scope extensions have not been exercised in a live session; a later tool_call handler may mutate input after DoFlow allows it"
577
- ],
578
- "provenance": [
579
- {
580
- "kind": "doc",
581
- "locator": "https://pi.dev/docs/latest/extensions",
582
- "date": "2026-10-14"
583
- }
584
- ]
585
- },
586
- {
587
- "policy": "pre-bash-guard",
588
- "harness": "pi",
589
- "event": "tool_call",
590
- "timing": "pre-tool",
591
- "profile": "user-headless",
592
- "wired": true,
593
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
594
- "harnessVersion": {
595
- "tested": "1.1.0"
596
- },
597
- "class": "unknown",
598
- "verification": "unverified",
599
- "prerequisites": [],
600
- "covers": [],
601
- "doesNotCover": [],
602
- "caveats": [
603
- "Pi extension has not been exercised in a live session; a later tool_call handler may mutate input after DoFlow allows it",
604
- "live probe pending"
605
- ],
606
- "provenance": [
607
- {
608
- "kind": "types",
609
- "locator": "@earendil-works/pi-coding-agent@1.1.0 dist/core/extensions/types.d.ts:907-958",
610
- "date": "2026-10-14"
611
- },
612
- {
613
- "kind": "doc",
614
- "locator": "@earendil-works/pi-coding-agent@1.1.0 docs/extensions.md:169",
615
- "date": "2026-10-14"
616
- },
617
- {
618
- "kind": "fixture",
619
- "locator": "test/fixtures/hooks/pi/tool_call/bash-deny.json",
620
- "date": "2026-10-14"
621
- }
622
- ]
623
- },
624
- {
625
- "policy": "pre-bash-guard",
626
- "harness": "pi",
627
- "event": "tool_call",
628
- "timing": "pre-tool",
629
- "profile": "project-headless",
630
- "wired": true,
631
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
632
- "harnessVersion": {
633
- "tested": "1.1.0"
634
- },
635
- "class": "unknown",
636
- "verification": "unverified",
637
- "prerequisites": [
638
- "project-trust"
639
- ],
640
- "covers": [],
641
- "doesNotCover": [],
642
- "caveats": [
643
- "Pi extension has not been exercised in a live session; a later tool_call handler may mutate input after DoFlow allows it",
644
- "live probe pending",
645
- "project-trust is required for the project-scope extension"
646
- ],
647
- "provenance": [
648
- {
649
- "kind": "types",
650
- "locator": "@earendil-works/pi-coding-agent@1.1.0 dist/core/extensions/types.d.ts:907-958",
651
- "date": "2026-10-14"
652
- },
653
- {
654
- "kind": "doc",
655
- "locator": "@earendil-works/pi-coding-agent@1.1.0 docs/extensions.md:169",
656
- "date": "2026-10-14"
657
- },
658
- {
659
- "kind": "fixture",
660
- "locator": "test/fixtures/hooks/pi/tool_call/bash-deny.json",
661
- "date": "2026-10-14"
662
- }
663
- ]
664
- },
665
- {
666
- "policy": "pre-bash-guard",
667
- "harness": "pi",
668
- "event": "*",
669
- "timing": "pre-tool",
670
- "profile": "no-extensions",
671
- "wired": false,
672
- "configSource": null,
673
- "harnessVersion": {
674
- "tested": "1.1.0"
675
- },
676
- "class": "unsupported",
677
- "verification": "unverified",
678
- "prerequisites": [],
679
- "covers": [],
680
- "doesNotCover": [],
681
- "caveats": [
682
- "Pi user- and project-scope extensions have not been exercised in a live session; a later tool_call handler may mutate input after DoFlow allows it",
683
- "Pi extension unavailable in this profile"
684
- ],
685
- "provenance": [
686
- {
687
- "kind": "types",
688
- "locator": "@earendil-works/pi-coding-agent@1.1.0 dist/core/extensions/types.d.ts:907-958",
689
- "date": "2026-10-14"
690
- },
691
- {
692
- "kind": "doc",
693
- "locator": "@earendil-works/pi-coding-agent@1.1.0 docs/extensions.md:169",
694
- "date": "2026-10-14"
695
- },
696
- {
697
- "kind": "fixture",
698
- "locator": "test/fixtures/hooks/pi/tool_call/bash-deny.json",
699
- "date": "2026-10-14"
700
- }
701
- ]
702
- },
703
522
  {
704
523
  "policy": "session-context",
705
524
  "harness": "pi",
@@ -735,7 +554,7 @@
735
554
  "timing": "pre-tool",
736
555
  "profile": "cli-extension",
737
556
  "wired": true,
738
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
557
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
739
558
  "harnessVersion": {
740
559
  "tested": "1.1.0"
741
560
  },
@@ -799,7 +618,7 @@
799
618
  "timing": "pre-tool",
800
619
  "profile": "user-headless",
801
620
  "wired": true,
802
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
621
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
803
622
  "harnessVersion": {
804
623
  "tested": "1.1.0"
805
624
  },
@@ -837,7 +656,7 @@
837
656
  "timing": "pre-tool",
838
657
  "profile": "project-headless",
839
658
  "wired": true,
840
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
659
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
841
660
  "harnessVersion": {
842
661
  "tested": "1.1.0"
843
662
  },
@@ -948,7 +767,7 @@
948
767
  "harnessVersion": {
949
768
  "tested": "GitHub Copilot CLI 1.0.103"
950
769
  },
951
- "class": "blocking",
770
+ "class": "advisory",
952
771
  "verification": "verified",
953
772
  "prerequisites": [],
954
773
  "covers": [],
@@ -993,7 +812,7 @@
993
812
  "harnessVersion": {
994
813
  "tested": "kiro-cli 2.29.1"
995
814
  },
996
- "class": "blocking",
815
+ "class": "advisory",
997
816
  "verification": "verified",
998
817
  "prerequisites": [],
999
818
  "covers": [],
@@ -1025,7 +844,7 @@
1025
844
  "harnessVersion": {
1026
845
  "tested": "kiro-cli 2.29.1"
1027
846
  },
1028
- "class": "blocking",
847
+ "class": "advisory",
1029
848
  "verification": "verified",
1030
849
  "prerequisites": [],
1031
850
  "covers": [],
@@ -1057,7 +876,7 @@
1057
876
  "harnessVersion": {
1058
877
  "tested": "kiro-cli 2.29.1"
1059
878
  },
1060
- "class": "blocking",
879
+ "class": "advisory",
1061
880
  "verification": "verified",
1062
881
  "prerequisites": [],
1063
882
  "covers": [],
@@ -1089,7 +908,7 @@
1089
908
  "harnessVersion": {
1090
909
  "tested": "kiro-cli 2.29.1"
1091
910
  },
1092
- "class": "blocking",
911
+ "class": "advisory",
1093
912
  "verification": "verified",
1094
913
  "prerequisites": [],
1095
914
  "covers": [],
@@ -1121,7 +940,7 @@
1121
940
  "harnessVersion": {
1122
941
  "tested": "1.3.3"
1123
942
  },
1124
- "class": "blocking",
943
+ "class": "advisory",
1125
944
  "verification": "verified",
1126
945
  "prerequisites": [],
1127
946
  "covers": [],
@@ -1143,165 +962,150 @@
1143
962
  ]
1144
963
  },
1145
964
  {
1146
- "policy": "pre-bash-guard",
965
+ "policy": "session-context",
1147
966
  "harness": "claude",
1148
- "event": "PreToolUse",
1149
- "timing": "pre-tool",
967
+ "event": "SessionStart",
968
+ "timing": "session",
1150
969
  "profile": "any",
1151
970
  "wired": true,
1152
- "configSource": "core/harnesses/claude/settings/settings.json:89",
971
+ "configSource": "core/harnesses/claude/settings/settings.json:44",
1153
972
  "harnessVersion": {
1154
973
  "tested": "2.1.287 (Claude Code)"
1155
974
  },
1156
- "class": "blocking",
1157
- "verification": "verified",
975
+ "class": "unknown",
976
+ "verification": "unverified",
1158
977
  "prerequisites": [],
1159
978
  "covers": [],
1160
979
  "doesNotCover": [],
1161
- "caveats": [],
980
+ "caveats": [
981
+ "native event enforcement is not yet verified"
982
+ ],
1162
983
  "provenance": [
1163
984
  {
1164
985
  "kind": "doc",
1165
986
  "locator": "https://code.claude.com/docs/en/hooks",
1166
987
  "date": "2026-10-12"
1167
- },
1168
- {
1169
- "kind": "fixture",
1170
- "locator": "test/fixtures/hooks/claude/pre-bash-guard/deny.json",
1171
- "date": "2026-10-14"
1172
988
  }
1173
989
  ]
1174
990
  },
1175
991
  {
1176
- "policy": "pre-bash-guard",
992
+ "policy": "session-context",
1177
993
  "harness": "codex",
1178
- "event": "PreToolUse",
1179
- "timing": "pre-tool",
994
+ "event": "SessionStart",
995
+ "timing": "session",
1180
996
  "profile": "any",
1181
997
  "wired": true,
1182
- "configSource": "core/harnesses/codex/hooks/hooks.json:45",
998
+ "configSource": "core/harnesses/codex/hooks/hooks.json:4",
1183
999
  "harnessVersion": {
1184
1000
  "tested": "codex-cli 0.162.1"
1185
1001
  },
1186
- "class": "blocking",
1187
- "verification": "verified",
1002
+ "class": "unknown",
1003
+ "verification": "unverified",
1188
1004
  "prerequisites": [
1189
1005
  "hook-review"
1190
1006
  ],
1191
1007
  "covers": [],
1192
1008
  "doesNotCover": [],
1193
- "caveats": [],
1009
+ "caveats": [
1010
+ "native event enforcement is not yet verified"
1011
+ ],
1194
1012
  "provenance": [
1195
1013
  {
1196
1014
  "kind": "doc",
1197
1015
  "locator": "https://learn.chatgpt.com/docs/hooks",
1198
1016
  "date": "2026-10-12"
1199
- },
1200
- {
1201
- "kind": "fixture",
1202
- "locator": "test/fixtures/hooks/codex/pre-bash-guard/deny.json",
1203
- "date": "2026-10-14"
1204
1017
  }
1205
1018
  ]
1206
1019
  },
1207
1020
  {
1208
- "policy": "pre-bash-guard",
1209
- "harness": "opencode",
1210
- "event": "*",
1211
- "timing": "pre-tool",
1021
+ "policy": "session-end",
1022
+ "harness": "claude",
1023
+ "event": "SessionEnd",
1024
+ "timing": "session",
1212
1025
  "profile": "any",
1213
- "wired": false,
1214
- "configSource": null,
1215
- "harnessVersion": {
1216
- "tested": "1.18.30"
1217
- },
1218
- "class": "unsupported",
1219
- "verification": "unverified",
1220
- "prerequisites": [],
1221
- "covers": [],
1222
- "doesNotCover": [],
1223
- "caveats": [],
1224
- "provenance": [
1225
- {
1226
- "kind": "doc",
1227
- "locator": "core/registry/harnesses.json: opencode harness; core/registry/contracts.json: unavailable hook mapping",
1228
- "date": "2026-10-12"
1229
- }
1230
- ]
1231
- },
1232
- {
1233
- "policy": "pre-bash-guard",
1234
- "harness": "kiro",
1235
- "event": "PreToolUse",
1236
- "timing": "pre-tool",
1237
- "profile": "ide",
1238
1026
  "wired": true,
1239
- "configSource": "core/harnesses/kiro/hooks/doflow.json:24",
1027
+ "configSource": "core/harnesses/claude/settings/settings.json:176",
1240
1028
  "harnessVersion": {
1241
- "tested": "kiro-cli 2.29.1"
1029
+ "tested": "2.1.287 (Claude Code)"
1242
1030
  },
1243
- "class": "blocking",
1244
- "verification": "verified",
1031
+ "class": "observation",
1032
+ "verification": "unverified",
1245
1033
  "prerequisites": [],
1246
- "covers": [],
1247
- "doesNotCover": [],
1248
- "caveats": [],
1034
+ "covers": [
1035
+ "removes the ending main session's hashed model observation"
1036
+ ],
1037
+ "doesNotCover": [
1038
+ "worker observations",
1039
+ "sessions that end without the hook running (the model-observations age bound applies)"
1040
+ ],
1041
+ "caveats": [
1042
+ "native event enforcement is not yet verified"
1043
+ ],
1249
1044
  "provenance": [
1250
1045
  {
1251
1046
  "kind": "doc",
1252
- "locator": "https://kiro.dev/docs/hooks/types/",
1047
+ "locator": "https://code.claude.com/docs/en/hooks",
1253
1048
  "date": "2026-10-12"
1254
1049
  },
1255
1050
  {
1256
1051
  "kind": "fixture",
1257
- "locator": "test/fixtures/hooks/kiro/pre-bash-guard/deny.json",
1258
- "date": "2026-10-14"
1052
+ "locator": "test/hooks/session-end-observation.test.ts",
1053
+ "date": "2026-11-04"
1259
1054
  }
1260
1055
  ]
1261
1056
  },
1262
1057
  {
1263
- "policy": "pre-bash-guard",
1264
- "harness": "kiro",
1265
- "event": "PreToolUse",
1266
- "timing": "pre-tool",
1267
- "profile": "cli-v3",
1058
+ "policy": "session-end",
1059
+ "harness": "codex",
1060
+ "event": "SessionEnd",
1061
+ "timing": "session",
1062
+ "profile": "any",
1268
1063
  "wired": true,
1269
- "configSource": "core/harnesses/kiro/hooks/doflow.json:24",
1064
+ "configSource": "core/harnesses/codex/hooks/hooks.json:100",
1270
1065
  "harnessVersion": {
1271
- "tested": "kiro-cli 2.29.1"
1066
+ "tested": "codex-cli 0.162.1"
1272
1067
  },
1273
- "class": "blocking",
1274
- "verification": "verified",
1275
- "prerequisites": [],
1276
- "covers": [],
1277
- "doesNotCover": [],
1278
- "caveats": [],
1068
+ "class": "observation",
1069
+ "verification": "unverified",
1070
+ "prerequisites": [
1071
+ "hook-review"
1072
+ ],
1073
+ "covers": [
1074
+ "removes the ending main session's hashed model observation"
1075
+ ],
1076
+ "doesNotCover": [
1077
+ "worker observations",
1078
+ "sessions that end without the hook running (the model-observations age bound applies)"
1079
+ ],
1080
+ "caveats": [
1081
+ "native event enforcement is not yet verified"
1082
+ ],
1279
1083
  "provenance": [
1280
1084
  {
1281
1085
  "kind": "doc",
1282
- "locator": "https://kiro.dev/docs/hooks/types/",
1086
+ "locator": "https://learn.chatgpt.com/docs/hooks",
1283
1087
  "date": "2026-10-12"
1284
1088
  },
1285
1089
  {
1286
1090
  "kind": "fixture",
1287
- "locator": "test/fixtures/hooks/kiro/pre-bash-guard/deny.json",
1288
- "date": "2026-10-14"
1091
+ "locator": "test/hooks/session-end-observation.test.ts",
1092
+ "date": "2026-11-04"
1289
1093
  }
1290
1094
  ]
1291
1095
  },
1292
1096
  {
1293
- "policy": "pre-bash-guard",
1294
- "harness": "kiro",
1295
- "event": "PreToolUse",
1296
- "timing": "pre-tool",
1297
- "profile": "cli-v3-agent",
1298
- "wired": true,
1299
- "configSource": "core/harnesses/kiro/agents/doflow.json:21",
1097
+ "policy": "session-end",
1098
+ "harness": "opencode",
1099
+ "event": "*",
1100
+ "timing": "session",
1101
+ "profile": "any",
1102
+ "wired": false,
1103
+ "configSource": null,
1300
1104
  "harnessVersion": {
1301
- "tested": "kiro-cli 2.29.1"
1105
+ "tested": "1.18.30"
1302
1106
  },
1303
- "class": "blocking",
1304
- "verification": "verified",
1107
+ "class": "unsupported",
1108
+ "verification": "unverified",
1305
1109
  "prerequisites": [],
1306
1110
  "covers": [],
1307
1111
  "doesNotCover": [],
@@ -1309,56 +1113,49 @@
1309
1113
  "provenance": [
1310
1114
  {
1311
1115
  "kind": "doc",
1312
- "locator": "https://kiro.dev/docs/hooks/types/",
1116
+ "locator": "core/registry/harnesses.json: opencode harness; core/registry/contracts.json: unavailable hook mapping",
1313
1117
  "date": "2026-10-12"
1314
- },
1315
- {
1316
- "kind": "fixture",
1317
- "locator": "test/fixtures/hooks/kiro/pre-bash-guard/agent-deny.json",
1318
- "date": "2026-10-14"
1319
1118
  }
1320
1119
  ]
1321
1120
  },
1322
1121
  {
1323
- "policy": "pre-bash-guard",
1324
- "harness": "kiro",
1325
- "event": "PreToolUse",
1326
- "timing": "pre-tool",
1327
- "profile": "cli-2x-agent",
1328
- "wired": true,
1329
- "configSource": "core/harnesses/kiro/agents/doflow.json:21",
1122
+ "policy": "session-end",
1123
+ "harness": "pi",
1124
+ "event": "*",
1125
+ "timing": "session",
1126
+ "profile": "any",
1127
+ "wired": false,
1128
+ "configSource": null,
1330
1129
  "harnessVersion": {
1331
- "tested": "kiro-cli 2.29.1"
1130
+ "tested": "1.1.0"
1332
1131
  },
1333
- "class": "blocking",
1334
- "verification": "verified",
1132
+ "class": "unsupported",
1133
+ "verification": "unverified",
1335
1134
  "prerequisites": [],
1336
1135
  "covers": [],
1337
1136
  "doesNotCover": [],
1338
- "caveats": [],
1137
+ "caveats": [
1138
+ "not wired for this harness mapping",
1139
+ "Pi user- and project-scope extensions have not been exercised in a live session; a later tool_call handler may mutate input after DoFlow allows it"
1140
+ ],
1339
1141
  "provenance": [
1340
1142
  {
1341
1143
  "kind": "doc",
1342
- "locator": "https://kiro.dev/docs/hooks/types/",
1343
- "date": "2026-10-12"
1344
- },
1345
- {
1346
- "kind": "fixture",
1347
- "locator": "test/fixtures/hooks/kiro/pre-bash-guard/agent-deny.json",
1348
- "date": "2026-10-14"
1144
+ "locator": "core/registry/lifecycle.json: policy session-end mapping for pi",
1145
+ "date": "2026-11-04"
1349
1146
  }
1350
1147
  ]
1351
1148
  },
1352
1149
  {
1353
- "policy": "pre-bash-guard",
1354
- "harness": "antigravity",
1150
+ "policy": "session-end",
1151
+ "harness": "copilot",
1355
1152
  "event": "*",
1356
- "timing": "pre-tool",
1153
+ "timing": "session",
1357
1154
  "profile": "any",
1358
1155
  "wired": false,
1359
1156
  "configSource": null,
1360
1157
  "harnessVersion": {
1361
- "tested": "1.3.3"
1158
+ "tested": "GitHub Copilot CLI 1.0.103"
1362
1159
  },
1363
1160
  "class": "unsupported",
1364
1161
  "verification": "unverified",
@@ -1371,64 +1168,62 @@
1371
1168
  "provenance": [
1372
1169
  {
1373
1170
  "kind": "doc",
1374
- "locator": "core/registry/lifecycle.json: policy pre-bash-guard mapping for antigravity",
1375
- "date": "2026-10-14"
1171
+ "locator": "core/registry/lifecycle.json: policy session-end mapping for copilot",
1172
+ "date": "2026-11-04"
1376
1173
  }
1377
1174
  ]
1378
1175
  },
1379
1176
  {
1380
- "policy": "session-context",
1381
- "harness": "claude",
1382
- "event": "SessionStart",
1177
+ "policy": "session-end",
1178
+ "harness": "kiro",
1179
+ "event": "*",
1383
1180
  "timing": "session",
1384
1181
  "profile": "any",
1385
- "wired": true,
1386
- "configSource": "core/harnesses/claude/settings/settings.json:36",
1182
+ "wired": false,
1183
+ "configSource": null,
1387
1184
  "harnessVersion": {
1388
- "tested": "2.1.287 (Claude Code)"
1185
+ "tested": "kiro-cli 2.29.1"
1389
1186
  },
1390
- "class": "unknown",
1187
+ "class": "unsupported",
1391
1188
  "verification": "unverified",
1392
1189
  "prerequisites": [],
1393
1190
  "covers": [],
1394
1191
  "doesNotCover": [],
1395
1192
  "caveats": [
1396
- "native event enforcement is not yet verified"
1193
+ "not wired for this harness mapping"
1397
1194
  ],
1398
1195
  "provenance": [
1399
1196
  {
1400
1197
  "kind": "doc",
1401
- "locator": "https://code.claude.com/docs/en/hooks",
1402
- "date": "2026-10-12"
1198
+ "locator": "core/registry/lifecycle.json: policy session-end mapping for kiro",
1199
+ "date": "2026-11-04"
1403
1200
  }
1404
1201
  ]
1405
1202
  },
1406
1203
  {
1407
- "policy": "session-context",
1408
- "harness": "codex",
1409
- "event": "SessionStart",
1204
+ "policy": "session-end",
1205
+ "harness": "antigravity",
1206
+ "event": "*",
1410
1207
  "timing": "session",
1411
1208
  "profile": "any",
1412
- "wired": true,
1413
- "configSource": "core/harnesses/codex/hooks/hooks.json:4",
1209
+ "wired": false,
1210
+ "configSource": null,
1414
1211
  "harnessVersion": {
1415
- "tested": "codex-cli 0.162.1"
1212
+ "tested": "1.3.3"
1416
1213
  },
1417
- "class": "unknown",
1214
+ "class": "unsupported",
1418
1215
  "verification": "unverified",
1419
- "prerequisites": [
1420
- "hook-review"
1421
- ],
1216
+ "prerequisites": [],
1422
1217
  "covers": [],
1423
1218
  "doesNotCover": [],
1424
1219
  "caveats": [
1425
- "native event enforcement is not yet verified"
1220
+ "not wired for this harness mapping"
1426
1221
  ],
1427
1222
  "provenance": [
1428
1223
  {
1429
1224
  "kind": "doc",
1430
- "locator": "https://learn.chatgpt.com/docs/hooks",
1431
- "date": "2026-10-12"
1225
+ "locator": "core/registry/lifecycle.json: policy session-end mapping for antigravity",
1226
+ "date": "2026-11-04"
1432
1227
  }
1433
1228
  ]
1434
1229
  },
@@ -1696,7 +1491,7 @@
1696
1491
  "timing": "pre-tool",
1697
1492
  "profile": "any",
1698
1493
  "wired": true,
1699
- "configSource": "core/harnesses/claude/settings/settings.json:89",
1494
+ "configSource": "core/harnesses/claude/settings/settings.json:97",
1700
1495
  "harnessVersion": {
1701
1496
  "tested": "2.1.287 (Claude Code)"
1702
1497
  },
@@ -1900,7 +1695,7 @@
1900
1695
  "timing": "pre-tool",
1901
1696
  "profile": "ide",
1902
1697
  "wired": true,
1903
- "configSource": "core/harnesses/kiro/hooks/doflow.json:34",
1698
+ "configSource": "core/harnesses/kiro/hooks/doflow.json:24",
1904
1699
  "harnessVersion": {
1905
1700
  "tested": "kiro-cli 2.29.1"
1906
1701
  },
@@ -1930,7 +1725,7 @@
1930
1725
  "timing": "pre-tool",
1931
1726
  "profile": "cli-v3",
1932
1727
  "wired": true,
1933
- "configSource": "core/harnesses/kiro/hooks/doflow.json:34",
1728
+ "configSource": "core/harnesses/kiro/hooks/doflow.json:24",
1934
1729
  "harnessVersion": {
1935
1730
  "tested": "kiro-cli 2.29.1"
1936
1731
  },
@@ -1960,7 +1755,7 @@
1960
1755
  "timing": "pre-tool",
1961
1756
  "profile": "cli-v3-agent",
1962
1757
  "wired": true,
1963
- "configSource": "core/harnesses/kiro/agents/doflow.json:31",
1758
+ "configSource": "core/harnesses/kiro/agents/doflow.json:21",
1964
1759
  "harnessVersion": {
1965
1760
  "tested": "kiro-cli 2.29.1"
1966
1761
  },
@@ -1990,7 +1785,7 @@
1990
1785
  "timing": "pre-tool",
1991
1786
  "profile": "cli-2x-agent",
1992
1787
  "wired": true,
1993
- "configSource": "core/harnesses/kiro/agents/doflow.json:31",
1788
+ "configSource": "core/harnesses/kiro/agents/doflow.json:21",
1994
1789
  "harnessVersion": {
1995
1790
  "tested": "kiro-cli 2.29.1"
1996
1791
  },
@@ -2047,11 +1842,11 @@
2047
1842
  "timing": "stop",
2048
1843
  "profile": "any",
2049
1844
  "wired": true,
2050
- "configSource": "core/harnesses/claude/settings/settings.json:147",
1845
+ "configSource": "core/harnesses/claude/settings/settings.json:146",
2051
1846
  "harnessVersion": {
2052
1847
  "tested": "2.1.287 (Claude Code)"
2053
1848
  },
2054
- "class": "blocking",
1849
+ "class": "advisory",
2055
1850
  "verification": "verified",
2056
1851
  "prerequisites": [],
2057
1852
  "covers": [],
@@ -2077,11 +1872,11 @@
2077
1872
  "timing": "stop",
2078
1873
  "profile": "any",
2079
1874
  "wired": true,
2080
- "configSource": "core/harnesses/codex/hooks/hooks.json:99",
1875
+ "configSource": "core/harnesses/codex/hooks/hooks.json:89",
2081
1876
  "harnessVersion": {
2082
1877
  "tested": "codex-cli 0.162.1"
2083
1878
  },
2084
- "class": "blocking",
1879
+ "class": "advisory",
2085
1880
  "verification": "verified",
2086
1881
  "prerequisites": [
2087
1882
  "hook-review"
@@ -2134,7 +1929,7 @@
2134
1929
  "timing": "stop",
2135
1930
  "profile": "any",
2136
1931
  "wired": true,
2137
- "configSource": "core/harnesses/copilot/hooks/doflow.json:32",
1932
+ "configSource": "core/harnesses/copilot/hooks/doflow.json:26",
2138
1933
  "harnessVersion": {
2139
1934
  "tested": "GitHub Copilot CLI 1.0.103"
2140
1935
  },
@@ -2166,49 +1961,6 @@
2166
1961
  }
2167
1962
  ]
2168
1963
  },
2169
- {
2170
- "policy": "pre-bash-guard",
2171
- "harness": "copilot",
2172
- "event": "PreToolUse",
2173
- "timing": "pre-tool",
2174
- "profile": "any",
2175
- "wired": true,
2176
- "configSource": "core/harnesses/copilot/hooks/doflow.json:12",
2177
- "harnessVersion": {
2178
- "tested": "GitHub Copilot CLI 1.0.103"
2179
- },
2180
- "class": "blocking",
2181
- "verification": "verified",
2182
- "prerequisites": [],
2183
- "covers": [],
2184
- "doesNotCover": [],
2185
- "caveats": [
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."
2188
- ],
2189
- "provenance": [
2190
- {
2191
- "kind": "doc",
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"
2209
- }
2210
- ]
2211
- },
2212
1964
  {
2213
1965
  "policy": "stop-check",
2214
1966
  "harness": "kiro",
@@ -2216,7 +1968,7 @@
2216
1968
  "timing": "stop",
2217
1969
  "profile": "ide",
2218
1970
  "wired": true,
2219
- "configSource": "core/harnesses/kiro/hooks/doflow.json:44",
1971
+ "configSource": "core/harnesses/kiro/hooks/doflow.json:34",
2220
1972
  "harnessVersion": {
2221
1973
  "tested": "kiro-cli 2.29.1"
2222
1974
  },
@@ -2254,7 +2006,7 @@
2254
2006
  "timing": "stop",
2255
2007
  "profile": "cli-v3",
2256
2008
  "wired": true,
2257
- "configSource": "core/harnesses/kiro/hooks/doflow.json:44",
2009
+ "configSource": "core/harnesses/kiro/hooks/doflow.json:34",
2258
2010
  "harnessVersion": {
2259
2011
  "tested": "kiro-cli 2.29.1"
2260
2012
  },
@@ -2292,11 +2044,11 @@
2292
2044
  "timing": "stop",
2293
2045
  "profile": "any",
2294
2046
  "wired": true,
2295
- "configSource": "src/adapters/antigravity/index.js:60",
2047
+ "configSource": "src/adapters/antigravity/index.js:64",
2296
2048
  "harnessVersion": {
2297
2049
  "tested": "1.3.3"
2298
2050
  },
2299
- "class": "blocking",
2051
+ "class": "advisory",
2300
2052
  "verification": "verified",
2301
2053
  "prerequisites": [],
2302
2054
  "covers": [],
@@ -2322,7 +2074,7 @@
2322
2074
  "timing": "pre-tool",
2323
2075
  "profile": "project-interactive",
2324
2076
  "wired": true,
2325
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
2077
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
2326
2078
  "harnessVersion": {
2327
2079
  "tested": "1.1.0"
2328
2080
  },
@@ -2358,47 +2110,6 @@
2358
2110
  }
2359
2111
  ]
2360
2112
  },
2361
- {
2362
- "policy": "pre-bash-guard",
2363
- "harness": "pi",
2364
- "event": "tool_call",
2365
- "timing": "pre-tool",
2366
- "profile": "project-interactive",
2367
- "wired": true,
2368
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
2369
- "harnessVersion": {
2370
- "tested": "1.1.0"
2371
- },
2372
- "class": "unknown",
2373
- "verification": "unverified",
2374
- "prerequisites": [
2375
- "project-trust"
2376
- ],
2377
- "covers": [],
2378
- "doesNotCover": [],
2379
- "caveats": [
2380
- "project-trust is required for the project-scope extension",
2381
- "loading path not live-observed",
2382
- "project-trust is required for the project-scope extension"
2383
- ],
2384
- "provenance": [
2385
- {
2386
- "kind": "types",
2387
- "locator": "@earendil-works/pi-coding-agent@1.1.0 dist/core/extensions/types.d.ts:907-958",
2388
- "date": "2026-10-14"
2389
- },
2390
- {
2391
- "kind": "doc",
2392
- "locator": "@earendil-works/pi-coding-agent@1.1.0 docs/extensions.md:169",
2393
- "date": "2026-10-14"
2394
- },
2395
- {
2396
- "kind": "fixture",
2397
- "locator": "test/fixtures/hooks/pi/tool_call/bash-deny.json",
2398
- "date": "2026-10-14"
2399
- }
2400
- ]
2401
- },
2402
2113
  {
2403
2114
  "policy": "mcp-tool-guard",
2404
2115
  "harness": "pi",
@@ -2406,7 +2117,7 @@
2406
2117
  "timing": "pre-tool",
2407
2118
  "profile": "project-interactive",
2408
2119
  "wired": true,
2409
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
2120
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
2410
2121
  "harnessVersion": {
2411
2122
  "tested": "1.1.0"
2412
2123
  },
@@ -2447,7 +2158,7 @@
2447
2158
  "timing": "stop",
2448
2159
  "profile": "cli-2x-agent",
2449
2160
  "wired": true,
2450
- "configSource": "core/harnesses/kiro/agents/doflow.json:50",
2161
+ "configSource": "core/harnesses/kiro/agents/doflow.json:40",
2451
2162
  "harnessVersion": {
2452
2163
  "tested": "kiro-cli 2.29.1"
2453
2164
  },
@@ -2479,7 +2190,7 @@
2479
2190
  "timing": "stop",
2480
2191
  "profile": "cli-v3-agent",
2481
2192
  "wired": true,
2482
- "configSource": "core/harnesses/kiro/agents/doflow.json:50",
2193
+ "configSource": "core/harnesses/kiro/agents/doflow.json:40",
2483
2194
  "harnessVersion": {
2484
2195
  "tested": "kiro-cli 2.29.1"
2485
2196
  },
@@ -2517,7 +2228,7 @@
2517
2228
  "timing": "pre-tool",
2518
2229
  "profile": "user-interactive",
2519
2230
  "wired": true,
2520
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
2231
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
2521
2232
  "harnessVersion": {
2522
2233
  "tested": "1.1.0"
2523
2234
  },
@@ -2550,44 +2261,6 @@
2550
2261
  }
2551
2262
  ]
2552
2263
  },
2553
- {
2554
- "policy": "pre-bash-guard",
2555
- "harness": "pi",
2556
- "event": "tool_call",
2557
- "timing": "pre-tool",
2558
- "profile": "user-interactive",
2559
- "wired": true,
2560
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
2561
- "harnessVersion": {
2562
- "tested": "1.1.0"
2563
- },
2564
- "class": "unknown",
2565
- "verification": "unverified",
2566
- "prerequisites": [],
2567
- "covers": [],
2568
- "doesNotCover": [],
2569
- "caveats": [
2570
- "Pi extension has not been exercised in a live session; a later tool_call handler may mutate input after DoFlow allows it",
2571
- "live probe pending"
2572
- ],
2573
- "provenance": [
2574
- {
2575
- "kind": "types",
2576
- "locator": "@earendil-works/pi-coding-agent@1.1.0 dist/core/extensions/types.d.ts:907-958",
2577
- "date": "2026-10-14"
2578
- },
2579
- {
2580
- "kind": "doc",
2581
- "locator": "@earendil-works/pi-coding-agent@1.1.0 docs/extensions.md:169",
2582
- "date": "2026-10-14"
2583
- },
2584
- {
2585
- "kind": "fixture",
2586
- "locator": "test/fixtures/hooks/pi/tool_call/bash-deny.json",
2587
- "date": "2026-10-14"
2588
- }
2589
- ]
2590
- },
2591
2264
  {
2592
2265
  "policy": "mcp-tool-guard",
2593
2266
  "harness": "pi",
@@ -2595,7 +2268,7 @@
2595
2268
  "timing": "pre-tool",
2596
2269
  "profile": "user-interactive",
2597
2270
  "wired": true,
2598
- "configSource": "core/harnesses/pi/extensions/doflow-guard.js:129",
2271
+ "configSource": "core/harnesses/pi/extensions/doflow-guard.js:128",
2599
2272
  "harnessVersion": {
2600
2273
  "tested": "1.1.0"
2601
2274
  },
@@ -2633,7 +2306,7 @@
2633
2306
  "timing": "session",
2634
2307
  "profile": "cli-v3-agent",
2635
2308
  "wired": true,
2636
- "configSource": "core/harnesses/kiro/agents/doflow.json:42",
2309
+ "configSource": "core/harnesses/kiro/agents/doflow.json:32",
2637
2310
  "harnessVersion": {
2638
2311
  "tested": "kiro-cli 2.29.1"
2639
2312
  },
@@ -3026,6 +2699,6 @@
3026
2699
  ]
3027
2700
  }
3028
2701
  ],
3029
- "rowsDigest": "sha256:d8fdf93bb4a556f0ba91d5a8eb74e5857c29fe7ea87e2731a39afb955d50bb59"
2702
+ "rowsDigest": "sha256:bb6f6cd25ed87131d95bfa0dda3f7a4ecd03b4f19216510685b2a5b640a353c6"
3030
2703
  }
3031
2704
  }